Stablecoins
Minting and Redeeming
MINT
1. Authenticate
2. Deposit USD
3. Convert USD to Stablecoin
4. Transfer Stablecoin to Customer
REDEEM
1. Authenticate
2. Create Deposit Address
3. Send Stablecoin to DRS
4. DRS Transfers USD to Bank Account
P2P Transfers
Participants
- Sender
- Recipient
- Stablecoin issuer
- Blockchain network
- Wallet provider
Authorization
- Sender initiates a transfer via their wallet.
- Transaction is broadcast to the blockchain network.
- Network verifies sender’s balance and transaction validity.
- Transaction is approved and added to the blockchain.
Processing
- Transaction is processed on the blockchain.
- Smart contracts execute any required conditions.
- Network nodes confirm the transaction.
Settlement
- Stablecoin is credited to the recipient’s wallet.
- Transaction is permanently recorded on the blockchain.
Stablecoin API payment flow
Stablecoins can be sent and received using the DRS stablecoin payments API. Each transaction is initiated, validated, and reconciled through DRS regulated infrastructure, ensuring that onchain transfers follow the same operational, compliance, and regulatory frameworks applied to other payment rails.
Outbound payments (send)
Use the POST /v1/payments endpoint to send stablecoins to a verified external blockchain address. For outbound payments, USD is debited from the DRS account, and the corresponding USDC amount is delivered onchain.
Step 1: Payment initiation
Submit a request to POST /v1/payments specifying the account number, amount, currency (USDC), blockchain (Ethereum), and destination blockchain address.
Step 2: Validation
DRS:
- Validates account permissions
- Verifies available balances
- Confirms that the specified blockchain and asset are supported
- Performs any other necessary compliance and regulatory validations
Step 3: Execution
Once validated, the transaction is broadcast to the selected blockchain for settlement.
Step 4: Confirmation
After settlement, DRS records the transaction and issues a webhook notification (Crypto.Payment.Sent) containing the payment ID and blockchain transaction hash.
Step 5: Reconciliation
The completed transaction is reflected in account reporting to support operational and accounting traceability.
Inbound payments (receive)
Stablecoins may be received into a DRS-managed onchain address. Inbound transfers are detected and validated once confirmed onchain, after which USD is credited to the DRS account.
Step 1: Address retrieval
Use GET /v1/accounts/{accountNumber}/account-addresses to retrieve the receiving blockchain address for the selected network.
Step 2: Sender transfer initiation
A sender, which may be DRS’s customer or the customer’s customer (i.e. the end user), initiates a stablecoin transfer to the retrieved address using a supported blockchain network.
Step 3: Onchain confirmation
DRS detects the transaction and validates that it matches the account and asset configuration, and issues a Crypto.Payment.OnchainPaymentDetected webhook.
Step 4: PII submission and account credit
If sender PII is not being reused from a previous transfer, provide the required sender PII using POST /v1/payments/{id}/pii. Once the required PII is submitted and the transfer is validated, the equivalent USD amount is credited to the account and reflected in reporting.
Step 5: Notification
A webhook (Crypto.Payment.Received) confirms that the inbound transfer has completed successfully.
Example
A payment of 1,000 USDC is sent to a supplier.
STABLECOIN API INVOICE
- A call is made to POST /v1/payments, specifying the supplier’s Ethereum blockchain address.
- DRS validates and executes the transaction on the Ethereum network.
- The payment is finalized onchain, subject to network conditions.
- A webhook notification (Crypto.Payment.Sent) is issued containing the payment ID and blockchain transaction hash for reconciliation.
Run your first test
The sandbox environment supports testing of both inbound and outbound stablecoin payment flows.
Test an inbound payment (external to DRS)
Step 1: Retrieve a receiving address
Call GET /v1/accounts/{accountNumber}/account-addresses to retrieve a DRS-managed receiving address associated with the account for the selected blockchain network.
Step 2: Fund a test wallet
Request test USDC and the corresponding network token using the public faucet links listed in the table in the Get testnet tokenS section.
Step 3: Initiate the transfer
Send test USDC from an external testnet wallet to the retrieved receiving address.
Step 4: Onchain confirmation
Once the transaction is confirmed on the test network, DRS detects the transfer and makes the payment available for PII submission.
Step 5: Provide PII
Submit the required sender PII using POST /v1/payments/{id}/pii.
Step 6: Verify receipt
After required PII is submitted and the payment is completed, DRS issues a Crypto.Payment.Received webhook. Webhook logs can be used to confirm successful receipt of the inbound payment and account credit.
Test an outbound payment (DRS to external)
Step 1: Create an external destination wallet
Call POST /v1/accounts/{accountNumber}/external-addresses to register a destination blockchain address for testing.
Step 2: Send a payment
1. Call POST /v1/payments to initiate a USDC payment from the DRS sandbox account to the registered external address.
2. Set the blockchain field to either ethereum or solana, based on the selected test network.
Step 3: Confirm transaction status
After the transaction is broadcast and confirmed, a Crypto.Payment.Sent webhook is issued containing the payment ID and blockchain transaction hash.
Updated about 1 month ago