1. Order
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.
        POST
      • Retrieve the on-chain address to fund an order.
        GET
      • Retrieve the status and settlement detail of a payout order.
        GET
    • 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
      • List Withdrawal Purposes
      • Get Payment Schemes
      • Execute Withdrawal
  • 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. Order

Submit a payout order to send money to a beneficiary.

POST
/api/v1/payments/order
Returns 202 Accepted — a payout settles asynchronously, so poll the order status or
subscribe to webhooks for the outcome. Send X-Idempotency-Key to make retries
safe; without it the server generates a key per request, which gives no de-duplication
across retries. Include the quoteId from a prior quote to settle at a locked rate.
Prerequisites: the customer must have an enabled payout-currency section for the destination currency (see Onboarding), an accepted terms-of-service where applicable, and a valid beneficiaryId.
Important: always send X-Idempotency-Key — a distinct value per logical attempt, reused only when retrying the same attempt. Without it, a network retry can create a duplicate payout.
Async vs sync: 202 Accepted. The order is queued, not settled. Poll GET /api/v1/payments/order/{orderId} for the outcome.
Related: lock a rate first with POST /api/v1/payments/quote; fund a crypto-backed order via GET .../getdepositaddress/{orderId}.

⚠️ Required Fields#

FieldTypeDescriptionConstraints
beneficiaryIdstring (uuid)Who is being paid. Named to match the /beneficiaries resource and the beneficiaryId route parameter; the legacy contract called this "payeeId".—
sourceobjectThe debit side of a payout order.—
source.amountnumber (double)Amount to send, in the source wallet's currency. The legacy contract called this "requestedAmount"; the qualifier carried no meaning the grouping does not already give.min 0.0001

Optional Fields#

FieldTypeDescriptionConstraints
productIdstring (uuid)The payout product. Determines the corridor and which provider executes the payout.nullable
quoteIdstringQuote id from a prior POST v1/quotes call. Supply it when the corridor requires a locked rate, so the order settles at the price the quote returned.nullable
source.currencystringThe crypto currency the payout is funded from, as an asset code (e.g. "USDT") — not a wallet id. This surface deliberately takes no wallet id: partners on it have not taken the wallets module, so their customers own no wallet rows to name. The funding wallet is the tenant's pooled row for this currency (Member.CustomerWalletMaster.IsMerchantAccount = 1); its id and its available balance are both resolved server-side from the code sent here, which is why the legacy "customerWalletId" field is gone rather than merely optional. Optional. When omitted the payout product's own asset code is used, so a partner that only ever pays out in the product's asset need not send it. When supplied it must BE the product's asset: a code naming a different asset is rejected rather than debiting a pooled wallet other than the one the order is priced and executed against.nullable
destinationobjectThe credit side of a payout order.—
destination.currencystringISO currency the beneficiary receives. The legacy contract called this "fiatCurrency", which named an implementation detail rather than the party it describes.nullable
paymentobjectHow the payout is routed to the beneficiary.—
payment.typestringPayment method for the payout leg.nullable
complianceobjectRegulatory context for the transfer. Codes come from the lookup endpoints — purpose from GET v1/purpose/{currency}, source of funds from GET v1/sourceoffunds, and relationship from GET v1/relationships.—
compliance.purposeCodestringWhy the payment is being made (e.g. "payment_for_services").nullable
compliance.sourceOfFundsCodestringWhere the funds originated (e.g. "advance_from_shareholder").nullable
compliance.beneficiaryRelationshipstringThe sender's relationship to the beneficiary.nullable

📤 Response Fields#

202 response:
FieldTypeNullableDescription
dataobjectNoResult of creating a payout order.
data.transactionIdstring (uuid)NoOur internal order id. Use this to poll GET /order/{orderId} or match webhook events.
data.txIdstringYesProvider-side transaction reference, if assigned synchronously at submission time.
data.statusstringYesInitial order status immediately after submission — typically pending or processing. See the status table above.
data.amountnumber (double)YesAmount accepted for the order, in the source currency.
data.createdAtstring (date-time)YesWhen the order was created.
requestIdstringYes—
timestampstring (date-time)No—

Request

Query Params

Header Params

Body Params
application/json-patch+json

Examples

Responses

🟢202
application/json
Accepted
Bodyapplication/json

🟠401
🟠403
🟠422
🟠429
Request Request Example
Shell
JavaScript
Java
Swift
cURL
curl --location '/api/v1/payments/order?customerId=c1f4a9d2-6b3e-4a7c-9f1d-2e8b5c0a7d31' \
--header 'X-Idempotency-Key: 6f1a9c0e-2b7d-4c31-9f8a-1d5e7c3b0a42' \
--header 'X-API-Key: ak_live_8f3a9b2c7e1d4f6a9b0c2d5e8f1a3b6c' \
--header 'X-Signature: kZ3fQeT2m7xVvC9pR1sLdY8bN0hU4jK6oW5aE2gI7cQ=' \
--header 'X-Timestamp: 1758556800' \
--header 'X-Nonce: 3fa85f64-5717-4562-b3fc-2c963f66afa6' \
--header 'X-Body-Hash: 47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=' \
--header 'Content-Type: application/json-patch+json' \
--data '{
    "productId": "b4d1e7f2-3a9c-4e6b-8d0a-1f7c2b9e4a63",
    "quoteId": "qte_9a3f7c1e5b8d4a2f6c0e3b9d1a7f5c8e",
    "beneficiaryId": "e9c2a7d4-5b8f-4c1e-9a3d-6f0b1c8e2d47",
    "source": {
        "currency": "USDT",
        "amount": 5000
    },
    "destination": {
        "currency": "EUR"
    },
    "payment": {
        "type": "bank_transfer"
    },
    "compliance": {
        "purposeCode": "payment_for_services",
        "sourceOfFundsCode": "business_revenue",
        "beneficiaryRelationship": "supplier"
    }
}'
Response Response Example
202 - Success
{
    "data": {
        "transactionId": "7a2e4c9b-1f6d-4a3e-8c7b-9d0f2a5e6b18",
        "txId": null,
        "status": "pending",
        "amount": 5000,
        "createdAt": "2026-09-22T14:02:47Z"
    },
    "requestId": "req_4f9a2c7e1b8d3f6a9c2e0b7d1f8a3c6e",
    "timestamp": "2026-09-22T14:03:11Z"
}
Modified at 2026-09-22 10:35:55
Previous
Create an FX quote giving the rate and fee for a cross-currency payout.
Next
Retrieve the on-chain address to fund an order.
Built with