Outgoing Withdrawals
Enable customers to withdraw funds to their bank accounts
Outgoing fiat instructions allow your customers to register bank accounts for withdrawals. Once registered, customers can convert their stablecoins to fiat and receive funds in their local bank accounts.
Complete Withdrawal Process
To withdraw stablecoins to a customer's bank account:
- Register the bank account - Create an outgoing fiat instruction with the customer's bank details
- Create a sell order - Use the instruction ID in a sell order to initiate the withdrawal
{
"reference_id": "withdrawal-123",
"operation": "sell",
"asset": {
"currency": "MXNB",
"amount": "101.00"
},
"sell": {
"payment": {
"destination": {
"type": "fiat_instructions",
"value": "39c98c5ae53941449539074a2645dd85"
}
}
}
}| Stablecoin | Fiat Currency | Withdrawal Rails |
|---|---|---|
| MXNB | MXN | CLABE |
| DIPE | ARS | CBU, Alias |
Withdrawal Flow
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Stablecoin │────▶│ Lirium │────▶│ Customer Bank │
│ Balance │ │ Conversion │ │ Account │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │ │
│ Debit DIPE/MXNB │ Bank Transfer │
│ │ (ARS/MXN) │
└───────────────────────┴───────────────────────┘
Supported Withdrawal Methods
Argentina (ARS)
| Type | Code | Required Fields | Description |
|---|---|---|---|
| CBU | ar_cbu | cbu, cuit | Direct bank transfer via CBU |
| Alias | ar_alias | alias, cuit | Transfer via bank alias |
Mexico (MXN)
| Type | Code | Required Fields | Description |
|---|---|---|---|
| CLABE | mx_clabe | clabe, beneficiary_full_name | SPEI interbank transfer |
Account Ownership
Every outgoing fiat instruction records whether the destination account belongs to the customer or to a third party. This is captured by two top-level fields:
| Field | Type | Description |
|---|---|---|
ownership | string | own (default) when the account belongs to the customer, or third_party when it belongs to someone else |
beneficiary_full_name | string | Full name of the account beneficiary. Required when ownership is third_party |
Beneficiary name location
beneficiary_full_nameis a top-level field on the instruction. The legacymx_clabe.recipient_legal_namefield is deprecated and will be removed in a future release — use the top-levelbeneficiary_full_nameinstead.
Registering Withdrawal Accounts
Argentina - CBU
POST /customers/{customer_id}/outgoing_fiat_instructions
Content-Type: application/json
{
"currency": "ARS",
"type": "ar_cbu",
"label": "Banco Galicia - Savings",
"ownership": "own",
"ar_cbu": {
"cbu": "1234567890123456789012",
"cuit": "20123456789"
}
}Response:
{
"id": "out_abc123",
"type": "ar_cbu",
"currency": "ARS",
"label": "Banco Galicia - Savings",
"status": "active",
"ownership": "own",
"beneficiary_full_name": null,
"ar_cbu": {
"cbu": "1234567890123456789012",
"cuit": "20123456789"
}
}Argentina - Alias
POST /customers/{customer_id}/outgoing_fiat_instructions
Content-Type: application/json
{
"currency": "ARS",
"type": "ar_alias",
"label": "Personal Account",
"ownership": "own",
"ar_alias": {
"alias": "mi.cuenta.personal",
"cuit": "20123456789"
}
}Mexico - CLABE (Own Account)
POST /customers/{customer_id}/outgoing_fiat_instructions
Content-Type: application/json
{
"currency": "MXN",
"type": "mx_clabe",
"label": "BBVA Checking",
"ownership": "own",
"beneficiary_full_name": "Juan Carlos Perez",
"mx_clabe": {
"clabe": "123456789012345678"
}
}Mexico - CLABE (Third-Party Account)
When the destination account belongs to someone other than the customer, set ownership to third_party and provide the account holder's name in beneficiary_full_name:
POST /customers/{customer_id}/outgoing_fiat_instructions
Content-Type: application/json
{
"currency": "MXN",
"type": "mx_clabe",
"label": "Mother's Bank Account",
"ownership": "third_party",
"beneficiary_full_name": "Jane Doe",
"mx_clabe": {
"clabe": "123456789012345678"
}
}Response:
{
"id": "out_def456",
"type": "mx_clabe",
"currency": "MXN",
"label": "Mother's Bank Account",
"status": "active",
"ownership": "third_party",
"beneficiary_full_name": "Jane Doe",
"mx_clabe": {
"clabe": "123456789012345678"
}
}Field Validation
CBU (Argentina)
| Field | Format | Validation |
|---|---|---|
cbu | 22 numeric digits | Must be valid CBU checksum |
cuit | 11 numeric digits | Format: XX-XXXXXXXX-X |
CBU Structure:
┌─────────────────────────────────────────────────┐
│ CBU: 0 1 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 │
│ └─┬─┘ └─┬─┘ └─────────────┬─────────────┘ │
│ Bank Branch Account Number │
└─────────────────────────────────────────────────┘
CLABE (Mexico)
| Field | Format | Validation |
|---|---|---|
clabe | 18 numeric digits | Must be valid CLABE checksum |
beneficiary_full_name | String | Must match account holder name. Required when ownership is third_party |
CLABE Structure:
┌───────────────────────────────────────────────────┐
│ CLABE: 0 1 4 1 8 0 0 0 0 0 0 0 0 0 0 0 0 1 │
│ └┬┘ └┬┘ └─────────┬─────────┘ └┘ │
│ Bank Plaza Account Number Check │
└───────────────────────────────────────────────────┘
Alias (Argentina)
| Field | Format | Validation |
|---|---|---|
alias | 6-20 characters | Letters, numbers, dots only |
cuit | 11 numeric digits | Format: XX-XXXXXXXX-X |
Managing Multiple Accounts
Customers can register multiple withdrawal accounts. Use descriptive labels to help them identify each account:
GET /customers/{customer_id}/outgoing_fiat_instructionsResponse:
[
{
"id": "out_abc123",
"type": "ar_cbu",
"currency": "ARS",
"label": "Banco Galicia - Savings",
"status": "active",
"ownership": "own",
"beneficiary_full_name": null
},
{
"id": "out_def456",
"type": "ar_alias",
"currency": "ARS",
"label": "Mercado Pago",
"status": "active",
"ownership": "own",
"beneficiary_full_name": null
},
{
"id": "out_ghi789",
"type": "mx_clabe",
"currency": "MXN",
"label": "Mother's Bank Account",
"status": "active",
"ownership": "third_party",
"beneficiary_full_name": "Jane Doe"
}
]Processing Times
| Country | Method | Typical Processing Time |
|---|---|---|
| Argentina | CBU | 1-2 business hours |
| Argentina | Alias | 1-2 business hours |
| Mexico | CLABE (SPEI) | Minutes to same day |
Processing times may vary based on bank operating hours and local holidays.
Error Handling
Common Errors
| Error Code | Description | Resolution |
|---|---|---|
invalid_cbu | CBU format or checksum invalid | Verify the 22-digit CBU |
invalid_clabe | CLABE format or checksum invalid | Verify the 18-digit CLABE |
invalid_cuit | CUIT format invalid | Use format XX-XXXXXXXX-X |
beneficiary_mismatch | Name doesn't match account | Use exact account holder name |
account_not_found | Bank account doesn't exist | Verify account details |
duplicate_account | Account already registered | Use existing instruction |
Security Considerations
-
Account Ownership: Always declare the correct
ownershipvalue. Useownwhen the destination belongs to the verified customer, andthird_party(withbeneficiary_full_name) when it belongs to someone else. Third-party withdrawals may trigger additional compliance reviews. -
CUIT Matching: For Argentina, the CUIT should match the customer's verified identity when
ownershipisown. -
Beneficiary Verification: The value of
beneficiary_full_namemust match the account holder on record at the destination bank. -
Rate Limiting: Account registration is rate-limited to prevent abuse.
API Reference
Updated 7 days ago
