Create a Transaction

Read for details on creating transaction

This API can be used to initiate a transfer. A transaction can be created only after the following criteria are fulfilled.

  • Sender's KYC status is other than UNVERIFIED or SUSPENDED.

  • At least one sender funding account has been added by the sender.

  • At least one Recipient has been added.

For transactions with funding_source=BANK, a sender funding account with type=BANK must be verified and active. For transactions with funding_source=CARD, a sender funding account with type=CARD must be active.

For transaction amount delivery, the recipient can either receive the amount directly in their bank account i.e. payout_method=BANK_DEPOSIT, get the amount deposited in their wallet i.e. payout_method= WALLET get the amount delivered to the recipient’s address i.e. payout_method = HOME_DELIVERY, or the recipient can pickup the amount from various payout locations i.e. payout_method=CASH_PICKUP.

For payout_method=BANK_DEPOSIT, the recipients bank account information must be added and for payout_method=WALLET, the recipient wallet account information must be added. However, for payout_method=CASH_PICKUP and payout_method = HOME_DELIVERY, the payer_id must be specified during transaction creation. You can get the list the payers available for the recipient's country through the payers API.

Supports Idempotency Key as part of header to avoid duplicate transaction.

POST /v2/senders/{{senderId}}/transactions

Supports Idempotency Key as part of header to avoid duplicate transaction. If you are creating a transaction with the same request and the same idempotency key again, the endpoint will consider this a duplicate request. It will not create a new transaction but will instead provide details of the initial transaction in the response.

Response

200 if a transaction is successfully created or transaction with the same idempotency key and request was created earlier

400 if the idempotency key is greater than 255 char

409 if the idempotency key is the same but the request is different

Field
Required
Type
Description

senderId

Yes, in URL

UUID

Sender ID

sender_funding_account_id

Yes

UUID

Sender's Funding Account ID

sender_amount

Yes

number

Amount sender wants to send

fee_amount

Yes

number

Transaction fee to be charged to the sender

bonus_amount

No

number

ip_address

Yes

String

IP address used to create the transaction

recipient_id

Yes

UUID

Recipient's ID

recipient_account_id

No

UUID

Recipient's Account ID. Recipient account can be recipient bank account or recipient wallet account.

funding_source

No

String

Enumerated Value: BANK or CARD. It should be based on the sender funding account type. For now, default value =BANK

payer_id

No

long

Payer ID. Required if payout_method=CASH_PICKUP or HOME_DELIVERY.

payout_method

No

String

Enumerated Value: CASH_PICKUP or BANK_DEPOSIT or WALLET or HOME_DELIVERY. Payout method for transaction amount delivery. Default value =BANK_DEPOSIT

exchange_rate

Yes

number

Exchange rate used in transaction. Accepts upto 4 decimal digits.

recipient_amount

Yes

number

Amount that recipient receives

recipient_currency

Yes

String

Currency of recipient currency

remittance_purpose

Yes

String

Purpose of remittance

note

No

String

Note.

remarks

No

String

Remarks.

calculation_mode

No

String

Enumerated value : SENDER_AMOUNT, RECEIVER_AMOUNT

Default is SENDER_AMOUNT

Calculation Mode

There are two calculation modes available while creating a transaction. These modes are based on which amount (sending or receiving) the system will take as a base for the calculation.

  1. SENDER_AMOUNT: When a transaction is created with this calculation mode, you will pass the sending amount and exchange rate through the Transaction API. The receiving amount is calculated based on the provided sending amount and exchange rate. The default calculation mode is SENDER_AMOUNT.

  2. RECEIVER_AMOUNT: When a transaction is created with this calculation mode, you will pass the total receiving amount, sending amount, and exchange rate through the Transaction API. We will then calculate the sending amount based on the provided receiving amount and exchange rate.

    The calculated sending amount will then be compared with the sending amount you have provided in the request. If the difference between the calculated sending amount and the sending amount provided by you in the API request is greater than $0.01, the transaction API will provide the following error message.

    {
      "test_field": "test_value",
      "status": 400,
      "message": "Sender amount is not equivalent with recipient amount."
    }

    For example, if the exchange rate today for USD to MEX, is 26.77 and the recipient_amount is 946, the sender amount would be 943/26.77 = 35.338. Since our API will take the difference up to $0.01, $35.34, would be accepted for a successful transaction.

Last updated