Creating a Deposit Token and Executing a Transfer
This guide explains how to create bank-issued tokenized deposits and execute instant 24/7 transfers between bank customers using blockchain rails.
Overview
Deposit tokens enable:
- 24/7 instant transfers between bank customers
- Programmable money for automated treasury management
- Immediate settlement outside traditional banking hours
- Blockchain transparency while maintaining bank backing
- DeFi integration while preserving deposit insurance
The process involves:
- Creating a deposit token type (administrative)
- Minting tokens to represent bank account funds
- Transferring tokens between customers
- Redeeming tokens back to traditional deposits
Prerequisites
- Administrative access to create deposit token types (bank-level operation)
- Active blockchain account with sufficient bank account balance
- Target recipient with blockchain account at the same bank
- Valid api key
Part 1: Creating a Deposit Token Type (Administrative)
Step 1: Create the Deposit Token
This is typically done by bank administrators via the Omnia dashboard. However, if required, you are also able to create a new deposit token via the API:
POST /deposit-tokens
Authorization: Bearer {your-api-key}
Content-Type: application/json
{
"symbol": "USD_BANK_2024",
"network": "solana"
}Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
symbol | string | Yes | Token symbol identifier (e.g., "USD_BANK_2024") |
network | string | Yes | Blockchain network (currently "solana") |
Example Response
{
"id": "DPT_01BX5ZZKBKACTAV9WEVGEMMVS1",
"network": "solana",
"symbol": "USD_BANK_2024"
}Save the deposit token ID for subsequent operations.
Part 2: Minting Deposit Tokens
Step 1: Mint Tokens to an Account
Convert a customer's DDA balance into transferable tokens:
POST /deposit-tokens/{deposit-token-id}/mints
Authorization: Bearer {your-api-key}
Content-Type: application/json
{
"destination": {
"type": "blockchain-account",
"id": "BCA_01BX5ZZKBKACTAV9WEVGEMMVS1"
},
"amount": "1000.00"
}Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
destination | object | Yes | Target blockchain account for minted tokens |
destination.type | string | Yes | Must be "blockchain-account" |
destination.id | string | Yes | Blockchain account ID |
amount | string | Yes | Amount of deposit tokens to mint |
Example Response
{
"type": "deposit-token-mint-transaction",
"id": "TXN_01BX5ZZKBKACTAV9WEVGEMMVS1",
"created": "2024-03-15T14:30:00Z",
"updated": "2024-03-15T14:30:00Z",
"amount": "1000.00",
"currency": {
"type": "deposit-token-currency",
"id": "DPT_01BX5ZZKBKACTAV9WEVGEMMVS1"
},
"status": "pending",
"destination": {
"type": "blockchain-account",
"id": "BCA_01BX5ZZKBKACTAV9WEVGEMMVS1"
}
}Step 2: Verify Minting Completion
Monitor the transaction status:
GET /transactions/{transaction-id}
Authorization: Bearer {your-api-key}When status is "completed", the tokens are available for transfer.
Part 3: Executing Instant Transfers
Step 1: Transfer Tokens to Another Customer
Send deposit tokens to another bank customer instantly:
POST /blockchain-accounts/{your-blockchain-account}/deposit-token-transfers
Authorization: Bearer {your-api-key}
Content-Type: application/json
{
"amount": "250.00",
"currency": {
"type": "deposit-token-currency",
"id": "DPT_01BX5ZZKBKACTAV9WEVGEMMVS1"
},
"destination": {
"type": "blockchain-account",
"id": "BCA_recipient_account_id"
}
}Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
amount | string | Yes | Amount of deposit tokens to transfer |
currency | object | Yes | Deposit token being transferred |
destination | object | Yes | Recipient's blockchain account |
Example Response
{
"type": "deposit-token-transfer-transaction",
"id": "TXN_01BX5ZZKBKACTAV9WEVGEMMVS1",
"created": "2024-03-15T14:31:00Z",
"updated": "2024-03-15T14:31:00Z",
"amount": "250.00",
"currency": {
"type": "deposit-token-currency",
"id": "DT_01BX5ZZKBKACTAV9WEVGEMMVS1"
},
"status": "pending",
"source": {
"type": "blockchain-account",
"id": "BCA_01BX5ZZKBKACTAV9WEVGEMMVS1"
},
"destination": {
"type": "blockchain-account",
"id": "BCA_recipient_account_id"
}
}Part 4: Redeeming Tokens Back to DDA
Step 1: Redeem Tokens for Traditional Deposits
Convert tokens back to regular DDA balance:
POST /deposit-tokens/{deposit-token-id}/redemptions
Authorization: Bearer {your-api-key}
Content-Type: application/json
{
"source": {
"type": "blockchain-account",
"id": "BCA_01BX5ZZKBKACTAV9WEVGEMMVS1"
},
"amount": "500.00"
}Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
source | object | Yes | Source blockchain account holding tokens |
source.type | string | Yes | Must be "BlockchainAccount" |
source.id | string | Yes | Blockchain account ID |
amount | string | Yes | Amount of deposit tokens to redeem |
Example Response
{
"type": "deposit-token-redemption-transaction",
"id": "TXN_01BX5ZZKBKACTAV9WEVGEMMVS1",
"created": "2024-03-15T14:32:00Z",
"updated": "2024-03-15T14:32:00Z",
"amount": "500.00",
"currency": {
"type": "deposit-token-currency",
"id": "DPT_01BX5ZZKBKACTAV9WEVGEMMVS1"
},
"status": "pending",
"source": {
"type": "blockchain-account",
"id": "BCA_01BX5ZZKBKACTAV9WEVGEMMVS1"
}
}Error Handling
Insufficient Token Balance
{
"error": "INSUFFICIENT_TOKEN_BALANCE",
"message": "Insufficient deposit token balance for transfer",
"details": {
"available": "150.00",
"requested": "250.00",
"tokenId": "DT_01BX5ZZKBKACTAV9WEVGEMMVS1"
}
}Invalid Destination Account
{
"error": "INVALID_DESTINATION",
"message": "Destination account not found or not at same bank",
"details": {
"destinationId": "BCA_unknown_account",
"requirement": "Destination must be valid blockchain account at same bank"
}
}Token Not Found
{
"error": "DEPOSIT_TOKEN_NOT_FOUND",
"message": "Specified deposit token does not exist",
"details": {
"tokenId": "DT_invalid_token",
"suggestion": "Verify token ID or create new deposit token"
}
}API Reference
Deposit Token Management
- Create Token Type:
POST /deposit-tokens - Mint Tokens:
POST /deposit-tokens/{id}/mints - Redeem Tokens:
POST /deposit-tokens/{id}/redemptions
Transfer Operations
- Transfer Tokens:
POST /blockchain-accounts/{id}/deposit-token-transfers - Check Status:
GET /transactions/{id} - List Transfers:
GET /transactions?type=DepositTokenTransferTransaction
Updated 10 months ago
Did this page help you?
