Compose Finance
Withdrawals

List customer withdrawal banks

Returns all withdrawal banks configured for the customer. Only ACTIVE banks can be used for withdrawals.

GET
/api/v2/customers/{customerId}/withdrawal/banks

Returns all withdrawal banks configured for the customer. Only ACTIVE banks can be used for withdrawals.

Authorization

bearerAuth
AuthorizationBearer <token>

Organization API key obtained from PropelAuth

In: header

Path Parameters

customerId*string

Unique identifier of the customer

Response Body

application/json

application/json

application/json

application/json

curl -X GET 'https://compose.finance/api/v2/customers/{customerId}/withdrawal/banks' \  -H 'Authorization: Bearer YOUR_API_KEY'
[
  {
    "id": "bank_123abc",
    "beneficiaryName": "JOHN DOE",
    "iban": "DE89370400440532013000",
    "bic": "COBADEFFXXX",
    "addressLine1": "123 Main Street",
    "city": "Berlin",
    "country": "DE",
    "currency": "EUR",
    "status": "ACTIVE",
    "createdAt": "2024-01-15T10:30:00.000Z",
    "wallets": [
      {
        "id": "wallet_123abc",
        "address": "0x1234567890abcdef1234567890abcdef12345678",
        "currency": "usdc",
        "chain": "base",
        "enabled": true,
        "createdAt": "2024-01-15T10:30:05.000Z",
        "updatedAt": "2024-01-15T10:30:05.000Z",
        "instructions": "Send USDC to this address to automatically receive funds in your bank account. Minimum: 5 USDC."
      }
    ]
  }
]
{
  "error": "Unauthorized - Invalid or missing API key or session"
}
{
  "error": "Customers feature is not enabled for your organization"
}
{
  "error": "Customer not found"
}

Create customer withdrawal bank POST

Adds a new bank account for withdrawals. The customer must be KYC verified. **Recipient Types** - `CUSTOMER` - The customer themselves. Auto-approved if the beneficiary name matches the customer's verified name (KYC name for individuals, organization name for corporates). Returns 400 on name mismatch. - `OTHER_INDIVIDUAL` - A third-party individual. Requires manual approval. - `OTHER_BUSINESS` - A third-party business. Requires manual approval. If `recipientType` is not specified, it defaults to `CUSTOMER`. **Address** For `CUSTOMER` recipients, `addressLine1` and `city` are optional. If omitted, the address is auto-resolved from the customer's KYC data (individuals) or stored business address (corporates). You can check the available address via `GET /customers/{customerId}/kyc/address`. For `OTHER_INDIVIDUAL` and `OTHER_BUSINESS`, address fields are required. **Validation** - IBAN and BIC formats are validated automatically - For CUSTOMER: beneficiary name is checked against the customer's verified identity (individual) or organization name (corporate)

Get withdrawal allowance GET

Returns the current allowance status for API withdrawals. Use this endpoint to check your available API allowance. The allowance determines whether withdrawals execute automatically (`PROCESSING`) or require manual approval (`PROPOSED`) from the dashboard. **Response Fields** - `enabled`: Whether API withdrawals are fully configured for your organization - `allowance.limit`: Total allowance amount per reset period (USDC) - `allowance.spent`: Amount already used this period (USDC) - `allowance.available`: Remaining amount you can withdraw automatically (USDC) - `allowance.resetPeriodMinutes`: How often the allowance resets (0 = one-time, no reset) - `allowance.nextResetAt`: When the allowance will reset (null if one-time)