Skip to main content

Omnibus

For USDF bank consortium members who are integrating with our Banking API in order to facilitate single-step Peer-to-Peer (P2P) transfers for their core banking customers, we have added program-specific endpoints that make the Banking API a one-stop-shop for facilitating multi-step transactions in a single request. These proxy the backing Omnibus USDF middleware configured for your program directly to mint, transfer and burn USDF coin.

Minting

A mint instructs your omnibus provider to create USDF coin to be distributed to a registered account.

Mint and then transfer to address

Create a mint & transfer request by specifying a mint_address and a transfer_address. This will tell the omnibus provider to mint and withdraw the amount to the specified mint_address and transfer the amount to the transfer_address.

POST /mints

{
"id": "b005e58f-6c64-4273-98e5-4d7d67aaee33",
"mint_address": "tp1y95akgy70pnnsa27sm0htewcdul97tra4w54n2",
"transfer_address": "tp1w4cgw58k9qn66weqgn2n3h56jm6weyavmu873u",
"note": "Lunch",
"amount_coins": 2500
}

Retrieve a mint status

Fetch a mint from the API to check its status.

GET /mints/:mint_id

{
"id": "b005e58f-6c64-4273-98e5-4d7d67aaee33",
"mint_transaction_id": "d40356d2-6223-40f9-b028-08e2f05f08b2",
"transfer_transaction_id": "e5f7e3ec-a949-4267-a1b5-c6a936782320",
"transfer_address": "tp1w4cgw58k9qn66weqgn2n3h56jm6weyavmu873u",
"mint_address": "tp1jcmzjcaz5jc9cpm8rc8yxtkftl4tq",
"note": "Lunch",
"amount": 2500,
"status": "PENDING_MINT" | "PENDING_TRANSFER" | "COMPLETE",
"created_dt": "2022-05-25T10:08:57.551811-04:00",
"updated_dt": "2022-05-25T10:08:57.551862-04:00"
}

Burn

A burn request will instruct your omnibus provider to remove USD coin and reserve token from circulation.

Create a burn request

You can only burn an amount equal to the minimum of USD coin available at your omnibus provider.

POST /burns

{
"id": "888aebe4-e341-446a-8e56-ac3c207b2510",
"amount_coins": 100
}

Retrieve the status of a burn

GET /burns/:burn_id

{
"id": "888aebe4-e341-446a-8e56-ac3c207b2510",
"status": "PENDING" | "COMPLETE"
}

Transfer Workflow

Sender

The sender is the custodian program of the account initiating the transfer. They are aware of the mint record from the transfer and will receive transaction events corresponding to the mint from omnibus, and the transfer between users.

Mint and Transfer Sender Workflow

Recipient

The recipient is the custodian program of the account receiving funds from a P2P transfer. They receive transaction events corresponding to the transfer between users, and the redemption of USDF coin to their omnibus account.

Mint and Transfer Recipient Workflow

Events

Programs will receive Transaction Events for the corresponding mint, transfer, and redemption transactions that are part of the mint and transfer flow. The specific transaction events that programs will receive will depend on whether they are the custodian for the sender or recipient user of the transfer.

Programs initiating a mint and transfer will receive events for the mint transaction and the transfer transaction. Programs that custody an account receiving a P2P transfer will receive events for the transfer transaction and the redemption transaction.

Programs should expect two events per transaction. One when the transaction is first created in a PENDING state, and a second event once the transaction has posted and is set to a COMPLETE state.

Mint & Transfer Initiated

After a mint and transfer has been initiated programs will first receive a transaction event corresponding to the mint_transaction_id on the mint indicating the transfer of USDF coin from the omnibus provider to the transfer sender's account.

