Initiate a Blockchain Payout

On-ramp payout

Creating a payout is where everything comes together, turning your setup into real value movement. Once your destination is ready, you can initiate a payout to spend your fiat balance and receive stablecoin at the selected blockchain address.

flowchart LR

  S((Start)):::start -->

  A([👤 1. Create a Profile]):::step -->

  B([🛡️ 2. Whitelist Blockchain Address]):::step -->

  C([💸 3. Create Payout]):::highlight

  

  %% Base theme (your primary)

  classDef step fill:#C7E5DE,stroke:#5FA8A0,color:#1F3C3A,stroke-width:2px,rx:14,ry:14;

  

  %% Highlighted step (only step 3)

  classDef highlight fill:#A8DCD1,stroke:#2F7F77,color:#0F2F2D,stroke-width:3px,rx:16,ry:16;

  

  %% Start marker

  classDef start fill:#FFFFFF,stroke:#2F7F77,color:#0F2F2D,stroke-width:2px;

  

  %% “Journey line” (thicker path)

  linkStyle 0 stroke:#2F7F77,stroke-width:3px;

  linkStyle 1 stroke:#2F7F77,stroke-width:3px;

  linkStyle 2 stroke:#2F7F77,stroke-width:3px;

Payouts

📘

Create a payout

Endpoint

https://www.bankingcircleconnect.com/api/v1/digital-assets/payouts

Purpose

Initiates a payout to convert fiat into stablecoin and send it to a blockchain address.

Usage

Use this endpoint to create a payout once the destination address has been whitelisted. Always include an idempotency key to safely retry requests without creating duplicate transactions.


Notes

⚠️

The address must be whitelisted

An idempotency key is required

Only one of the following parameters may be provided:

  • fromAmount
  • toAmount

Auto Currency Conversion

When initiating a payout, you must provide both the account number and the currency associated with that account. The account specified in from.accountNumbermust hold sufficient funds in the fiat currency pegged to the requested stablecoin. The system does not support automatic currency conversion currently. If the required currency is unavailable or insufficient, the payout request will be rejected.

Insufficient Balance

If the account has insufficient balance overall, the payout will move to a Missing Funding status for up to 2 business days until the account is topped up, otherwise the request will be cancelled


Request body

If you know the fiat amount to convert, provide it in fromAmount:

FieldTypeRequiredDescriptionValidation / Rules
from.accountNumberstringYesSource fiat account10-digit Banking Circle account number
to.addressIdstringYesWhitelisted address IDMust reference approved address
to.networkCurrencyCodestringYesAsset + network (e.g. ETHEREUM_USDC)Must be supported pair
amount.fromAmountstringYesFiat amount to convertSpecify how much fiat to convert
amount.toAmountstringLeave emptyTarget crypto amountProvide either fromAmount OR toAmount only
referencestringOptionalClient referenceNo explicit validation

If you know the amount you want to receive, provide it in toAmount:

FieldTypeRequiredDescriptionValidation / Rules
from.accountNumberstringYesSource fiat accountMust be valid account
to.addressIdstringYesWhitelisted address IDMust reference approved address
to.networkCurrencyCodestringYesAsset + network (e.g. ETHEREUM_USDC)Must be supported pair
amount.fromAmountstringLeave emptyFiat amount to convertProvide either fromAmount OR toAmount only
amount.toAmountstringYesTarget token amountHow much tokens you want to receive
referencestringOptionalClient referenceNo explicit validation

Supported network

EnvironmentNetworkAssetsnetworkCurrencyCode
ProductionEthereumUSDC, EURIETHEREUM_USDC
ETHEREUM_EURI
TestEthereumUSDC, EURISEPOLIA_USDC
SEPOLIA_EURI

💡

Payout ID

A unique ID will be returned and can be used to retrieve the transaction status or perform related requests.

Example

Create a payout using fromAmount

{
  "from": {
    "accountNumber": "1000000001"
  },
  "to": {
    "addressId": "addrto_evm_01hzxjkhq4m2wtqv43w8v9n8ck",
    "networkAssetCode": "ETHEREUM_USDC"
  },
  "amount": {
    "fromAmount": "1000.00"
  },
  "reference": "INV-2026-00042"
}

