CAPSEND API Docs
API ESSENTIALS

Rules to build by

The few behaviors every CAPSEND integration must handle correctly.

Authentication

Exchange your environment-specific client credentials at POST /api/token. Send the returned token on every wallet and transfer request:

http
Authorization: Bearer ACCESS_TOKEN

Tokens last 3600 seconds. Cache a token securely and request another shortly before expiry. Staging credentials and tokens never work in production, and production credentials and tokens never work in staging.

Money

Send money as a decimal string with no more than four decimal places:

json
{ "amount": "125.5000" }

CAPSEND returns money as four-decimal strings. Keep it as decimal data throughout your system; do not use JavaScript floating-point arithmetic for balances or settlement.

Idempotency

Every create-transfer request needs an idempotency-key header containing a UUID.

  • Generate one key for one logical transfer.
  • Save it with your transfer record.
  • Reuse it when retrying the same request after a timeout.
  • Never reuse it for a different transfer or changed request body.

An exact retry returns the original transaction. Reusing a key with changed data returns 409 Conflict.

Transfer lifecycle

StatusMeaningWhat to do
PENDINGCAPSEND accepted and queued the transfer.Wait for processing.
PROCESSINGThe transfer is in progress or awaiting confirmation.Keep it open; do not resend as a new transfer.
SUCCESSThe transfer completed successfully.Mark it successful after a verified webhook or status response.
FAILEDThe transfer failed.Record failureReason when returned and follow your failure process.
REFUNDEDA previously successful transfer was refunded.Reconcile the refund against the original transfer.
PROCESSEDLegacy successful value in historical records.Treat as a successful terminal state.

Wallet behavior

CAPSEND places a hold for the transfer amount before processing. The configured fee is recorded separately and is not added to the hold or deducted from the wallet balance during payout processing.

The staging wallet is managed for you. If its available test balance falls below its target, CAPSEND restores it before accepting the next eligible staging transfer. One staging transfer cannot exceed the target balance.

Errors

json
{
  "message": "Idempotency key was already used for a different request",
  "code": "CONFLICT",
  "requestId": "5bd75f7a-35f1-4269-96ea-f017c75f32e8"
}

Authentication errors can contain only message. Other errors normally include code and requestId.

StatusMeaningRetry?
400Invalid requestNo; correct the request.
401Missing, invalid, expired, or wrong-environment tokenObtain the correct token.
402Insufficient production wallet fundsFund the wallet or lower the amount.
403MTO account is not approved or activeResolve account status.
404Wallet or transfer not foundVerify the environment and identifier.
409Idempotency conflictReuse the original body or investigate before proceeding.
429Too many requestsRetry later with exponential backoff and jitter.
500Unexpected CAPSEND errorRetry safely; preserve the idempotency key for create requests.

When contacting CAPSEND support, provide the environment, UTC time, requestId, transaction ID, and CAPSEND reference. Never send an access token, client secret, webhook secret, or full account number.

Copyright CAPSEND Finance Services Ltd
Search documentation Find an endpoint, workflow, or integration rule.

Start typing to search the integration guide.