1. Withdraw
Artha All Module Api's
  • Introduction
  • Authentication
  • KYC/KYB Requirements
  • API Setup Guide
  • Products
    • List Products
      GET
    • Get Product
      GET
    • Get Customer Product Status
      GET
  • Customers
    • Create Customer
      POST
    • List Customers
      GET
    • Get Customer
      GET
    • Submit Applicant (KYC/KYB)
      POST
    • Create Onboarding Session
      POST
  • Wallets
    • Beneficiary
      • Create Crypto Beneficiary
      • Update Crypto Beneficiary
      • List Crypto Withdraw Beneficiaries
    • Create Wallet
      POST
    • Get Wallet Address
      GET
    • Get Customer Balances
      GET
    • List Wallets
      GET
    • List Withdrawals
      GET
    • List Withdrawal Networks
      GET
    • Preview Withdrawal Summary
      POST
    • Create Crypto Withdrawal
      POST
  • Cards
    • Issuance
      • Issue Card
      • List Cards
      • List Customer Cards
      • Get Card Details
      • Get Sensitive Card Details
    • Funding
      • Top Up Card
      • Get Card Balance
      • Get Top-Up Status
      • List Top-Up History
    • Operations
      • Resend Activation Code
      • Activate Card
      • Set Card PIN
      • Change Card PIN
      • Update Card Limits
      • Freeze Card
      • Unfreeze Card
      • Replace Card
      • Cancel Card
      • Get Card Limits
      • Show Card PIN Details
      • Get PIN View Iframe URL
      • Get PIN Change Iframe URL
      • Get PIN Set Iframe URL
      • Get Card View Iframe URL
      • Show Card PIN
  • Payees
    • Create a payee for a customer.
    • List a customer's payees.
    • Update a payee.
    • Retrieve a payee by id.
    • Look up an existing payee.
    • List the currencies a payee can be created in.
    • List the accepted payment purpose codes for a payee.
    • List the countries a payee can be created in.
    • List currency/country pairings for payees.
    • List the accepted beneficiary relationship codes.
  • Payments
    • Onboarding
      • List the customer's payout-currency configuration sections.
      • Enable a payout-currency section for the customer.
      • Get the customer's terms-of-service acceptance status.
      • Enable or disable a payout-currency section.
    • Quote
      • List the currencies a beneficiary can be paid in under a product.
      • List the payout rails available for a product and beneficiary.
      • Create an FX quote giving the rate and fee for a cross-currency payout.
    • Order
      • Submit a payout order to send money to a beneficiary.
      • Retrieve the on-chain address to fund an order.
      • Retrieve the status and settlement detail of a payout order.
    • Lookups
      • List the accepted payment purpose codes for a payout.
      • List the accepted source-of-funds codes for a payout.
      • List the document types accepted on a payout order.
  • Banks
    • Accounts
      • Create Bank Account
      • Get Account Details
      • Get Account Issuance Status
    • Withdraw
      • Create Withdrawal Quote
        POST
      • List Withdrawal Purposes
        GET
      • Get Payment Schemes
        GET
      • Execute Withdrawal
        POST
  • Exchange
    • Quote
      • Get Exchange Rate
      • Create Price Quote
    • Order
      • Place Exchange Order
  • Transactions
    • List Transactions
    • Get Transaction Details
  • Utilities
    • List Currencies
    • List Countries
    • Get Fee Schedule
    • List Product Occupations
    • List Product Industry Codes
    • Upload File
  • Webhook's
    • Wallets Webhooks
    • Banks Webhooks
    • Payments Webhooks
    • Exchange Webhooks
    • Card Webhooks
  1. Withdraw

Execute Withdrawal

