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
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.
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.
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.
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