{
"id": "dc83ffbb-9d44-4fa2-a04d-cc5b6547b106",
"program_id": "84f6c84b-039b-463b-88bc-7bb158ab2b5f",
"created_dt": "2022-01-02T03:04:05.123456-05:00",
"sequence_number": 1,
"type": "TRANSACTION",
"data":{
"amount_coins": 2500,
"amount": 25,
"fromAddress": "tp10hlpw49uy5r092h9m3p3jayv7jqu6hftfhjxx8",
"networkFee": 0,
"note": "Descriptive message associated with the transaction",
"status": "PENDING",
"toAddress": "tp10nnm70y8zc5m8yje5zx5canyqq639j3ph7mj8p",
"transactionId": "d40356d2-6223-40f9-b028-08e2f05f08b2",
"transactionType": "MINT",
"createdDt": "2022-01-02T03:04:05.123456-05:00",
"updatedDt": "2022-01-02T03:04:05.123456-05:00"
}
}

Mint Completed

After the omnibus provider successfully mints USDF coin to the sender account an event will be created signifying that the mint transaction has completed.

{
"id": "1b3b6ed7-1d41-4de0-8877-49f34f1f3d43",
"program_id": "84f6c84b-039b-463b-88bc-7bb158ab2b5f",
"created_dt": "2022-01-02T03:04:05.123456-05:00",
"sequence_number": 2,
"type": "TRANSACTION",
"data":{
"amount_coins": 2500,
"amount": 25,
"fromAddress": "tp10hlpw49uy5r092h9m3p3jayv7jqu6hftfhjxx8",
"networkFee": 0,
"note": "Descriptive message associated with the transaction",
"status": "COMPLETE",
"toAddress": "tp10nnm70y8zc5m8yje5zx5canyqq639j3ph7mj8p",
"transactionId": "d40356d2-6223-40f9-b028-08e2f05f08b2",
"transactionType": "MINT",
"createdDt": "2022-01-02T03:04:05.123456-05:00",
"updatedDt": "2022-01-02T03:04:05.123456-05:00"
}
}

At that time a second event will also be emitted for the transfer transaction that will send the newly minted coin to the recipient account of the transfer. This transaction will correspond to transfer_transaction_id on the mint.

{
"id": "4b6ab045-aaa3-4391-a27b-ab0c6c5411f3",
"program_id": "84f6c84b-039b-463b-88bc-7bb158ab2b5f",
"created_dt": "2022-01-02T03:04:09.123456-05:00",
"sequence_number": 3,
"type": "TRANSACTION",
"data":{
"amount_coins": 2500,
"amount": 25,
"fromAddress": "tp10nnm70y8zc5m8yje5zx5canyqq639j3ph7mj8p",
"networkFee": 0,
"note": "Descriptive message associated with the transaction",
"status": "PENDING",
"toAddress": "tp1ldxvn7am23xx987yhchra5hwfvglk5lu05m2u3",
"transactionId": "300c9c6b-4438-4c5f-8073-9ea2ced5c336",
"transactionType": "INTRA",
"createdDt": "2022-01-02T03:04:09.123456-05:00",
"updatedDt": "2022-01-02T03:04:09.123456-05:00"
}
}

The custodian program of the recipient account will receive a separate event with the same transaction metadata.

{
"id": "b8989b43-f1a3-4f2f-b37b-b5a90d6fe4b5",
"program_id": "77a714d2-318e-45b9-92df-283fbad865a3",
"created_dt": "2022-01-02T03:04:09.123456-05:00",
"sequence_number": 1,
"type": "TRANSACTION",
"data":{
"amount_coins": 2500,
"amount": 25,
"fromAddress": "tp10nnm70y8zc5m8yje5zx5canyqq639j3ph7mj8p",
"networkFee": 0,
"note": "Descriptive message associated with the transaction",
"status": "PENDING",
"toAddress": "tp1ldxvn7am23xx987yhchra5hwfvglk5lu05m2u3",
"transactionId": "300c9c6b-4438-4c5f-8073-9ea2ced5c336",
"transactionType": "INTRA",
"createdDt": "2022-01-02T03:04:09.123456-05:00",
"updatedDt": "2022-01-02T03:04:09.123456-05:00"
}
}

Transfer Completed

After provenance has processed the transfer transaction an event will be emitted marking the transaction as COMPLETE.

