Preview. This API will change in v1.0.0. Breaking changes are announced in the release notes with migration steps before they apply, unless a security or legal issue needs an immediate change; then we announce it there as soon as we can.

Transferable records

On DocuShield, electronic bills of lading, bills of exchange and promissory notes are issued as transferable records. "Transferable record" is a descriptive product term: each one is a W3C Verifiable Credential bound to a title escrow on the XDC Network. The title escrow names the record's current holder and owner, and control of the record is represented by control of a single on-chain token.

Whether control of a record carries any right to goods or to payment depends on the law that governs your transaction, not on DocuShield. See section 3 of the Terms of Service.

How they are issued and moved

A signed-in person issues a transferable record in the DocuShield app. DocuShield signs the credential as its issuer, pays the network fee and mints the token, and the title escrow names that person's own wallet as both holder and owner.

Transfers, endorsements and surrenders are signed in the app by the holder's or owner's own wallet, as the title escrow requires. An endorsement changes the owner.

Why an API key cannot issue or move them

DocuShield does not hold the wallet keys of the people who use it, so it cannot sign a transfer for them. An API key has no wallet at all. It cannot be named as holder or owner when a record is issued, and it cannot sign a transfer.

If you ask POST /ebl for a transferable type (a documentType of ebl, bill-of-exchange or promissory-note), it refuses with status 501 and the code transferable_issuance_unavailable, rather than file a record that looks transferable with no title escrow behind it.

What your systems can do

  • Receive a webhook when a transferable record is issued, transferred or surrendered in the app: ebl. events for bills of lading, boe. for bills of exchange and document. for promissory notes. See Webhooks.
  • Read your organisation's documents, including transferable records issued in the app, with GET /ebl and GET /ebl/{id}, and a record's history with GET /ebl/{id}?action=history. Records issued in the app are production records, so list them with a production key.
  • Verify a document by sending it as { "document": ... } to POST /verify.

The API can also record a transfer or surrender that has already been signed on chain. The app records its own transfers and surrenders, so integrations do not need this, and it is not part of this documentation.