Withdrawals

Get withdrawal allowance

Check your available API withdrawal allowance and limits.

GET
/api/v2/customers/withdrawal/allowance

Returns the current allowance status for API withdrawals.

Use this endpoint to check your available API allowance before initiating a withdrawal. The allowance determines whether withdrawals execute automatically (PROCESSING) or require manual approval (PROPOSED) from the dashboard.

Organization scope: Allowance is configured at the organization level (your Safe wallet), not per customer.

Response states (all return 200):

  • enabled: false, allowance: null — API withdrawals unavailable, Safe not configured, or module not enabled on-chain
  • enabled: true, allowance: { "limit": "0", ... } — Module and delegate configured, but no spending limit set yet (every amount is "0")
  • enabled: true, allowance: { ... } — Fully configured; check available before withdrawing

enabled: true means the on-chain module and delegate are configured. Automatic withdrawals still require sufficient available allowance. When enabled is false but API withdrawals are enabled, wallet USDC withdrawals fail with 500 (or 404 when no Safe wallet is configured) instead of falling back to PROPOSED.

Response Fields

  • enabled: Whether the on-chain module and delegate are configured
  • 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)

Authorization

bearerAuth
AuthorizationBearer <token>

Organization API key obtained on Settings > API Keys page in Compose UI.

In: header

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X GET 'https://compose.finance/api/v2/customers/withdrawal/allowance' \  -H 'Authorization: Bearer YOUR_API_KEY'

{
  "enabled": true,
  "allowance": {
    "limit": "10000",
    "spent": "2500",
    "available": "7500",
    "resetPeriodMinutes": 1440,
    "nextResetAt": "2024-01-16T00:00:00.000Z"
  }
}

{
  "error": "Unauthorized - Invalid or missing API key or session"
}
{
  "error": "Customers feature is not enabled for your organization"
}
{
  "error": "Rate limit exceeded. Please try again later."
}

{
  "error": "Internal server error"
}