Withdraw from a card
Moves card balance back to the merchant. Acceptance does not touch the merchant balance (status: pending); once the issuer returns the funds, the amount minus the fee is credited to the merchant's available balance. Nothing is booked on failure. The result is sent with the card_funding.status_changed webhook.
- Only
activecards can be withdrawn from; rejected when the product'sfeatures.withdrawis false. - The amount must be within
limits.withdraw; otherwise 422. - The fee is
pricing.withdraw_fee_ratepluswithdraw_fee_fixed; the amount must be greater than the fee. - Returns 422 (
insufficient_balance) when the amount exceeds the card's most recently synced balance minus withdrawals still in progress. When the balance has never been synced or has changed since, the issuer decides; if the card balance is too low the result isfailed. - Some issuers do not support withdrawals and return 422.
merchantApiKeymerchantTimestampmerchantNoncemerchantSignatureX-API-KEY<token>Merchant API key (starts with upk_, also accepts api-key); signing headers are also required
X-Timestamp<token>Unix timestamp in seconds, within 300 seconds of server time
X-Nonce<token>Unique per request; cannot be reused with the same credential during the timestamp validity window
X-Signature<token>Hex HMAC-SHA256 signature (either letter case) of the method, full path, timestamp, nonce and body digest
cardId*stringapplication/json- body
amount*|Amount in the card currency, greater than 0, with no more decimals than the currency allows
order_no*stringYour order number, unique across the merchant's top-ups and withdrawals
length <= 64Accepted
application/json- response
id*stringTop-up / withdrawal ID (starts with cfd_)
card_id*string|nulltype*stringtop_up or withdraw
"top_up""withdraw"order_no*stringYour order number
amount*stringAmount moved into or out of the card
fee*stringFee; charged on top of a top-up, deducted from the returned amount for a withdrawal
currency*stringstatus*CardFundingStatuspending: accepted, being processed by the issuersucceeded: succeeded and bookedfailed: failed, seefailure_reason; a held top-up amount has been released
"pending""succeeded""failed"failure_reason*string|nullcreated_at*stringdate-timeupdated_at*stringdate-timecurl -X POST 'https://sandbox.getupp.net/api/v1/cards/string/withdraw' \ -H 'Content-Type: application/json' \ -d '{ "amount": "50.00", "order_no": "WITHDRAW-1001"}'{ "id": "string", "card_id": "string", "type": "top_up", "order_no": "string", "amount": "string", "fee": "string", "currency": "string", "status": "pending", "failure_reason": "string", "created_at": "2019-08-24T14:15:22Z", "updated_at": "2019-08-24T14:15:22Z"}