POST
/api/v1/accountwithdrawal/withdraw
Executes a withdrawal from a customer's account to a saved beneficiary (payee). This endpoint moves real money.
Prerequisites
The source account must be approved with a balance ≥ amount + fees.
beneficiary.payeeId must be a saved, verified payee of the customer.
For regulated corridors, fetch a valid purpose code first via GET /api/v1/accountwithdrawal/purpose.
Strongly recommended: get a quote first so fees and FX are known to the user.
⚠️ Important
Withdrawals are asynchronous: a 200 acknowledges acceptance with status created; settlement happens on the rails afterwards. Track completion via webhooks.
Use a fresh X-Nonce per attempt; retrying with the same nonce is rejected as a replay.
Insufficient balance returns 409 INSUFFICIENT_FUNDS — no funds are moved.
Status values
StatusMeaning
submittedAccepted and queued
pendingSent to the payment rails
approvedSettled to the beneficiary
rejectedRejected; funds returned to source
Related endpoints: POST /api/v1/accountwithdrawal/quote · GET /api/v1/accountwithdrawal/purpose

⚠️ Required Fields
FieldTypeDescriptionConstraints
customerobjectWrapper for the customer reference-
customer.idstring (uuid)Customer making the withdrawalRequired
sourceobjectSource account and amount-
source.accountIdstring (uuid)ArthaPay account to debitRequired
source.amountnumber (double)Amount to debit from the source accountRequired · Min: 0.01 · Max: 1,000,000,000
beneficiaryobjectTarget payee-
beneficiary.payeeIdstring (uuid)Saved payee to payRequired
Optional Fields
FieldTypeDescriptionConstraints
source.currencystringISO-4217 currency of source.amount (defaults to the account currency)Nullable
beneficiary.currencystringISO-4217 currency the beneficiary should receiveNullable
paymentobjectPayment rail preferencesNullable
payment.schemestringRail: sepa, sepa_instant, swift, faster_paymentsMax: 50 · Nullable
📤 Response Fields
FieldTypeNullableDescription
data.idstring (uuid)NoWithdrawal ID — use for reconciliation and webhook correlation
data.statusstringNocreated | processing | completed | failed | cancelled
data.sourceAmountobjectNo{ value, currency } debited
data.targetAmountobjectYes{ value, currency } the beneficiary receives (null until FX applied)
data.feeobjectNo{ value, currency } fee charged
data.schemestringNoPayment rail used
data.payeeIdstring (uuid)NoBeneficiary paid
data.createdAtstring (date-time)NoUTC creation timestamp

Request

Header Params

Body Params application/json-patch+jsonRequired

Examples

Responses

🟢200
application/json
Withdrawal accepted (status created). Settlement is asynchronous — track via webhooks.
Bodyapplication/json

🟠401
🟠404
🟠409
🟠422
Request Request Example
Shell
JavaScript
Java
Swift
curl --location '/api/v1/accountwithdrawal/withdraw' \
--header 'X-API-Key: ak_live_8f3a9b2c1d4e5f6a7b8c' \
--header 'X-Signature: q2h8Zx0kPz5mVw7Yb3Nc1Rt6Ue9Ia4Od2Sf8Gk0Jl4=' \
--header 'X-Timestamp: 1754812800' \
--header 'X-Nonce: f47ac10b-58cc-4372-a567-0e02b2c3d479' \
--header 'X-Body-Hash: n4bQgYhMfWWaL+qgxVrQFaO/TxsrC4Is0V1sFbDwCgg=' \
--header 'Content-Type: application/json-patch+json' \
--data '{
  "customer": {
    "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
  },
  "source": {
    "accountId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "amount": 1000000000,
    "currency": "string"
  },
  "beneficiary": {
    "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
  },
  "payment": {
    "scheme": "string"
  }
}'
Response Response Example
200 - Success
{
    "data": {
        "id": "e8a1c4d7-2f5b-4e8a-b1d4-7c0e3f6a9b2d",
        "status": "created",
        "sourceAmount": {
            "value": 2500,
            "currency": "EUR"
        },
        "targetAmount": {
            "value": 2891.25,
            "currency": "USD"
        },
        "fee": {
            "value": 6.5,
            "currency": "EUR"
        },
        "scheme": "swift",
        "payeeId": "9b2f5c1e-8d3a-4f6b-b2e1-0c7d4a5e6f8b",
        "createdAt": "2026-08-10T09:31:12Z"
    }
}
Modified at 2026-09-23 06:02:30
Previous
Get Payment Schemes
Next
Get Exchange Rate
Built with