Withdrawals
Send USD out of an open payments-core account with an outgoing fiat transfer method and a fiat disbursement. Crypto outflows use asset disbursement.
Link Outgoing Bank Method (ACH)
Create a separate outgoing rail (do not reuse the incoming method id for disbursements).
POST /fiat-transfer-methodtransferDirection: "OUTGOING"fundsTransferType: "ACH"
Example payload:
{
"accountId": "<accountId>",
"fiatId": "<fiatId>",
"transferDirection": "OUTGOING",
"fundsTransferType": "ACH",
"label": "Customer ACH out",
"bankName": "Test Bank",
"bankAccountName": "Jane Doe",
"bankAccountNumber": "0987654321",
"bankAccountType": "CHECKING",
"routingNumber": "021000021",
"last4": "4321",
"bankAddress1": "1 Federal Reserve Plaza",
"bankCity": "New York",
"bankState": "NY",
"bankPostalCode": "10045",
"bankCountryCode": "US",
"async": false
}
FIAT_TRANSFER_METHOD_NOT_READYDisbursements fail with FIAT_TRANSFER_METHOD_NOT_READY until the bank method's verificationState is approved. Creating the method is not enough. Wait for bank verification before retrying.
Fiat Disbursement
POST /fiat-disbursementunitCount: USD cents as a stringfiatTransferMethodId: the OUTGOING method id
Example payload:
{
"accountId": "<accountId>",
"fiatId": "<fiatId>",
"fiatTransferMethodId": "<outgoingFiatTransferMethodId>",
"unitCount": "1000",
"description": "Customer withdrawal"
}
Confirm available fiat with GET /account-fiat-total?accountId={accountId} before withdrawing.
Crypto Disbursement (Optional)
POST /asset-disbursement: send crypto from the payments-core account to an external destination via a ready asset transfer method
Ensure the asset transfer method is ready before calling; otherwise the platform rejects the disbursement similarly to the fiat not-ready case.
Putting It Together
Next Steps
- Fees: Withdrawal fee behavior
- Funding: Deposit funds back in
- Conversions: Trade before withdrawing