{
"id": "7c861a26-45a9-4fa3-a823-b510ceeafcbc",
"program_id": "84f6c84b-039b-463b-88bc-7bb158ab2b5f",
"created_dt": "2022-01-02T03:04:09.123456-05:00",
"sequence_number": 4,
"type": "TRANSACTION",
"data":{
"amount_coins": 2500,
"amount": 25,
"fromAddress": "tp10nnm70y8zc5m8yje5zx5canyqq639j3ph7mj8p",
"networkFee": 0,
"note": "Descriptive message associated with the transaction",
"status": "COMPLETE",
"toAddress": "tp1ldxvn7am23xx987yhchra5hwfvglk5lu05m2u3",
"transactionId": "300c9c6b-4438-4c5f-8073-9ea2ced5c336",
"transactionType": "INTRA",
"createdDt": "2022-01-02T03:04:09.123456-05:00",
"updatedDt": "2022-01-02T03:04:09.123456-05:00"
}
}

The custodian program of the recipient account will receive a separate event with the same transaction metadata.

{
"id": "ea8e864f-f9b9-42c9-8764-0c39656845f6",
"program_id": "77a714d2-318e-45b9-92df-283fbad865a3",
"created_dt": "2022-01-02T03:04:09.123456-05:00",
"sequence_number": 2,
"type": "TRANSACTION",
"data":{
"amount_coins": 2500,
"amount": 25,
"fromAddress": "tp10nnm70y8zc5m8yje5zx5canyqq639j3ph7mj8p",
"networkFee": 0,
"note": "Descriptive message associated with the transaction",
"status": "COMPLETE",
"toAddress": "tp1ldxvn7am23xx987yhchra5hwfvglk5lu05m2u3",
"transactionId": "300c9c6b-4438-4c5f-8073-9ea2ced5c336",
"transactionType": "INTRA",
"createdDt": "2022-01-02T03:04:09.123456-05:00",
"updatedDt": "2022-01-02T03:04:09.123456-05:00"
}
}

At this point another transaction event will be emitted for the redemption of USDF coin from the transfer recipient account to the consortium bank that owns the recipient account.

{
"id":"0470ee78-a560-4d30-a7e6-88f0bfa3887d",
"program_id":"77a714d2-318e-45b9-92df-283fbad865a3",
"sequence_number":3,
"type":"TRANSACTION",
"created_dt":"2022-01-02T03:04:15.123456-05:00",
"data":{
"amount_coins":2500,
"amount":25,
"fromAddress":"tp1ldxvn7am23xx987yhchra5hwfvglk5lu05m2u3",
"networkFee":0,
"note":"Descriptive message associated with the transaction",
"status":"PENDING",
"toAddress":"tp10j8lzuxj0whumvg54dzlgfgjvyx0z3l7k4muu7",
"transactionId":"bb0c51b1-f7f5-408e-9842-de4fed6c163d",
"transactionType":"OUTBOUND",
"createdDt":"2022-01-02T03:04:13.123456-05:00",
"updatedDt":"2022-01-02T03:04:15.123456-05:00"
}
}

Redemption Completed

After provenance has processed the redemption transaction an event will be emitted marking the transaction as COMPLETE.

{
"id":"9ee0e9ce-a4d8-4c01-8b39-19f94e66cbf3",
"program_id":"77a714d2-318e-45b9-92df-283fbad865a3",
"sequence_number":4,
"type":"TRANSACTION",
"created_dt":"2022-01-02T03:04:15.123456-05:00",
"data":{
"amount_coins":2500,
"amount":25,
"fromAddress":"tp1ldxvn7am23xx987yhchra5hwfvglk5lu05m2u3",
"networkFee":0,
"note":"Descriptive message associated with the transaction",
"status":"COMPLETE",
"toAddress":"tp10j8lzuxj0whumvg54dzlgfgjvyx0z3l7k4muu7",
"transactionId":"bb0c51b1-f7f5-408e-9842-de4fed6c163d",
"transactionType":"OUTBOUND",
"createdDt":"2022-01-02T03:04:13.123456-05:00",
"updatedDt":"2022-01-02T03:04:15.123456-05:00"
}
}