Skip to content

Quotes & payments

v2 is supported and not deprecated, with no sunset date. New integrations should use v3.

Payment

Request

Execute payment to beneficiary with specified bank details.

Security
bearerAuth
Bodyapplication/jsonrequired
countrystring(Country)required

ISO 3166-1 alpha-3 Country Code

Enum:"BGD""EGY""IND""NGA""NPL""PAK""PHL""VNM"
Discriminator
Value:"BGD"
currencystring(CurrencyCode)required

Source currency. Must be the currency of the quote in quote; the amount is converted to the local currency at that quote's rate.

Enum:"BHD""EUR""KWD""MYR""OMR""QAR""SAR""SGD""TRY""AED"
quotestring, (uuid)(Quote)required

Valid currency quote id (UUID4) as returned by POST /v2/quote. Quote currency must match base currency.

amountnumber, > 0(Amount)required

The payout amount, in the DESTINATION (local) currency - INR for country=IND, PKR for PAK, and so on. Send the amount_destination value returned by POST /v2/quote verbatim; do not recompute it. Note the naming trap: amount is the SOURCE amount on POST /v2/quote and the DESTINATION amount here. The value is rounded to 2 decimal places and must fall inside the quote's min_amount_destination / max_amount_destination band, which is the only amount check performed - a value outside the band is a 400.

bank_namestring(Bank Name)required

Bank name where the beneficiary account is held.

beneficiary_namestring, <= 128 characters(Beneficiary Name)required

Full name of the beneficiary (name and surname).

beneficiary_citystring(Beneficiary City)required

Beneficiary address (city)

beneficiary_addressstring, <= 70 characters(Beneficiary Address)required

Beneficiary address (street and number)

beneficiary_account_numberstring(Beneficiary Account Number)required

Bank account id of the beneficiary. The same value POST /v2/validate_account takes as account_number.

beneficiary_mobilestring or null(Beneficiary Mobile)
Any of:

Beneficiary mobile number in ITU E.164 format: the destination country's calling-code prefix followed by the national number, with no spaces, hyphens or parentheses.

string
beneficiary_emailstring or null(Beneficiary Email)
Any of:

If specified, must be a valid email address

string (email)
remarksstring or null(Remarks)
Any of:

Supplementary info and notes for tracking the transaction.

string
sender_namestring(Sender Name)required

Full name of Sender (name and surname)

sender_birthdatestring or null(Sender Birthdate)
Any of:

Sender birthdate

string (date)
sender_identity_doc_expstring or null(Sender Identity Doc Exp)
Any of:

Expiry date for the sender identity document

string (date)
sender_identity_doc_countrystring or null(Sender Identity Doc Country)
Any of:

Sender country (nationality) (ISO 3166-1 alpha-3 Country Code)

= 3 characters
string
sender_citystring(Sender City)required

Sender residency/address (city)

sender_addressstring, <= 70 characters(Sender Address)required

Sender residency/address (street and number)

sender_countrystring, = 3 characters(Sender Country)required

Sender residency/country (ISO 3166-1 alpha-3 Country Code)

sender_mobilestring or null(Sender Mobile)
Any of:

Sender mobile number (ITU E.164 format)

string
sender_relationstring(Relation)required

What the beneficiary is to the sender: father means the beneficiary is the sender's father. Use own for a transfer to the sender's own account.

Enum ValueDescription
inlaws

The beneficiary is a relative by marriage.

other

None of the listed relations.

own

The beneficiary is the sender: a transfer to the sender's own account. Use this value.

self

Same as own; accepted for compatibility.

external_idExternalIdStr (string) or null
Any of:

Unique ID provided by API user. Alphanumerics and -, _, ., # only.

[ 1 .. 128 ] characters
string(ExternalIdStr)
timestampstring or null(Timestamp)
Any of:

Timestamp of the order (will be filled in automatically server side)

string (date-time)
beneficiary_account_typestring(BankAccountType)

