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

  1. Sender initiates a transfer via their wallet.
  2. Transaction is broadcast to the blockchain network.
  3. Network verifies sender’s balance and transaction validity.
  4. Transaction is approved and added to the blockchain.

Processing

  1. Transaction is processed on the blockchain.
  2. Smart contracts execute any required conditions.
  3. Network nodes confirm the transaction.

Settlement

  1. Stablecoin is credited to the recipient’s wallet.
  2. 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

  1. A call is made to POST /v1/payments, specifying the supplier’s Ethereum blockchain address.
  2. DRS validates and executes the transaction on the Ethereum network.
  3. The payment is finalized onchain, subject to network conditions.
  4. 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.




Did this page help you?