Response

{
  "id": "txn_01hx2zq3k4m5n6p7q8r9",
  "status": "Submitted",
  "createdAt": "2026-04-29T09:00:00+00:00",
  "updatedAt": "2026-04-29T09:00:00+00:00",
  "from": {
    "accountNumber": "f4ebf3f5-60ef-4d90-8c91-4f0f18f6f7b0"
  },
  "to": {
    "addressId": "addrto_01hzxjkhq4m2wtqv43w8v9n8ck",
    "networkCurrencyCode": "ETHEREUM_USDC"
  },
  "fromAmount": "1000.00",
  "toAmount": "997.50",
  "fxQuote": {
    "quoteId": "quote_20260429_0001",
    "rate": "0.9975",
    "expiresAt": "2026-04-29T09:05:00+00:00"
  },
  "fees": [
    {
      "type": "network",
      "value": "2.50",
      "currency": "EUR"
    }
  ],
  "reference": "INV-2026-00042",
  "blockchainDetails": {
    "transactionHash": "0x9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08",
    "transferStatus": "pending"
  },
  "fiatPaymentDetails": {
    "paymentId": "6f9619ff-8b86-d011-b42d-00cf4fc964ff",
    "status": "pending"
  }
}

Transaction Lifecycle

StatusTypeDescriptionFunding / Usage Rules
CREATEDIntermediateRequest is received by BC
BC performs pre-transaction checks
No funds are moved at this stage
SUBMITTEDIntermediateRequest is in progress
Status updates after fiat is successfully deducted
Fiat has been deducted
Processing is ongoing
SETTLEDFinalRequest is successful
Stablecoin is sent to whitelisted address
Stablecoin transferred to destination address
FAILEDFinalRequest has failedNo funds transferred
Client should investigate
MISSING FUNDINGIntermediateRequest is on hold due to insufficient fiat balanceThe payout is on hold for up to 2 business days to allow the client to complete the required top-up.
ONHOLDIntermediateThe transaction is on hold due to additional internal processing. No client action is required.The transaction will automatically resume or update once processing is finished.
flowchart LR

	A["🟢 Created"]:::state --> B["📨 Submitted"]:::state

  B --> C["✅ Settled"]:::done
  B -->|↘ Missing Funding| D["⏳ Missing Funding"]:::missingFunding
  B -->|↘ On-hold| E["🟠 On-hold"]:::hold

  D --> C
  D -->|↘ On-hold| E
  E -->|Resolved| C

  A -->|↘ Failed| F["❌ Failed"]:::fail
  B -->|↘ Failed| F
  D -->|↘ Failed| F
  E -->|↘ Failed| F

  classDef state fill:#C7E5DE,stroke:#5FA8A0,color:#1F3C3A,stroke-width:2px;
  classDef done fill:#DFF3EE,stroke:#2F7F77,color:#0F2F2D,stroke-width:2px;
  classDef missingFunding fill:#FFF6D6,stroke:#C9A227,color:#4A3B00,stroke-width:2px;
  classDef hold fill:#FFE9D6,stroke:#D07A2D,color:#4A2A00,stroke-width:2px;
  classDef fail fill:#FFE8E8,stroke:#D66B6B,color:#5B1B1B,stroke-width:2px;

Retrieve Payouts

📘

List Payout

Endpoint

https://www.bankingcircleconnect.com/api/v1/digital-assets/payouts

Purpose

Retrieves a paginated list of payouts.

Usage

Use this endpoint to track outbound transactions from fiat to digital assets. The results are returned using cursor-based pagination for efficient navigation through large datasets.

📘

Fetch a single payout

Endpoint

https://www.bankingcircleconnect.com/api/v1/digital-assets/payouts/{id}

Purpose

Retrieves the details of a specific payout.

Usage

Use this endpoint to view the latest information for a payout using its unique identifier.



Coming Soon

📌

Webhook

Webhooks provide real-time updates for:

  • Transactions
  • Profiles

Sandbox Testing

A dedicated sandbox environment will be available soon, giving you a safe space to explore the API, test your integration, and simulate payout flows without impacting real funds.




Did this page help you?