Bank account type

Default:"savings"
Enum:"savings""current"
bank_branch_codestring(Bank Branch Code)required

SWIFT / BIC code of the beneficiary bank branch

sender_identity_doc_typestring(IdentityDocumentType)required

Sender identity document type

Enum ValueDescription
idcard

A national identity card, issued by the sender's country of citizenship.

other

Any other government-issued identity document.

passport

A passport.

resident_card

A residence identity card, issued by the sender's country of residence.

sender_identity_docstring(Sender Identity Doc)required

Sender identity document number

curl -i -X POST \
  https://docs.leanx.me/_mock/openapi/v2/payment \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "amount": 100,
    "bank_branch_code": "ABBLBDDH201",
    "bank_name": "Bangladesh Bank",
    "beneficiary_account_number": "9934572443993487",
    "beneficiary_account_type": "savings",
    "beneficiary_address": "Main Road",
    "beneficiary_city": "Dhaka",
    "beneficiary_email": "bashir.ahmed@domain.com",
    "beneficiary_mobile": "+8801700000000",
    "beneficiary_name": "Bashir Ahmed",
    "country": "BGD",
    "currency": "AED",
    "quote": "00000000-0000-4000-A000-000000000000",
    "remarks": "test",
    "sender_address": "Jumeirah Beach Road",
    "sender_birthdate": "1970-01-01",
    "sender_city": "Dubai",
    "sender_country": "ARE",
    "sender_identity_doc": "A987654",
    "sender_identity_doc_country": "ARE",
    "sender_identity_doc_exp": "2038-01-19",
    "sender_identity_doc_type": "idcard",
    "sender_mobile": "+9715850185684",
    "sender_name": "Ahmed Ahmed",
    "sender_relation": "other"
  }'

Responses

Successful Response

Bodyapplication/json
idstring, (uuid)(Id)required

Payment id, as returned by POST /v2/payment.

timestampstring, (date-time)(Timestamp)required

When this status was recorded (UTC).

statusstring(PaymentOrderState)required

Payment state. Release funds to your customer only on succeeded.

Enum:"queued""rejected""pending""processing""succeeded""failed""canceled""unknown""reversed"
msgstring or null(Msg)
Any of:

Free-text processing message. Not a failure reason; do not parse it.

string
amountnumber or null(Amount)
Any of:

Payout amount, in amount_currency.

number
amount_currencyDestinationCurrency (string) or null
Any of:

Payout (destination) currency.

string(DestinationCurrency)
Enum:"BDT""INR""PKR""PHP""NPR""EGP""VND""NGN"
base_amountnumber or null(Base Amount)
Any of:

Source amount from the quote, in base_currency.

number
base_currencyCurrencyCode (string) or null
Any of:

Source currency from the quote.

string(CurrencyCode)
Enum:"BHD""EUR""KWD""MYR""OMR""QAR""SAR""SGD""TRY""AED"
wallet_amountnumber or null(Wallet Amount)
Any of:

The payout converted to wallet_currency at the quote's wallet_rate. Premium and transaction cost are reported separately.

number
wallet_currencyStableCoin (string) or string or null(Wallet Currency)
Any of:

A coin a balance can be denominated in.

Despite the name, not every member is dollar-pegged. Payouts settle in USDT or USDC today; ETH is accepted by the type but no provider settles in it.

string(StableCoin)
Enum:"USDT""USDC""ETH"
wallet_premiumnumber or null(Wallet Premium)
Any of:

Premium charged, in wallet_currency.

number
wallet_txn_costnumber or null(Wallet Txn Cost)
Any of:

Transaction cost charged, in wallet_currency.

number
bank_referencestring or null(Bank Reference)
Any of:

Bank or processor reference for the transfer, when available.

string
Response
{ "id": "00000000-0000-4000-A000-000000000000", "msg": "OK", "status": "queued", "timestamp": "2024-12-01T01:02:03.000000Z" }