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:

  1. Register the bank account - Create an outgoing fiat instruction with the customer's bank details
  2. 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"
      }
    }
  }
}
StablecoinFiat CurrencyWithdrawal Rails
MXNBMXNCLABE
DIPEARSCBU, Alias

Withdrawal Flow

┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐
│   Stablecoin    │────▶│     Lirium      │────▶│  Customer Bank  │
│    Balance      │     │   Conversion    │     │    Account      │
└─────────────────┘     └─────────────────┘     └─────────────────┘
        │                       │                       │
        │   Debit DIPE/MXNB     │   Bank Transfer       │
        │                       │   (ARS/MXN)           │
        └───────────────────────┴───────────────────────┘

Supported Withdrawal Methods

Argentina (ARS)

TypeCodeRequired FieldsDescription
CBUar_cbucbu, cuitDirect bank transfer via CBU
Aliasar_aliasalias, cuitTransfer via bank alias

Mexico (MXN)

TypeCodeRequired FieldsDescription
CLABEmx_clabeclabe, beneficiary_full_nameSPEI 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:

FieldTypeDescription
ownershipstringown (default) when the account belongs to the customer, or third_party when it belongs to someone else
beneficiary_full_namestringFull name of the account beneficiary. Required when ownership is third_party
📘

Beneficiary name location

beneficiary_full_name is a top-level field on the instruction. The legacy mx_clabe.recipient_legal_name field is deprecated and will be removed in a future release — use the top-level beneficiary_full_name instead.

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)

FieldFormatValidation
cbu22 numeric digitsMust be valid CBU checksum
cuit11 numeric digitsFormat: 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)

FieldFormatValidation
clabe18 numeric digitsMust be valid CLABE checksum
beneficiary_full_nameStringMust 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)

FieldFormatValidation
alias6-20 charactersLetters, numbers, dots only
cuit11 numeric digitsFormat: 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_instructions

Response:

[
  {
    "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

CountryMethodTypical Processing Time
ArgentinaCBU1-2 business hours
ArgentinaAlias1-2 business hours
MexicoCLABE (SPEI)Minutes to same day

Processing times may vary based on bank operating hours and local holidays.

Error Handling

Common Errors

Error CodeDescriptionResolution
invalid_cbuCBU format or checksum invalidVerify the 22-digit CBU
invalid_clabeCLABE format or checksum invalidVerify the 18-digit CLABE
invalid_cuitCUIT format invalidUse format XX-XXXXXXXX-X
beneficiary_mismatchName doesn't match accountUse exact account holder name
account_not_foundBank account doesn't existVerify account details
duplicate_accountAccount already registeredUse existing instruction

Security Considerations

  1. Account Ownership: Always declare the correct ownership value. Use own when the destination belongs to the verified customer, and third_party (with beneficiary_full_name) when it belongs to someone else. Third-party withdrawals may trigger additional compliance reviews.

  2. CUIT Matching: For Argentina, the CUIT should match the customer's verified identity when ownership is own.

  3. Beneficiary Verification: The value of beneficiary_full_name must match the account holder on record at the destination bank.

  4. Rate Limiting: Account registration is rate-limited to prevent abuse.

API Reference