Introduction
Purpose
The purpose of this document is to describe the various interfaces available on the TerraPay network for international money remittances and the associated services and transaction flows.
Scope
The Scope of this document is to give a detailed explanation on the APIs that are hosted on the TerraPay network and how partners can use these APIs to integrate into TerraPay to send transactions.
Audience
This document is to be used by
TerraPay technical team
Partner technical team
Acronyms and Abbreviations
Acronyms | Abbreviations |
---|---|
IMT | International Money Transfer |
AML | Anti Money Laundering |
CFT | Counter Financing of Terrorism |
JSON | JavaScript Object Notation |
XML | Extended Markup Language |
HTTPS | Secure Hyper Text Transfer Protocol |
POC | Proof of Concept |
TPS | Transactions Per Second |
SOAP | Simple Object Access Protocol |
VPN | Virtual Private Network |
S2S | Site to Site |
MNO | Mobile Network Operator |
MTO | Money Transfer Operator |
MMO | Mobile Money Operator |
FOREX | Foreign Exchange Rate |
SRC | Source |
DST | Destination |
MSISDN | Mobile Station International Subscriber Directory Number |
Bank A/C | Bank Account |
IBAN | International Bank Account Number |
IFSC | Indian Financial System Code |
SWIFT | Society of Worldwide Interbank Financial Telecommunication |
SEPA | Single EURO Payments Area |
BIC | Bank Identifier Code |
KYC | Know Your Customer |
MNP | Mobile Number Portability |
AWS | Amazon Web Services |
DMZ | De-Militarized Zone |
RDS | Relational Database Service (AWS) |
REST | Representational State Transfer |
GMT | Greenwich Mean Time |
GSMA | GSM Association |
LEI | Legal Entity Identifier |
Assumptions
- The send partner system will provide and manage the necessary interfaces required by the sender to create an international money transfer request.
- The send partner system will integrate with TerraPay APIs to access the services provided.
- TerraPay will integrate with receiving partner APIs to delivery funds to the beneficiary.
- The sender is a registered subscriber on the sending partner system.
- The beneficiary is a registered subscriber on the receiving partner system.
- A partner should validate a subscriber with appropriate KYC documents.
- Connectivity between the partner network and TerraPay network can be over S2S VPN or by white listing of IPs
- The S2S VPN tunnel provides a secure and encrypted connection between the partner's system and TerraPay's system.
- The partner system will use the TerraPay HTTPS/JSON based API integration with the TerraPay system.
- TerraPay will provide a secure SSL certificate to the sender partner to use for APIs connecting into the TerraPay system.
- The receiving partner will provide a secure SSL certificate to use for APIs connecting into the receiver partner system.
- In order to provide good end user experiences the response times to API requests should be as low as possible
- All timestamps on the TerraPay system are in UTC.
Connectivity, Staging & Production
The TerraPay system is hosted on AWS across regions where available. A partner connecting to the TerraPay system will connect to the nearest AWS region which is in close proximity to the partner network. The TerraPay system is hosted as primary (PR) site, disaster recovery (DR) site and geographic redundancy (GR) site. TerraPay will connect to partner DR and GR systems to ensure service is not impacted when primary site is down.
Partner systems are allowed access to the TerraPay network through a secure VPN tunnel. This will be set up in both the PR and DR setups. Each of these will have two VPN tunnels, active and standby.
All the API interfaces between TerraPay and partner will be on HTTPS. TerraPay's inbound APIs are protected with a CA issued SSL certificate. Partner must also secure a CA issued SSL certificate for all APIs.
Partners integrate with TerraPay on the EIG (External Interface Gateway) which is hosted in the DMZ (De-Militarized Zone) of the TerraPay network. Access to all inbound and outbound APIs will be provided on the TerraPay staging system for integration testing. After API testing and validations are done then partners will be migrated to live production systems.
Services
The services offered by the TerraPay system can be broadly classified into:
- Remit to Mobile
- Remit to Bank
Remit to Mobile
This service enables the sender to instantly send money to a beneficiary's mobile number. The money is credited to a payment instrument associated with the beneficiary's mobile number. This could be a mobile network operator wallet, a mobile money operator wallet, a bank wallet or a bank account which is mapped to the mobile number. TerraPay automatically routes the transaction through the available payment instrument.
A sender can initiate the money transfer from a mobile wallet, bank account or cash over the counter. This depends on the interfaces provided by the sending partner.
Remit to Bank
This service enables the sender to send money to a beneficiary's bank account. The money is credited to the beneficiary's bank account.
The sender can initiate the money transfer from a wallet, bank account or cash over the counter. This depends on the interfaces provided by the sending partner.
TerraPay APIs
This section describes the TerraPay API suite available for integration by send partners. These APIs allow send partners to use the services offered by TerraPay as described above. Before getting into the API details, the following section describes in brief the steps that are to be performed to exeucte a remittance transaction.
Basic Transaction Steps
- Sender initiates a transaction from ,
- A registered Mobile Wallet
- An active Bank Account
- At a MTO agent
- The sender provides the beneficiary mobile number that will receive the funds for remittances to mobile wallet.
- The sender provides the beneficiary bank account details that will receive funds for remittances to bank accounts.
- Sending partner forwards the beneficiary mobile number/bank account to TerraPay to validate if the beneficiary can receive funds.
- TerraPay validates if the beneficiary mobile number is associated with a valid payment instrument and if that instrument is active and can receive funds for remittances to mobile wallets.
- TerraPay validates if the bank is supported and the banking details provided are correct for remittances to bank accounts.
- In addition where ever the receiving partner can provide the beneficiary name, TerraPay does name matching using a propriety fuzzy logic algorithm.
- If the validation is successful then the sender proceeds to the next step whic is to initiate a quote request.
- Sender provides the amount to be transferred. TerraPay will process the quote and provide the sender with the foreign exchange rate and the amount the beneficiary will receive.
- Sender then confirms the transaction.
- TerraPay validates the transaction and sends a request to the receiving partner to credit the amount to beneficiary mobile number or bank account
NOTE: All API calls to the TerraPay Network should include the following HTTP Headers
X-USERNAME: "partnerUserName"
X-PASSWORD: "partnerPassWord"
X-DATE: "YYYY-MM-DD HH:mm:ss"
X-ORIGINCOUNTRY: "Country Code in which the transaction is created. ISO Alpha 2 standard"
X-USERNAME, X-PASSWORD (SHA256 encoded) values will be shared with the Partner during the on boarding process on test and production environments separately. Username and Password is always case-insensitive.
Inbound
The Inbound APIs will be used by sending partners to integrate with TerraPay to send transaction requests.
View Account Status
The Accounts Status API validates the status of the beneficiary wallet or bank account and also matches the name of the beneficiary provided by the sender with the name of the beneficiary registered on the wallet or the bank account. This service is available only in corridors where the receiving partner provides details of the beneficiary account such as the account state and beneficiary name. In cases where this information is not available TerraPay does basic validation on the mobile number and bank account format. The status enables the client to determine whether transactions can be received on the beneficiary account
View Account Status of a Mobile Wallet Try it
View Account Status of a Mobile Wallet
curl --location --request GET 'https://uat-connect.terrapay.com:21211/eig/gsma/accounts/msisdn/+9779840002320/status?bnv=David Robinson' \
--header 'X-USERNAME: terrapayuser' \
--header 'X-PASSWORD:101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b' \
--header 'X-DATE: 2017-05-03 11:00:00' \
--header 'X-ORIGINCOUNTRY: US'
var myHeaders = new Headers();
myHeaders.append("X-USERNAME", "terrapayuser");
myHeaders.append("X-PASSWORD", "101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b");
myHeaders.append("X-DATE", "2018-04-04 09:27:16");
myHeaders.append("X-ORIGINCOUNTRY", "US");
var requestOptions = {
method: 'GET',
headers: myHeaders,
redirect: 'follow'
};
fetch("https://uat-connect.terrapay.com:21211/eig/gsma/accounts/msisdn/+9779840002320/status?bnv=David Robinson", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
import requests
url = "https://uat-connect.terrapay.com:21211/eig/gsma/accounts/msisdn/+9779840002320/status?bnv=David Robinson"
payload={}
headers = {
'X-USERNAME': 'terrapayuser',
'X-PASSWORD': '101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b',
'X-DATE': '2018-04-04 09:27:16',
'X-ORIGINCOUNTRY': 'US'
}
response = requests.request(""GET"", url, headers=headers, data=payload)
print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
Request request = new Request.Builder()
.url("https://uat-connect.terrapay.com:21211/eig/gsma/accounts/msisdn/+9779840002320/status?bnv=David Robinson")
.method("GET", null)
.addHeader("X-USERNAME", "terrapayuser")
.addHeader("X-PASSWORD", "101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b
")
.addHeader("X-DATE", "2018-04-04 09:27:16")
.addHeader("X-ORIGINCOUNTRY", "US")
.build();
Response response = client.newCall(request).execute();
require "uri"
require "net/http"
url = URI("https://uat-connect.terrapay.com:21211/eig/gsma/accounts/msisdn/+9779840002320/status?bnv=David Robinson")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-USERNAME"] = "terrapayuser"
request["X-PASSWORD"] = "101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b
"
request["X-DATE"] = "2018-04-04 09:27:16"
request["X-ORIGINCOUNTRY"] = "US"
response = https.request(request)
puts response.read_body
Success Response:
{
"status":"available",
"subStatus":"6000:Beneficiary MSISDN Validation Success",
"lei":""
}
Failure Response :
{
"error":
{
"errorCategory":"authorisation",
"errorCode":"1003",
"errorDescription":"Authentication failed. Username or Password is incorrect.",
"errorDateTime":"2017-05-02 11:00:00"
}
}
{
"error":
{
"errorCategory":"businessRule",
"errorCode":"6008",
"errorDescription":"Beneficiary name does not match",
"errorDateTime":"2017-05-02 11:00:00"
}
}
URL
https://uat-connect.terrapay.com:21211/eig/gsma/accounts/msisdn/{msisdn}/status?bnv={beneficiaryName}&provider={provider}&snv={senderName}
HTTP Request
GET /eig/gsma/accounts/msisdn/+234xxxxxxxxx/status?bnv=John%20Smith&provider=23401&snv=David%20Robinson HTTP/1.1
Request Parameters
Parameter | Description | Data type | Requirement | Field Length |
---|---|---|---|---|
msisdn | Beneficiary MSISDN with country code. This corresponds to the mobile wallet to which funds are to be transferred. Eg. +91xxxxxxxxxx | String | Mandatory | 10-18 |
bnv | Full name of the beneficiary as registered with the wallet provider. This should be the complete name as per the KYC document provided during the registration process. | String | Mandatory | 1-50 |
snv | Full name of the sender as registered with the sender partner. This should be the complete name as per the KYC document provided during the registration process. | String | Optional | 1-50 |
provider | This is a code which indicates the mobile wallet to which the transaction is to be sent. This field is conditional.If not set, TerraPay will automatically find the mobile wallet that the mobile number belongs to. The first preference will be for mobile wallets operated by mobile network operators (MNOs). The next preferences will be for mobile wallets operated by other PSPs.If set, then TerraPay will validate the mobile number against the mobile wallet operator specified. In case the provider code does not match the mobile wallet operator the validation will be rejected.NOTE: Mandatory for non-telco walletes. Optional for telco wallets. | Numeric | Conditional | 5-12 |
View Account Status of a Bank Account Try it
View Account Status of a Bank Account
curl --location --request GET 'https://uat-connect.terrapay.com:21211/eig/gsma/accounts/232201001617/status?bnv=Devki%20Luggage%20Centre&bankname=Canara%20Bank&country=IN&bankcode=CNRB0000232' \
--header 'X-USERNAME: terrapayuser' \
--header 'X-PASSWORD: 101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b' \
--header 'X-DATE: 2020-01-02 10:51:16' \
--header 'X-ORIGINCOUNTRY: US' \
--header 'Content-Type: application/json'
var myHeaders = new Headers();
myHeaders.append("X-USERNAME", "terrapayuser");
myHeaders.append("X-PASSWORD", "101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b");
myHeaders.append("X-DATE", "2018-04-04 09:27:16");
myHeaders.append("X-ORIGINCOUNTRY", "US");
var raw = "";
var requestOptions = {
method: 'GET',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("https://uat-connect.terrapay.com:21211/eig/gsma/accounts/50100002965304/status?bnv=Deepa%20Jain&bankcode=HDFC0001626&bankname=HDFC%20Bank&country=IN", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
import requests
url = "https://uat-connect.terrapay.com:21211/eig/gsma/accounts/50100002965304/status?bnv=Deepa%20Jain&bankcode=HDFC0001626&bankname=HDFC%20Bank&country=IN"
payload = ""
headers = {
'X-USERNAME': 'terrapayuser',
'X-PASSWORD': '101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b',
'X-DATE': '2018-04-04 09:27:16',
'X-ORIGINCOUNTRY': 'US'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
Request request = new Request.Builder()
.url("https://uat-connect.terrapay.com:21211/eig/gsma/accounts/50100002965304/status?bnv=Deepa%20Jain&bankcode=HDFC0001626&bankname=HDFC%20Bank&country=IN")
.method("GET", null)
.addHeader("X-USERNAME", "terrapayuser")
.addHeader("X-PASSWORD", "101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b")
.addHeader("X-DATE", "2018-04-04 09:27:16")
.addHeader("X-ORIGINCOUNTRY", "US")
.build();
Response response = client.newCall(request).execute();
require "uri"
require "net/http"
url = URI("https://uat-connect.terrapay.com:21211/eig/gsma/accounts/50100002965304/status?bnv=Deepa%20Jain&bankcode=HDFC0001626&bankname=HDFC%20Bank&country=IN")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-USERNAME"] = "terrapayuser"
request["X-PASSWORD"] = "101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b"
request["X-DATE"] = "2018-04-04 09:27:16"
request["X-ORIGINCOUNTRY"] = "US"
response = https.request(request)
puts response.read_body
Success Response:
{
"status":"available",
"subStatus":"6000:Beneficiary Bank Account Validation Success",
"lei":""
}
Failure Response :
{
"error":
{
"errorCategory":"authorisation",
"errorCode":"1003",
"errorDescription":"Authentication failed. Username or Password is incorrect.",
"errorDateTime":"2017-05-02 11:00:00"
}
}
{
"error":
{
"errorCategory":"businessRule",
"errorCode":"6008",
"errorDescription":"Beneficiary name does not match",
"errorDateTime":"2017-05-02 11:00:00"
}
}
URL
https://uat-connect.terrapay.com:21211/eig/gsma/accounts/{accountId}/status?bnv={beneficiaryName}&bankcode={bankcode}&bankname={bankname}&country={country}&msisdn={msisdn}&provider={provider}&snv={sendername}&banksubcode={banksubcode}&accounttype={accounttype}&beneficiaryidtype={beneficiaryidtype}&idnumber={idnumber}
HTTP Request
GET /eig/gsma/accounts/232698745623/status?bnv=John%20Smith&bankcode=CBKEKENX&bankname=CENTRAL%20BANK%20OF%20KENYA&country=US&provider=2549008&snv=David%20Robinson HTTP/1.1
Request Parameters
Parameter | Description | Data type | Requirement | Field Length |
---|---|---|---|---|
accountId | Beneficiary bank account or IBAN number as applicable and required in the destination country for receiving funds. Eg. 2365417895 or AT483200000012345864. | String | Mandatory | 5-50 |
bnv | Full name of the beneficiary as registered with the bank. This should be the complete name as per the KYC document provided during the registration process. | String | Mandatory | 1-50 |
snv | Full name of the sender as registered with the sender partner. This should be the complete name as per the KYC document provided during the registration process. | String | Optional | 1-50 |
bankcode | Bank Code as required in the destination Country. It is the IFSC code for India and Swift BIC for all other countries. Note: Mandatory/Optional requirement of this field is destination country specific. | String | Conditional | 4-25 |
bankname | Full name of the beneficiary bank | String | Mandatory | 4-60 |
country | ISO Alpha 2 country code of the destination country. Eg. NG for Nigeria | String | Mandatory | 2 |
msisdn | Beneficiary mobile number with country code.Note: Mandatory/Optional requirement of this field is destination country specific. | String | Conditional | 10-18 |
provider | This is a code that indicates the bank to which the transaction is to be sent.This field is conditional.If not set, then TerraPay will resolve the bank based on the bankcode. If the bankcode is incorrectly provided, then the bank will be resolved based on bank name (should match exactly as per the bank list shared by TerraPay over API). If these parameters do no match then the transaction will be rejected.If set, then TerraPay will resolve the bank based on the provider code.Note: Mandatory/Optional requirement of this field is destination country specific. | Numeric | Conditional | 7-12 |
banksubcode | This is a code that indicates the branch code of the specific bank to which the transaction is to be sent.Note: Mandatory/Optional requirement of this field is destination country specific. | String | Conditional | 11 |
accounttype | Type of the bank account. Supported account types:CheckingSavingsThe default account type for p2p transactions is Savings.Note: Mandatory/Optional requirement of this field is destination country specific. | String | Conditional | 5 |
beneficiaryidtype | Beneficiary's Id document type. | String | Optional | 3 |
idnumber | Beneficiary's Id document number. | String | Optional | 5 |
Response Parameters
Parameter | Description | Data type | Validation |
---|---|---|---|
status | Indicates the status of the account. If 'available' then the account can receive funds. If not then transactions sent to the account will fail. | String | Enumeration = available, unavailable, unregistered |
subStatus | Property can be used to return a provider-specific status for the account. | String | |
lei | Indicates the Legal Entity Identifier of the organization holding the account. | String | Length = 20, Regular Expression |
View Account Status of a Primary Account Number Try it
View Account Status of a Primary Account Number
curl --location --request GET 'https://uat-connect.terrapay.com:21211/eig/gsma/accounts/pan/status?bnv=MAGALI%20DOLORES%20ORTIZ&country=PH&cardtype=credit' \
--header 'X-USERNAME: terrapayuser' \
--header 'X-PASSWORD: 101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b' \
--header 'X-DATE: 2020-01-02 10:51:16' \
--header 'X-ORIGINCOUNTRY: US' \
--header 'X-PAN: O+UJqWvJ3YFqUB0hWs3UkCE5/o7LyINi4egxdO8rZUZQjNrUCk+yWoAfKf+ifZSjDaTUd7yGvq2g7RhuRP6p5iWFH6PNCE85fmbi/YTwAxM4lnCMgg5UbrLxB632b1ZvgglboSNmj1VA9XnWOyDWxIsfyD1+OLjxoDBjfU0B2dAh3SJyyOsCjZEfNe+TtH6TygElhSUwBl0WgkRQzicE3GN3qyetIJU2LsXONHMplO3ZXKjGx7NPwtUgL9clXL+2t2WFo9Brh9wvaL3X4WtE8teqhryrTjqZ3OvKQgACyYY733sVWlhwV9i2/IPGcPijHQPmrMtT1L7ceL2mVpqckw==' \
--header 'Content-Type: application/json'
var myHeaders = new Headers();
myHeaders.append("X-USERNAME", "terrapayuser");
myHeaders.append("X-PASSWORD", "101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b");
myHeaders.append("X-DATE", "2018-04-04 09:27:16");
myHeaders.append("X-ORIGINCOUNTRY", "US");
myHeaders.append("X-PAN", "O+UJqWvJ3YFqUB0hWs3UkCE5/o7LyINi4egxdO8rZUZQjNrUCk+yWoAfKf+ifZSjDaTUd7yGvq2g7RhuRP6p5iWFH6PNCE85fmbi/YTwAxM4lnCMgg5UbrLxB632b1ZvgglboSNmj1VA9XnWOyDWxIsfyD1+OLjxoDBjfU0B2dAh3SJyyOsCjZEfNe+TtH6TygElhSUwBl0WgkRQzicE3GN3qyetIJU2LsXONHMplO3ZXKjGx7NPwtUgL9clXL+2t2WFo9Brh9wvaL3X4WtE8teqhryrTjqZ3OvKQgACyYY733sVWlhwV9i2/IPGcPijHQPmrMtT1L7ceL2mVpqckw==");
var raw = "";
var requestOptions = {
method: 'GET',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("https://uat-connect.terrapay.com:21211/eig/gsma/pan/status?bnv=MAGALI%20DOLORES%20ORTIZ&country=PH&cardtype=credit", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
import requests
url = "https://uat-connect.terrapay.com:21211/eig/gsma/accounts/pan/status?bnv=MAGALI%20DOLORES%20ORTIZ&country=PH&cardtype=credit"
payload = ""
headers = {
'X-USERNAME': 'terrapayuser',
'X-PASSWORD': '101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b',
'X-DATE': '2018-04-04 09:27:16',
'X-ORIGINCOUNTRY': 'US'
}
'X-PAN': 'O+UJqWvJ3YFqUB0hWs3UkCE5/o7LyINi4egxdO8rZUZQjNrUCk+yWoAfKf+ifZSjDaTUd7yGvq2g7RhuRP6p5iWFH6PNCE85fmbi/YTwAxM4lnCMgg5UbrLxB632b1ZvgglboSNmj1VA9XnWOyDWxIsfyD1+OLjxoDBjfU0B2dAh3SJyyOsCjZEfNe+TtH6TygElhSUwBl0WgkRQzicE3GN3qyetIJU2LsXONHMplO3ZXKjGx7NPwtUgL9clXL+2t2WFo9Brh9wvaL3X4WtE8teqhryrTjqZ3OvKQgACyYY733sVWlhwV9i2/IPGcPijHQPmrMtT1L7ceL2mVpqckw=='
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
Request request = new Request.Builder()
.url("https://uat-connect.terrapay.com:21211/eig/gsma/accounts/pan/status?bnv=MAGALI%20DOLORES%20ORTIZ&country=IN&cardtype=credit")
.method("GET", null)
.addHeader("X-USERNAME", "terrapayuser")
.addHeader("X-PASSWORD", "101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b")
.addHeader("X-DATE", "2018-04-04 09:27:16")
.addHeader("X-ORIGINCOUNTRY", "US")
.addHeader("X-PAN", "O+UJqWvJ3YFqUB0hWs3UkCE5/o7LyINi4egxdO8rZUZQjNrUCk+yWoAfKf+ifZSjDaTUd7yGvq2g7RhuRP6p5iWFH6PNCE85fmbi/YTwAxM4lnCMgg5UbrLxB632b1ZvgglboSNmj1VA9XnWOyDWxIsfyD1OLjxoDBjfU0B2dAh3SJyyOsCjZEfNe+TtH6TygElhSUwBl0WgkRQzicE3GN3qyetIJU2LsXONHMplO3ZXKjGx7NPwtUgL9clXL+t2WFo9Brh9wvaL3X4WtE8teqhryrTjqZ3OvKQgACyYY733sVWlhwV9i2/IPGcPijHQPmrMtT1L7ceL2mVpqckw==")
.build();
Response response = client.newCall(request).execute();
require "uri"
require "net/http"
url = URI("https://uat-connect.terrapay.com:21211/eig/gsma/accounts/pan/status?bnv=MAGALI%20DOLORES%20ORTIZ&country=IN&cardtype=credit")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-USERNAME"] = "terrapayuser"
request["X-PASSWORD"] = "101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b"
request["X-DATE"] = "2018-04-04 09:27:16"
request["X-ORIGINCOUNTRY"] = "US"
request["X-PAN"] = "O+UJqWvJ3YFqUB0hWs3UkCE5/o7LyINi4egxdO8rZUZQjNrUCk+yWoAfKf+ifZSjDaTUd7yGvq2g7RhuRP6p5iWFH6PNCE85fmbi/YTwAxM4lnCMgg5UbrLxB632b1ZvgglboSNmj1VA9XnWOyDWxIsfyD1OLjxoDBjfU0B2dAh3SJyyOsCjZEfNe+TtH6TygElhSUwBl0WgkRQzicE3GN3qyetIJU2LsXONHMplO3ZXKjGx7NPwtUgL9clXL+t2WFo9Brh9wvaL3X4WtE8teqhryrTjqZ3OvKQgACyYY733sVWlhwV9i2/IPGcPijHQPmrMtT1L7ceL2mVpqckw=="
response = https.request(request)
puts response.read_body
Success Response:
{
"status":"available",
"subStatus":"6000:Validation Success",
"lei":""
}
Failure Response :
{
"error":
{
"errorCategory":"authorisation",
"errorCode":"1003",
"errorDescription":"Authentication failed. Username or Password is incorrect.",
"errorDateTime":"2017-05-02 11:00:00"
}
}
{
"error":
{
"errorCategory":"businessRule",
"errorCode":"6008",
"errorDescription":"Beneficiary name does not match",
"errorDateTime":"2017-05-02 11:00:00"
}
}
URL
https://uat-connect.terrapay.com:21211/eig/gsma/accounts/pan/status?bnv={beneficiaryName}&country={country}&cardtype={cardtype}
HTTP Request
GET /eig/gsma/accounts/pan/status?bnv=MAGALI%20DOLORES%20ORTIZ&country=PH&cardtype=credit HTTP/1.1
X-PAN: O+UJqWvJ3YFqUB0hWs3UkCE5/o7LyINi4egxdO8rZUZQjNrUCk+yWoAfKf+ifZSjDaTUd7yGvq2g7RhuRP6p5iWFH6PNCE85fmbi/YTwAxM4lnCMgg5UbrLxB632b1ZvgglboSNmj1VA9XnWOyDWxIsfyD1OLjxoDBjfU0B2dAh3SJyyOsCjZEfNe+TtH6TygElhSUwBl0WgkRQzicE3GN3qyetIJU2LsXONHMplO3ZXKjGx7NPwtUgL9clXL+t2WFo9Brh9wvaL3X4WtE8teqhryrTjqZ3OvKQgACyYY733sVWlhwV9i2/IPGcPijHQPmrMtT1L7ceL2mVpqckw==
Request Parameters
Parameter | Description | Data type | Requirement | Field Length |
---|---|---|---|---|
bnv | Full name of the beneficiary as registered with the bank. This should be the complete name as per the KYC document provided during the registration process. | String | Mandatory | 1-50 |
country | ISO Alpha 2 country code of the destination country. Eg. NG for Nigeria | String | Mandatory | 2 |
cardtype | Beneficiary card type. Eg. credit/debit | String | Optional | 5-10 |
X-PAN | This HTTP header indicates beneficiary Primary Account number. The value is in encrypted format. TerraPay will share the public key. Partner need to encrypt PAN details using RSA/ECB/OAEPWithSHA-256AndMGF1Padding algorithm. | String | Mandatory | 512-1024 |
Response Parameters
Parameter | Description | Data type | Validation |
---|---|---|---|
status | Indicates the status of the account. If 'available' then the account can receive funds. If not then transactions sent to the account will fail. | String | Enumeration = available, unavailable, unregistered |
subStatus | Property can be used to return a provider-specific status for the account. | String | |
lei | Indicates the Legal Entity Identifier of the organization holding the account. | String | Length = 20, Regular Expression |
Create a Quotation
The quotations API is used to obtain the foreign exchange rate between a currency pair.
URI format is: /quotations
Create a Quotation to Mobile Wallet Try it
Create a Quotation to Mobile Wallet
curl --location --request POST 'https://127.0.0.1:21211/eig/gsma/quotations' \
--header 'X-DATE: 2020-01-02 10:51:16' \
--header 'X-ORIGINCOUNTRY: US' \
--header 'X-USERNAME: terrapayuser' \
--header 'X-PASSWORD: 101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b' \
--header 'Content-Type: application/json' \
--data-raw '{
"requestDate": "2020-01-02 10:51:16",
"debitParty": [
{
"key": "msisdn",
"value": "+4491509874561"
}
],
"creditParty": [
{
"key": "msisdn",
"value": "+256897378380"
}
],
"requestAmount": "100",
"requestCurrency": "USD",
"quotes": [
{
"sendingCurrency": "USD",
"receivingCurrency": "UGX"
}
]
}
var myHeaders = new Headers();
myHeaders.append("X-USERNAME", "terrapayuser");
myHeaders.append("X-PASSWORD", "101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b");
myHeaders.append("X-DATE", "2018-04-04 09:27:16");
myHeaders.append("X-ORIGINCOUNTRY", "US");
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({
"requestDate": "2017-06-20 12:27:16",
"creditParty": [
{
"key": "msisdn",
"value": "+9779840002320"
}
],
"requestAmount": "500",
"requestCurrency": "NPR",
"quotes": [
{
"sendingCurrency": "USD",
"receivingCurrency": "NPR"
}
]
});
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("https://uat-connect.terrapay.com:21211/eig/gsma/quotations", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
import requests
import json
url = "https://uat-connect.terrapay.com:21211/eig/gsma/quotations"
payload = json.dumps({
"requestDate": "2017-06-20 12:27:16",
"creditParty": [
{
"key": "msisdn",
"value": "+9779840002320"
}
],
"requestAmount": "500",
"requestCurrency": "NPR",
"quotes": [
{
"sendingCurrency": "USD",
"receivingCurrency": "NPR"
}
]
})
headers = {
'X-USERNAME': 'terrapayuser',
'X-PASSWORD': '101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b',
'X-DATE': '2018-04-04 09:27:16',
'X-ORIGINCOUNTRY': 'US',
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\r\n \"requestDate\": \"2017-06-20 12:27:16\",\r\n \"creditParty\": [\r\n {\r\n \"key\": \"msisdn\",\r\n \"value\": \"+9779840002320\"\r\n }\r\n ],\r\n \"requestAmount\": \"500\",\r\n \"requestCurrency\": \"NPR\",\r\n \"quotes\": [\r\n {\r\n \"sendingCurrency\": \"USD\",\r\n \"receivingCurrency\": \"NPR\"\r\n }\r\n ]\r\n}");
Request request = new Request.Builder()
.url("https://uat-connect.terrapay.com:21211/eig/gsma/quotations")
.method("POST", body)
.addHeader("X-USERNAME", "terrapayuser")
.addHeader("X-PASSWORD", "101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b")
.addHeader("X-DATE", "2018-04-04 09:27:16")
.addHeader("X-ORIGINCOUNTRY", "US")
.addHeader("Content-Type", "application/json")
.build();
Response response = client.newCall(request).execute();
require "uri"
require "json"
require "net/http"
url = URI("https://uat-connect.terrapay.com:21211/eig/gsma/quotations")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-USERNAME"] = "terrapayuser"
request["X-PASSWORD"] = "101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b"
request["X-DATE"] = "2018-04-04 09:27:16"
request["X-ORIGINCOUNTRY"] = "US"
request["Content-Type"] = "application/json"
request.body = JSON.dump({
"requestDate": "2017-06-20 12:27:16",
"creditParty": [
{
"key": "msisdn",
"value": "+9779840002320"
}
],
"requestAmount": "500",
"requestCurrency": "NPR",
"quotes": [
{
"sendingCurrency": "USD",
"receivingCurrency": "NPR"
}
]
})
response = https.request(request)
puts response.read_body
Success Response:
{
"requestDate": "2017-05-03 11:00:00",
"debitParty": [
{
"key": "msisdn",
"value": "+4491509874561"
}
],
"creditParty": [
{
"key": "msisdn",
"value": "+25691508523697"
}
],
"requestAmount": "100",
"requestCurrency": "USD",
"quotes": [
{
"quoteId": "QT037fQXs3LGWXea4",
"quoteExpiryTime": "2017-05-03 11:28:00",
"sendingAmount": "100.000000",
"sendingCurrency": "EUR",
"receivingAmount": "365217",
"receivingCurrency": "UGX",
"fxRate": "3652.173913"
}
],
"quotationReference": "QT037fQXs3LGWXea4",
"quotationStatus": "2000:Quote Success"
}
Failure Response :
{
"error": {
"errorCategory":"authorisation",
"errorCode":"1003",
"errorDescription":"Authentication failed. Username or Password is incorrect.",
"errorDateTime":"2017-05-02 11:00:00"
}
}
{
"error": {
"errorCategory":"businessRule",
"errorCode":"2001",
"errorDescription":"Source amount is invalid",
"errorDateTime":"2017-05-02 11:00:00"
}
}
{
"error": {
"errorCategory":"businessRule",
"errorCode":"2003",
"errorDescription":"Failed to get Forex rate",
"errorDateTime":"2017-05-02 11:00:00"
}
}
URL
https://uat-connect.terrapay.com:21211/eig/gsma/quotations
HTTP Request
POST /eig/gsma/quotations HTTP/1.1
Create a Quotation to Bank Account Try it
Create a Quotation to Bank Account
curl --location --request POST 'https://uat-connect.terrapay.com:21211/eig/gsma/quotations'\
--header 'X-DATE: 2020-01-02 10:51:16'\
--header 'X-ORIGINCOUNTRY: US' \
--header 'X-USERNAME: terrapayuser' \
--header 'X-PASSWORD: 101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b' \
--header 'Content-Type: application/json' \
--data-raw '{
"requestDate": "2017-05-03 11:00:00",
"debitParty": [
{
"key": "msisdn",
"value": "+4491509874561"
}
],
"creditParty": [
{
"key": "msisdn",
"value": "+25691508523697"
},
{
"key": "bankaccountno",
"value": "2356915085237"
},
{
"key": "receivingCountry",
"value": "NG"
}
],
"requestAmount": "100",
"requestCurrency": "EUR",
"quotes": [
{
"sendingCurrency": "EUR",
"receivingCurrency": "UGX"
}
]
}
var myHeaders = new Headers();
myHeaders.append("X-USERNAME", "terrapayuser");
myHeaders.append("X-PASSWORD", "101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b");
myHeaders.append("X-DATE", "2018-04-04 09:27:16");
myHeaders.append("X-ORIGINCOUNTRY", "US");
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({
"requestDate": "2017-06-20 12:27:16",
"creditParty": [
{
"key": "bankaccountno",
"value": "50100002965304"
},
{
"key": "receivingCountry",
"value": "IN"
}
],
"requestAmount": "500",
"requestCurrency": "INR",
"quotes": [
{
"sendingCurrency": "USD",
"receivingCurrency": "INR"
}
]
});
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("https://uat-connect.terrapay.com:21211/eig/gsma/quotations", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
import requests
import json
url = "https://uat-connect.terrapay.com:21211/eig/gsma/quotations"
payload = json.dumps({
"requestDate": "2017-06-20 12:27:16",
"creditParty": [
{
"key": "bankaccountno",
"value": "50100002965304"
},
{
"key": "receivingCountry",
"value": "IN"
}
],
"requestAmount": "500",
"requestCurrency": "INR",
"quotes": [
{
"sendingCurrency": "USD",
"receivingCurrency": "INR"
}
]
})
headers = {
'X-USERNAME': 'terrapayuser',
'X-PASSWORD': '101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b',
'X-DATE': '2018-04-04 09:27:16',
'X-ORIGINCOUNTRY': 'US',
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\r\n \"requestDate\": \"2017-06-20 12:27:16\",\r\n \"creditParty\": [\r\n {\r\n\t\t \"key\": \"bankaccountno\",\r\n\t\t \"value\": \"50100002965304\"\r\n\t\t},\r\n\t\t{\r\n\t\t\t\"key\": \"receivingCountry\",\r\n\t\t\t\"value\": \"IN\"\r\n\t\t}\r\n ],\r\n \"requestAmount\": \"500\",\r\n \"requestCurrency\": \"INR\",\r\n \"quotes\": [\r\n {\r\n \"sendingCurrency\": \"USD\",\r\n \"receivingCurrency\": \"INR\"\r\n }\r\n ]\r\n}");
Request request = new Request.Builder()
.url("https://uat-connect.terrapay.com:21211/eig/gsma/quotations")
.method("POST", body)
.addHeader("X-USERNAME", "terrapayuser")
.addHeader("X-PASSWORD", "101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b")
.addHeader("X-DATE", "2018-04-04 09:27:16")
.addHeader("X-ORIGINCOUNTRY", "US")
.addHeader("Content-Type", "application/json")
.build();
Response response = client.newCall(request).execute();
require "uri"
require "json"
require "net/http"
url = URI("https://uat-connect.terrapay.com:21211/eig/gsma/quotations")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-USERNAME"] = "terrapayuser"
request["X-PASSWORD"] = "101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b"
request["X-DATE"] = "2018-04-04 09:27:16"
request["X-ORIGINCOUNTRY"] = "US"
request["Content-Type"] = "application/json"
request.body = JSON.dump({
"requestDate": "2017-06-20 12:27:16",
"creditParty": [
{
"key": "bankaccountno",
"value": "50100002965304"
},
{
"key": "receivingCountry",
"value": "IN"
}
],
"requestAmount": "500",
"requestCurrency": "INR",
"quotes": [
{
"sendingCurrency": "USD",
"receivingCurrency": "INR"
}
]
})
response = https.request(request)
puts response.read_body
Success Response:
{
"requestDate": "2017-05-03 11:00:00",
"debitParty": [
{
"key": "msisdn",
"value": "+4491509874561"
}
],
"creditParty": [
{
"key": "msisdn",
"value": "+25691508523697"
},
{
"key": "bankaccountno",
"value": "2356915085237"
},
{
"key": "receivingCountry",
"value": "NG"
}
],
"requestAmount": "100",
"requestCurrency": "EUR",
"quotes": [
{
"quoteId": "QT037fQXs3LGWXea4",
"quoteExpiryTime": "2017-05-03 11:28:00",
"sendingAmount": "100.000000",
"sendingCurrency": "EUR",
"receivingAmount": "365217",
"receivingCurrency": "UGX",
"fxRate": "3652.173913"
}
],
"quotationReference": "QT037fQXs3LGWXea4",
"quotationStatus": "2000:Quote Success"
}
Failure Response :
{
"error": {
"errorCategory":"authorisation",
"errorCode":"1003",
"errorDescription":"Authentication failed. Username or Password is incorrect.",
"errorDateTime":"2017-05-02 11:00:00"
}
}
{
"error": {
"errorCategory":"businessRule",
"errorCode":"2001",
"errorDescription":"Source amount is invalid",
"errorDateTime":"2017-05-02 11:00:00"
}
}
{
"error": {
"errorCategory":"businessRule",
"errorCode":"2003",
"errorDescription":"Failed to get Forex rate",
"errorDateTime":"2017-05-02 11:00:00"
}
}
URL
https://uat-connect.terrapay.com:21211/eig/gsma/quotations
HTTP Request
POST /eig/gsma/quotations HTTP/1.1
Request Parameters
Parameter | Description | Data type | Requirement | Field Length |
---|---|---|---|---|
requestDate | The creation date and time of the transaction as supplied by the client in YYYY-MM-DD HH:mm:ss | DateTime | Mandatory | 19 |
requestAmount | Requested quotation amount with precision of 2 decimal places | String | Mandatory | 10,2 |
requestCurrency | Currency of the requestAmount provided in ISO 4217 format. Eg. EUR.If the requestCurrency is the source currency (EUR), then the requestAmount is taken as source amount and a forward quote is done so that the quote amount returned will be what the beneficiary will receive.If the requestCurrency is the destination currency (UGX), then the requestAmount is taken as destination amount what the beneficiary wil receive and a reverse quote is done so that the quote amount returned will be what the sender has to pay. | String | Mandatory | 3 |
debitParty: | ||||
key | msisdn | String | Optional | 6 |
value | Sender Mobile Number with country code. Eg.+91xxxxxxxxxx | String | Optional | 10-18 |
creditParty : | ||||
key | msisdn | String | Conditional | 6 |
value | Beneficiary Mobile Number with country code. Eg.+91xxxxxxxxxx. | String | Optional - For Bank Accounts Mandatory - For Mobile Wallet | 10-18 |
key | bankaccountno | String | Conditional | 13 |
Value | Beneficiary bank account or IBAN number as applicable and required in the destination country for receiving funds. Eg. 2365417895 or AT483200000012345864.. This key/value pair is optional if the transfer is to a mobile wallet. | String | Mandatory - For Bank Accounts Optional - For Mobile Wallet | 5-50 |
key | receivingCountry | String | Conditional | 16 |
Value | Destination country where the payout is to be made. To be specified in ISO Alpha 2 format. Eg. IN. | String | Mandatory - For Bank Accounts Optional - For Mobile Wallet | 5-50 |
key | pan | String | Conditional | 3-5 |
Value | This indicates beneficiary Primary Account number in encrypted format to which transaction is to be sent. TerraPay will share the public key. Partner need to encrypt PAN details using RSA/ECB/OAEPWithSHA-256AndMGF1Padding algorithm. | String | Mandatory - For PAN and Optional - For bank and mobile wallets | 512-1024 |
key | cardtype | String | Optional | 5-10 |
Value | Beneficiary card type. Eg. credit/debit. | String | Optional | 5-10 |
type | The harmonized Transaction Type. Fixed default value "inttransfer" or "p2p" for person to person transfers. | String | Optional | 11 |
quotes : | ||||
sendingCurrency | Currency of the debitor in ISO 4217 format. Eg. EUR | String | Mandatory | 3 |
receivingCurrency | Currency of the creditor in ISO 4217 format. Eg. NGN | String | Mandatory | 3 |
Response Parameters
Parameter | Description | Data Type |
---|---|---|
requestDate | Timestamp as sent by the partner in the request API | String |
requestAmount | Request Amount as sent by the partner in the request API | String |
requestCurrency | Request currency as sent by the partner in the request API | String |
debitParty: | ||
key | msisdn | String |
value | Sender Mobile Number as sent by the partner in the request API | String |
creditParty : | ||
key | msisdn | String |
value | Beneficiary Mobile Number as sent by the partner in the request API | String |
key | bankaccountno | String |
value | Beneficiary bank account details as sent by the partner in the request API | String |
key | receivingCountry | String |
value | Destination country as sent by the partner in the request API | String |
quotes: | The quotation object which has the foreign exchange rate and the source and destination amounts. The quotation reference should be used in the transaction as an acceptance of the exchange rate. | |
quoteId | The unique id generated for this quotation request. This id is to be used in the create transaction request. | String |
quoteExpiryTime | The time stamp after which the quote will not be valid. This is in partner local time based on the origin country of transaction | String |
sendingAmount | Amount payable by the sender | String |
sendingCurrency | Currency in which the sender will pay the sending amount | String |
receivingAmount | Amount that the beneficiary will receive | String |
receivingCurrency | Currency in which the beneficiary will receive funds | String |
fxRate | Foreign Exchange rate applied on the quote including all markups | String |
quotationReference | TerraPay Quote Reference | String |
quotationStatus | Status of the quotation request. Format is ErrorCode:ErrorMessage | String |
Create a Quotation to PAN Try it
Create a Quotation to PAN
curl --location --request POST 'https://uat-connect.terrapay.com:21211/eig/gsma/quotations'\
--header 'X-DATE: 2020-01-02 10:51:16'\
--header 'X-ORIGINCOUNTRY: US' \
--header 'X-USERNAME: terrapayuser' \
--header 'X-PASSWORD: 101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b' \
--header 'Content-Type: application/json' \
--data-raw '{
"requestDate": "2017-05-03 11:00:00",
"type": "p2p",
"debitParty": [
{
"key": "msisdn",
"value": "+4491509874561"
}
],
"creditParty": [
{
"key": "pan",
"value": "+O+UJqWvJ3YFqUB0hWs3UkCE5/o7LyINi4egxdO8rZUZQjNrUCk+yWoAfKf+ifZSjDaTUd7yGvq2g7RhuRP6p5iWFH6PNCE85fmbi/YTwAxM4lnCMgg5UbrLxB632b1ZvgglboSNmj1VA9XnWOyDWxIsfyD+OLjxoDBjfU0B2dAh3SJyyOsCjZEfNe+TtH6TygElhSUwBl0WgkRQzicE3GN3qyetIJU2LsXONHMplO3ZXKjGx7NPwtUgL9clXL+2t2WFo9Brh9wvaL3X4WtE8teqhryrTjqZ3OvKQgACyYY733sVWlhwV9i2/IPGcPijHQPmrMtT1L7ceL2mVpqckw=="
},
{
"key": "bankaccountno",
"value": "2356915085237"
},
{
"key": "receivingCountry",
"value": "NG"
}
],
"requestAmount": "100",
"requestCurrency": "EUR",
"quotes": [
{
"sendingCurrency": "EUR",
"receivingCurrency": "UGX"
}
]
}
var myHeaders = new Headers();
myHeaders.append("X-USERNAME", "terrapayuser");
myHeaders.append("X-PASSWORD", "101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b");
myHeaders.append("X-DATE", "2018-04-04 09:27:16");
myHeaders.append("X-ORIGINCOUNTRY", "US");
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({
"requestDate": "2017-06-20 12:27:16",
"type": "p2p",
"debitParty": [
{
"key": "msisdn",
"value": "+449150987456",
"creditParty": [
{
"key": "pan",
"value": "O+UJqWvJ3YFqUB0hWs3UkCE5/o7LyINi4egxdO8rZUZQjNrUCk+yWoAfKf+ifZSjDaTUd7yGvq2g7RhuRP6p5iWFH6PNCE85fmbi/YTwAxM4lnCMgg5UbrLxB632b1ZvgglboSNmj1VA9XnWOyDWxIsfyD+OLjxoDBjfU0B2dAh3SJyyOsCjZEfNe+TtH6TygElhSUwBl0WgkRQzicE3GN3qyetIJU2LsXONHMplO3ZXKjGx7NPwtUgL9clXL+2t2WFo9Brh9wvaL3X4WtE8teqhryrTjqZ3OvKQgACyYY733sVWlhwV9i2/IPGcPijHQPmrMtT1L7ceL2mVpqckw==""
},
{
"requestAmount": "500",
"requestCurrency": "EUR",
"quotes": [
{
"sendingCurrency": "EUR",
"receivingCurrency": "UGX"
}
]
});
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("https://uat-connect.terrapay.com:21211/eig/gsma/quotations", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
import requests
import json
url = "https://uat-connect.terrapay.com:21211/eig/gsma/quotations"
payload = json.dumps({
"requestDate": "2017-06-20 12:27:16",
"type": "p2p",
"debitParty": [
{
"key": "msisdn",
"value": "+4491509874561"
"creditParty": [
{
"key": "pan",
"value": "O+UJqWvJ3YFqUB0hWs3UkCE5/o7LyINi4egxdO8rZUZQjNrUCk+yWoAfKf+ifZSjDaTUd7yGvq2g7RhuRP6p5iWFH6PNCE85fmbi/YTwAxM4lnCMgg5UbrLxB632b1ZvgglboSNmj1VA9XnWOyDWxIsfyD+OLjxoDBjfU0B2dAh3SJyyOsCjZEfNe+TtH6TygElhSUwBl0WgkRQzicE3GN3qyetIJU2LsXONHMplO3ZXKjGx7NPwtUgL9clXL+2t2WFo9Brh9wvaL3X4WtE8teqhryrTjqZ3OvKQgACyYY733sVWlhwV9i2/IPGcPijHQPmrMtT1L7ceL2mVpqckw=="
},
{
"requestAmount": "100",
"requestCurrency": "EUR",
"quotes": [
{
"sendingCurrency": "EUR",
"receivingCurrency": "UGX"
}
]
})
headers = {
'X-USERNAME': 'terrapayuser',
'X-PASSWORD': '101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b',
'X-DATE': '2018-04-04 09:27:16',
'X-ORIGINCOUNTRY': 'UK',
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\r\n \"requestDate\": \"2017-06-20 12:27:16\",\r\n \"type\": \"p2p\",\r\n \"debitParty\": [\r\n {\r\n\t\t \"key\": \"msisdn\",\r\n\t\t \"value\": \"+4491509874561\"\r\n\t\t},\"creditParty\": [\r\n {\r\n\t\t \"key\": \"pan\",\r\n\t\t \"value\": \O+UJqWvJ3YFqUB0hWs3UkCE5/o7LyINi4egxdO8rZUZQjNrUCk+yWoAfKf+ifZSjDaTUd7yGvq2g7RhuRP6p5iWFH6PNCE85fmbi/YTwAxM4lnCMgg5UbrLxB632b1ZvgglboSNmj1VA9XnWOyDWxIsfyD+OLjxoDBjfU0B2dAh3SJyyOsCjZEfNe+TtH6TygElhSUwBl0WgkRQzicE3GN3qyetIJU2LsXONHMplO3ZXKjGx7NPwtUgL9clXL+2t2WFo9Brh9wvaL3X4WtE8teqhryrTjqZ3OvKQgACyYY733sVWlhwV9i2/IPGcPijHQPmrMtT1L7ceL2mVpqckw==\"\r\n\t\t},\r\n \"requestAmount\": \"100\",\r\n \"requestCurrency\": \"EUR\",\r\n \"quotes\": [\r\n {\r\n \"sendingCurrency\": \"EUR\",\r\n \"receivingCurrency\": \"UGX\"\r\n }\r\n ]\r\n}");
Request request = new Request.Builder()
.url("https://uat-connect.terrapay.com:21211/eig/gsma/quotations")
.method("POST", body)
.addHeader("X-USERNAME", "terrapayuser")
.addHeader("X-PASSWORD", "101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b")
.addHeader("X-DATE", "2018-04-04 09:27:16")
.addHeader("X-ORIGINCOUNTRY", "UK")
.addHeader("Content-Type", "application/json")
.build();
Response response = client.newCall(request).execute();
require "uri"
require "json"
require "net/http"
url = URI("https://uat-connect.terrapay.com:21211/eig/gsma/quotations")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-USERNAME"] = "terrapayuser"
request["X-PASSWORD"] = "101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b"
request["X-DATE"] = "2018-04-04 09:27:16"
request["X-ORIGINCOUNTRY"] = "US"
request["Content-Type"] = "application/json"
request.body = JSON.dump({
"requestDate": "2017-06-20 12:27:16",
"type": "p2p",
"debitParty": [
{
"key": "msisdn",
"value": "+4491509874561"
},
{
"creditParty": [
{
"key": "pan",
"value": "O+UJqWvJ3YFqUB0hWs3UkCE5/o7LyINi4egxdO8rZUZQjNrUCk+yWoAfKf+ifZSjDaTUd7yGvq2g7RhuRP6p5iWFH6PNCE85fmbi/YTwAxM4lnCMgg5UbrLxB632b1ZvgglboSNmj1VA9XnWOyDWxIsfyD+OLjxoDBjfU0B2dAh3SJyyOsCjZEfNe+TtH6TygElhSUwBl0WgkRQzicE3GN3qyetIJU2LsXONHMplO3ZXKjGx7NPwtUgL9clXL+2t2WFo9Brh9wvaL3X4WtE8teqhryrTjqZ3OvKQgACyYY733sVWlhwV9i2/IPGcPijHQPmrMtT1L7ceL2mVpqckw=="
}
],
"requestAmount": "100",
"requestCurrency": "EUR",
"quotes": [
{
"sendingCurrency": "EUR>,
"receivingCurrency": "UGX"
}
]
})
response = https.request(request)
puts response.read_body
Success Response:
{
"requestDate": "2017-05-03 11:00:00",
"debitParty": [
{
"key": "msisdn",
"value": "+4491509874561"
}
],
"creditParty": [
{
"key": "msisdn",
"value": "+25691508523697"
},
{
"key": "bankaccountno",
"value": "2356915085237"
},
{
"key": "receivingCountry",
"value": "NG"
}
],
"requestAmount": "100",
"requestCurrency": "EUR",
"quotes": [
{
"quoteId": "QT037fQXs3LGWXea4",
"quoteExpiryTime": "2017-05-03 11:28:00",
"sendingAmount": "100.000000",
"sendingCurrency": "EUR",
"receivingAmount": "365217",
"receivingCurrency": "UGX",
"fxRate": "3652.173913"
}
],
"quotationReference": "QT037fQXs3LGWXea4",
"quotationStatus": "2000:Quote Success"
}
Failure Response :
{
"error": {
"errorCategory":"authorisation",
"errorCode":"1003",
"errorDescription":"Authentication failed. Username or Password is incorrect.",
"errorDateTime":"2017-05-02 11:00:00"
}
}
{
"error": {
"errorCategory":"businessRule",
"errorCode":"2001",
"errorDescription":"Source amount is invalid",
"errorDateTime":"2017-05-02 11:00:00"
}
}
{
"error": {
"errorCategory":"businessRule",
"errorCode":"2003",
"errorDescription":"Failed to get Forex rate",
"errorDateTime":"2017-05-02 11:00:00"
}
}
URL
https://uat-connect.terrapay.com:21211/eig/gsma/quotations
HTTP Request
POST /eig/gsma/quotations HTTP/1.1
Create A Transaction
The Transactions API is used to initiate an international money remittance transaction.
URI format is: /transactions
Create a transaction to a Mobile Wallet Try it
Create a transaction to a Mobile Wallet
curl --location --request POST 'https://127.0.0.1:21211/eig/gsma/transactions' \
--header 'X-DATE: 2020-01-02 10:51:16' \
--header 'X-ORIGINCOUNTRY: US' \
--header 'X-USERNAME: terrapayuser' \
--header 'X-PASSWORD: 101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b' \
--header 'Content-Type: application/json' \
--data-raw
{
"amount": "100000.01",
"currency": "NGN",
"type": "inttransfer",
"descriptionText": "Gift for my brother",
"requestDate": "2017-03-20T06:19:36.969Z",
"requestingOrganisationTransactionReference": "partnerRefId1234",
"provider": "23401",
"debitParty": [
{
"key": "msisdn",
"value": "+33472034605"
}
],
"creditParty": [
{
"key": "msisdn",
"value": "+23410706056"
}
],
"senderKyc": {
"nationality": "FR",
"dateOfBirth": "1986-06-28",
"gender": "M",
"idDocument": [
{
"idType": "nationalidcard",
"idNumber": "123456789",
"issueDate": "2003-09-26",
"expiryDate": "2033-09-26",
"issuerCountry": "FR"
}
],
"postalAddress": {
"addressLine1": "49 ",
"addressLine2": "park street",
"addressLine3": "walton's road",
"city": "Lyon",
"stateProvince": "Lyon",
"postalCode": "123456",
"country": "FR"
},
"subjectName": {
"title": "Mr.",
"firstName": "Einstein",
"middleName": "James",
"lastName": "Bela",
"fullName": "Einstien James Bela"
}
},
"recipientKyc":{
"nationality": "FR",
"dateOfBirth": "1986-06-28",
"idDocument": [
{
"idType": "nationalidcard",
"idNumber": "123456789",
"issueDate": "2003-09-26",
"expiryDate": "2033-09-26",
"issuerCountry": "FR"
}
],
"postalAddress": {
"addressLine1": "49 ",
"addressLine2": "park street",
"addressLine3": "walton's road",
"city": "Lyon",
"stateProvince": "Lyon",
"postalCode": "123456",
"country": "FR"
},
"subjectName": {
"title": "Mr.",
"firstName": "Einstein",
"middleName": "James",
"lastName": "Bela",
"fullName": "Einstien James Bela"
}
},
"internationalTransferInformation": {
"quoteId": "QT037fQXs3LGWXea4",
"receivingCountry": "NG",
"remittancePurpose": "Gift",
"sourceOfFunds": "Salary",
"relationshipSender": "Brother"
}
}
var myHeaders = new Headers();
myHeaders.append("X-USERNAME", "terrapayuser");
myHeaders.append("X-PASSWORD", "101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b");
myHeaders.append("X-DATE", "2018-04-04 09:27:16");
myHeaders.append("X-ORIGINCOUNTRY", "US");
myHeaders.append("Content-Type", "text/plain");
var raw = "{\r\n \"amount\": \"500\",\r\n \"currency\": \"NPR\",\r\n \"type\": \"inttransfer\",\r\n \"descriptionText\": \"Gift for my brother\",\r\n \"requestDate\": \"2021-05-23 08:19:36\",\r\n \"requestingOrganisationTransactionReference\": \"SrcTxnId001\",\r\n \"debitParty\": [\r\n {\r\n \"key\": \"msisdn\",\r\n \"value\": \"+971810456234\"\r\n }\r\n ],\r\n \"creditParty\": [\r\n {\r\n \"key\": \"msisdn\",\r\n \"value\": \"+9779840002320\"\r\n }\r\n ],\r\n \"senderKyc\": {\r\n \"nationality\": \"AE\",\r\n \"dateOfBirth\": \"1967-05-28\",\r\n \"gender\": \"M\",\r\n \"idDocument\": [\r\n {\r\n \"idType\": \"VOTER_CARD\",\r\n \"idNumber\": \"13321115521\",\r\n \"issueDate\": \"1967-05-28\",\r\n \"expiryDate\": \"2067-05-28\",\r\n \"issuerCountry\": \"AE\"\r\n }\r\n ],\r\n \"postalAddress\": {\r\n \"addressLine1\": \"49 , park street\",\r\n \"addressLine2\": \"12\",\r\n \"addressLine3\": \"12\",\r\n \"city\": \"12\",\r\n \"stateProvince\": \"12\",\r\n \"postalCode\": \"50000\",\r\n \"country\": \"US\"\r\n },\r\n \"subjectName\": {\r\n \"firstName\": \"Test\",\r\n \"middleName\": \"\",\r\n \"lastName\": \"Sender\",\r\n \"fullName\": \"Test Sender\"\r\n }\r\n },\r\n \"recipientKyc\": {\r\n \"subjectName\": {\r\n \"firstName\": \"David\",\r\n \"lastName\": \"Robinson\",\r\n \"fullName\": \"David Robinson\"\r\n }\r\n },\r\n \"internationalTransferInformation\": {\r\n \"quoteId\": \"QT037C1NQ6BHMV59A3\",\r\n \"receivingCountry\": \"NP\",\r\n \"remittancePurpose\": \"Family Maintenance\",\r\n \"sourceOfFunds\": \"Salary\",\r\n \"relationshipSender\": \"Brother\"\r\n }\r\n}";
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("https://uat-connect.terrapay.com:21211/eig/gsma/transactions", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
import requests
url = "https://uat-connect.terrapay.com:21211/eig/gsma/transactions"
payload = "{\r\n \"amount\": \"500\",\r\n \"currency\": \"NPR\",\r\n \"type\": \"inttransfer\",\r\n \"descriptionText\": \"Gift for my brother\",\r\n \"requestDate\": \"2021-05-23 08:19:36\",\r\n \"requestingOrganisationTransactionReference\": \"SrcTxnId001\",\r\n \"debitParty\": [\r\n {\r\n \"key\": \"msisdn\",\r\n \"value\": \"+971810456234\"\r\n }\r\n ],\r\n \"creditParty\": [\r\n {\r\n \"key\": \"msisdn\",\r\n \"value\": \"+9779840002320\"\r\n }\r\n ],\r\n \"senderKyc\": {\r\n \"nationality\": \"AE\",\r\n \"dateOfBirth\": \"1967-05-28\",\r\n \"gender\": \"M\",\r\n \"idDocument\": [\r\n {\r\n \"idType\": \"VOTER_CARD\",\r\n \"idNumber\": \"13321115521\",\r\n \"issueDate\": \"1967-05-28\",\r\n \"expiryDate\": \"2067-05-28\",\r\n \"issuerCountry\": \"AE\"\r\n }\r\n ],\r\n \"postalAddress\": {\r\n \"addressLine1\": \"49 , park street\",\r\n \"addressLine2\": \"12\",\r\n \"addressLine3\": \"12\",\r\n \"city\": \"12\",\r\n \"stateProvince\": \"12\",\r\n \"postalCode\": \"50000\",\r\n \"country\": \"US\"\r\n },\r\n \"subjectName\": {\r\n \"firstName\": \"Test\",\r\n \"middleName\": \"\",\r\n \"lastName\": \"Sender\",\r\n \"fullName\": \"Test Sender\"\r\n }\r\n },\r\n \"recipientKyc\": {\r\n \"subjectName\": {\r\n \"firstName\": \"David\",\r\n \"lastName\": \"Robinson\",\r\n \"fullName\": \"David Robinson\"\r\n }\r\n },\r\n \"internationalTransferInformation\": {\r\n \"quoteId\": \"QT037C1NQ6BHMV59A3\",\r\n \"receivingCountry\": \"NP\",\r\n \"remittancePurpose\": \"Family Maintenance\",\r\n \"sourceOfFunds\": \"Salary\",\r\n \"relationshipSender\": \"Brother\"\r\n }\r\n}"
headers = {
'X-USERNAME': 'terrapayuser',
'X-PASSWORD': '101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b',
'X-DATE': '2018-04-04 09:27:16',
'X-ORIGINCOUNTRY': 'US',
'Content-Type': 'text/plain'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "{\r\n \"amount\": \"500\",\r\n \"currency\": \"NPR\",\r\n \"type\": \"inttransfer\",\r\n \"descriptionText\": \"Gift for my brother\",\r\n \"requestDate\": \"2021-05-23 08:19:36\",\r\n \"requestingOrganisationTransactionReference\": \"SrcTxnId001\",\r\n \"debitParty\": [\r\n {\r\n \"key\": \"msisdn\",\r\n \"value\": \"+971810456234\"\r\n }\r\n ],\r\n \"creditParty\": [\r\n {\r\n \"key\": \"msisdn\",\r\n \"value\": \"+9779840002320\"\r\n }\r\n ],\r\n \"senderKyc\": {\r\n \"nationality\": \"AE\",\r\n \"dateOfBirth\": \"1967-05-28\",\r\n \"gender\": \"M\",\r\n \"idDocument\": [\r\n {\r\n \"idType\": \"VOTER_CARD\",\r\n \"idNumber\": \"13321115521\",\r\n \"issueDate\": \"1967-05-28\",\r\n \"expiryDate\": \"2067-05-28\",\r\n \"issuerCountry\": \"AE\"\r\n }\r\n ],\r\n \"postalAddress\": {\r\n \"addressLine1\": \"49 , park street\",\r\n \"addressLine2\": \"12\",\r\n \"addressLine3\": \"12\",\r\n \"city\": \"12\",\r\n \"stateProvince\": \"12\",\r\n \"postalCode\": \"50000\",\r\n \"country\": \"US\"\r\n },\r\n \"subjectName\": {\r\n \"firstName\": \"Test\",\r\n \"middleName\": \"\",\r\n \"lastName\": \"Sender\",\r\n \"fullName\": \"Test Sender\"\r\n }\r\n },\r\n \"recipientKyc\": {\r\n \"subjectName\": {\r\n \"firstName\": \"David\",\r\n \"lastName\": \"Robinson\",\r\n \"fullName\": \"David Robinson\"\r\n }\r\n },\r\n \"internationalTransferInformation\": {\r\n \"quoteId\": \"QT037C1NQ6BHMV59A3\",\r\n \"receivingCountry\": \"NP\",\r\n \"remittancePurpose\": \"Family Maintenance\",\r\n \"sourceOfFunds\": \"Salary\",\r\n \"relationshipSender\": \"Brother\"\r\n }\r\n}");
Request request = new Request.Builder()
.url("https://uat-connect.terrapay.com:21211/eig/gsma/transactions")
.method("POST", body)
.addHeader("X-USERNAME", "terrapayuser")
.addHeader("X-PASSWORD", "101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b")
.addHeader("X-DATE", "2018-04-04 09:27:16")
.addHeader("X-ORIGINCOUNTRY", "US")
.addHeader("Content-Type", "text/plain")
.build();
Response response = client.newCall(request).execute();
require "uri"
require "net/http"
url = URI("https://uat-connect.terrapay.com:21211/eig/gsma/transactions")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-USERNAME"] = "terrapayuser"
request["X-PASSWORD"] = "101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b"
request["X-DATE"] = "2018-04-04 09:27:16"
request["X-ORIGINCOUNTRY"] = "US"
request["Content-Type"] = "text/plain"
request.body = "{\r\n \"amount\": \"500\",\r\n \"currency\": \"NPR\",\r\n \"type\": \"inttransfer\",\r\n \"descriptionText\": \"Gift for my brother\",\r\n \"requestDate\": \"2021-05-23 08:19:36\",\r\n \"requestingOrganisationTransactionReference\": \"SrcTxnId001\",\r\n \"debitParty\": [\r\n {\r\n \"key\": \"msisdn\",\r\n \"value\": \"+971810456234\"\r\n }\r\n ],\r\n \"creditParty\": [\r\n {\r\n \"key\": \"msisdn\",\r\n \"value\": \"+9779840002320\"\r\n }\r\n ],\r\n \"senderKyc\": {\r\n \"nationality\": \"AE\",\r\n \"dateOfBirth\": \"1967-05-28\",\r\n \"gender\": \"M\",\r\n \"idDocument\": [\r\n {\r\n \"idType\": \"VOTER_CARD\",\r\n \"idNumber\": \"13321115521\",\r\n \"issueDate\": \"1967-05-28\",\r\n \"expiryDate\": \"2067-05-28\",\r\n \"issuerCountry\": \"AE\"\r\n }\r\n ],\r\n \"postalAddress\": {\r\n \"addressLine1\": \"49 , park street\",\r\n \"addressLine2\": \"12\",\r\n \"addressLine3\": \"12\",\r\n \"city\": \"12\",\r\n \"stateProvince\": \"12\",\r\n \"postalCode\": \"50000\",\r\n \"country\": \"US\"\r\n },\r\n \"subjectName\": {\r\n \"firstName\": \"Test\",\r\n \"middleName\": \"\",\r\n \"lastName\": \"Sender\",\r\n \"fullName\": \"Test Sender\"\r\n }\r\n },\r\n \"recipientKyc\": {\r\n \"subjectName\": {\r\n \"firstName\": \"David\",\r\n \"lastName\": \"Robinson\",\r\n \"fullName\": \"David Robinson\"\r\n }\r\n },\r\n \"internationalTransferInformation\": {\r\n \"quoteId\": \"QT037C1NQ6BHMV59A3\",\r\n \"receivingCountry\": \"NP\",\r\n \"remittancePurpose\": \"Family Maintenance\",\r\n \"sourceOfFunds\": \"Salary\",\r\n \"relationshipSender\": \"Brother\"\r\n }\r\n}"
response = https.request(request)
puts response.read_body
Success Response:
{
"amount": "100000.01",
"currency": "NGN",
"type": "inttransfer",
"requestDate": "2017-03-20T06:19:36.969Z",
"requestingOrganisationTransactionReference": "partnerRefId1234",
"debitParty": [
{
"key": "msisdn",
"value": "+33472034605"
}
],
"creditParty": [
{
"key": "msisdn",
"value": "+23410706056"
}
],
"transactionStatus": "3050:Remit Acknowledged.",
"transactionReference": "TPKM000000056269"
}
Failure Response :
{
"serverCorrelationId":"",
"clientCorrelationId":"partnerRefId1234",
"error": {
"errorCategory":"authorisation",
"errorCode":"1003",
"errorDescription":"Authentication failed. Username or Password is incorrect.",
"errorDateTime":"2017-05-02 11:00:00"
}
}
{
"serverCorrelationId":"TPKM000000056269",
"clientCorrelationId":"partnerRefId1234",
"error": {
"errorCategory":"businessRule",
"errorCode":"3032",
"errorDescription":"Remit Failed.",
"errorDateTime":"2017-05-02 11:00:00"
}
}
URL
https://uat-connect.terrapay.com:21211/eig/gsma/transactions
HTTP Request
POST /eig/gsma/transactions HTTP/1.1
Create a transaction to bank Try it
Create a transaction to bank
curl --location --request POST 'https://uat-connect.terrapay.com:21211/eig/gsma/transactions' \
--header 'X-DATE: 2020-01-02 10:51:16' \
--header 'X-ORIGINCOUNTRY: US' \
--header 'X-USERNAME: terrapayuser' \
--header 'X-PASSWORD:101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b' \
--header 'Content-Type: application/json' \
--data-raw
{
"amount": "100000.01",
"currency": "NGN",
"type": "inttransfer",
"descriptionText": null,
"requestDate": "2017-03-20T06:19:36.969Z",
"requestingOrganisationTransactionReference": "4119314191318",
"debitParty": [
{
"key": "msisdn",
"value": "+27123456789"
}
],
"creditParty": [
{
"key": "bankaccountno",
"value": "718530346"
},
{
"key": "sortcode",
"value": "0001"
},
{
"key": "organisationid",
"value": "Nu Pagamentos"
},
{
"key": "banksubcode",
"value": "0001"
}
],
"senderKyc": {
"nationality": "FR",
"dateOfBirth": "1986-06-28",
"gender": "M",
"idDocument": [
{
"idType": "nationalidcard",
"idNumber": "123456789",
"issueDate": "2003-09-26",
"expiryDate": "2033-09-26",
"issuerCountry": "FR"
}
],
"postalAddress": {
"addressLine1": "49 ",
"addressLine2": "park street",
"addressLine3": "walton's road",
"city": "Lyon",
"stateProvince": "Lyon",
"postalCode": "123456",
"country": "FR"
},
"subjectName": {
"title": "Mr.",
"firstName": "Einstein ",
"middleName": "James",
"lastName": "Bela",
"fullName": "Einstien James Bela"
}
},
"recipientKyc": {
"nationality": "FR",
"dateOfBirth": "1986-06-28",
"idDocument": [
{
"idType": "nationalidcard",
"idNumber": "123456789",
"issueDate": "2003-09-26",
"expiryDate": "2033-09-26",
"issuerCountry": "FR"
}
],
"postalAddress": {
"addressLine1": "49 ",
"addressLine2": "park street",
"addressLine3": "walton's road",
"city": "Lyon",
"stateProvince": "Lyon",
"postalCode": "123456",
"country": "FR"
},
"subjectName": {
"firstName": "John",
"lastName": "Smith",
"fullName": "John Dave Smith"
}
},
"internationalTransferInformation": {
"quoteId": "QT037fQXs3LGWXea4",
"receivingCountry": "NG",
"remittancePurpose": "Gift",
"sourceOfFunds": "Salary",
"relationshipSender": "Brother"
}
}
var myHeaders = new Headers();
myHeaders.append("X-USERNAME", "terrapayuser");
myHeaders.append("X-PASSWORD", "101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b");
myHeaders.append("X-DATE", "2018-04-04 09:27:16");
myHeaders.append("X-ORIGINCOUNTRY", "US");
myHeaders.append("Content-Type", "text/plain");
var raw = "{\r\n \"amount\": \"500\",\r\n \"currency\": \"INR\",\r\n \"type\": \"inttransfer\",\r\n \"descriptionText\": \"Gift for my brother\",\r\n \"requestDate\": \"2021-05-23 08:19:36\",\r\n \"requestingOrganisationTransactionReference\": \"SrcTxnId002\",\r\n \"debitParty\": [\r\n {\r\n \"key\": \"msisdn\",\r\n \"value\": \"+971810456234\"\r\n }\r\n ],\r\n \"creditParty\": [\r\n {\r\n \"key\": \"bankaccountno\",\r\n \"value\": \"50100002965304\"\r\n },\r\n {\r\n \"key\": \"organisationid\",\r\n \"value\": \"HDFC Bank\"\r\n },\r\n {\r\n \"key\": \"sortcode\",\r\n \"value\": \"HDFC0001626\"\r\n }\r\n ],\r\n \"senderKyc\": {\r\n \"nationality\": \"AE\",\r\n \"dateOfBirth\": \"1967-05-28\",\r\n \"gender\": \"M\",\r\n \"idDocument\": [\r\n {\r\n \"idType\": \"VOTER_CARD\",\r\n \"idNumber\": \"13321115521\",\r\n \"issueDate\": \"1967-05-28\",\r\n \"expiryDate\": \"2067-05-28\",\r\n \"issuerCountry\": \"AE\"\r\n }\r\n ],\r\n \"postalAddress\": {\r\n \"addressLine1\": \"49 , park street\",\r\n \"addressLine2\": \"12\",\r\n \"addressLine3\": \"12\",\r\n \"city\": \"12\",\r\n \"stateProvince\": \"12\",\r\n \"postalCode\": \"50000\",\r\n \"country\": \"US\"\r\n },\r\n \"subjectName\": {\r\n \"firstName\": \"Test\",\r\n \"middleName\": \"\",\r\n \"lastName\": \"Sender2\",\r\n \"fullName\": \"Test Sender2\"\r\n }\r\n },\r\n \"recipientKyc\": {\r\n \"subjectName\": {\r\n \"firstName\": \"Deepa\",\r\n \"lastName\": \"Jain\",\r\n \"fullName\": \"Deepa Jain\"\r\n }\r\n },\r\n \"internationalTransferInformation\": {\r\n \"quoteId\": \"QR037C1NA6ZXBSQ88B\",\r\n \"receivingCountry\": \"IN\",\r\n \"remittancePurpose\": \"Family Maintenance\",\r\n \"sourceOfFunds\": \"Salary\",\r\n \"relationshipSender\": \"Brother\"\r\n }\r\n}";
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("https://uat-connect.terrapay.com:21211/eig/gsma/transactions", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
import requests
url = "https://uat-connect.terrapay.com:21211/eig/gsma/transactions"
payload = "{\r\n \"amount\": \"500\",\r\n \"currency\": \"INR\",\r\n \"type\": \"inttransfer\",\r\n \"descriptionText\": \"Gift for my brother\",\r\n \"requestDate\": \"2021-05-23 08:19:36\",\r\n \"requestingOrganisationTransactionReference\": \"SrcTxnId002\",\r\n \"debitParty\": [\r\n {\r\n \"key\": \"msisdn\",\r\n \"value\": \"+971810456234\"\r\n }\r\n ],\r\n \"creditParty\": [\r\n {\r\n \"key\": \"bankaccountno\",\r\n \"value\": \"50100002965304\"\r\n },\r\n {\r\n \"key\": \"organisationid\",\r\n \"value\": \"HDFC Bank\"\r\n },\r\n {\r\n \"key\": \"sortcode\",\r\n \"value\": \"HDFC0001626\"\r\n }\r\n ],\r\n \"senderKyc\": {\r\n \"nationality\": \"AE\",\r\n \"dateOfBirth\": \"1967-05-28\",\r\n \"gender\": \"M\",\r\n \"idDocument\": [\r\n {\r\n \"idType\": \"VOTER_CARD\",\r\n \"idNumber\": \"13321115521\",\r\n \"issueDate\": \"1967-05-28\",\r\n \"expiryDate\": \"2067-05-28\",\r\n \"issuerCountry\": \"AE\"\r\n }\r\n ],\r\n \"postalAddress\": {\r\n \"addressLine1\": \"49 , park street\",\r\n \"addressLine2\": \"12\",\r\n \"addressLine3\": \"12\",\r\n \"city\": \"12\",\r\n \"stateProvince\": \"12\",\r\n \"postalCode\": \"50000\",\r\n \"country\": \"US\"\r\n },\r\n \"subjectName\": {\r\n \"firstName\": \"Test\",\r\n \"middleName\": \"\",\r\n \"lastName\": \"Sender2\",\r\n \"fullName\": \"Test Sender2\"\r\n }\r\n },\r\n \"recipientKyc\": {\r\n \"subjectName\": {\r\n \"firstName\": \"Deepa\",\r\n \"lastName\": \"Jain\",\r\n \"fullName\": \"Deepa Jain\"\r\n }\r\n },\r\n \"internationalTransferInformation\": {\r\n \"quoteId\": \"QR037C1NA6ZXBSQ88B\",\r\n \"receivingCountry\": \"IN\",\r\n \"remittancePurpose\": \"Family Maintenance\",\r\n \"sourceOfFunds\": \"Salary\",\r\n \"relationshipSender\": \"Brother\"\r\n }\r\n}"
headers = {
'X-USERNAME': 'terrapayuser',
'X-PASSWORD': '101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b',
'X-DATE': '2018-04-04 09:27:16',
'X-ORIGINCOUNTRY': 'US',
'Content-Type': 'text/plain'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "{\r\n \"amount\": \"500\",\r\n \"currency\": \"INR\",\r\n \"type\": \"inttransfer\",\r\n \"descriptionText\": \"Gift for my brother\",\r\n \"requestDate\": \"2021-05-23 08:19:36\",\r\n \"requestingOrganisationTransactionReference\": \"SrcTxnId002\",\r\n \"debitParty\": [\r\n {\r\n \"key\": \"msisdn\",\r\n \"value\": \"+971810456234\"\r\n }\r\n ],\r\n \"creditParty\": [\r\n {\r\n \"key\": \"bankaccountno\",\r\n \"value\": \"50100002965304\"\r\n },\r\n {\r\n \"key\": \"organisationid\",\r\n \"value\": \"HDFC Bank\"\r\n },\r\n {\r\n \"key\": \"sortcode\",\r\n \"value\": \"HDFC0001626\"\r\n }\r\n ],\r\n \"senderKyc\": {\r\n \"nationality\": \"AE\",\r\n \"dateOfBirth\": \"1967-05-28\",\r\n \"gender\": \"M\",\r\n \"idDocument\": [\r\n {\r\n \"idType\": \"VOTER_CARD\",\r\n \"idNumber\": \"13321115521\",\r\n \"issueDate\": \"1967-05-28\",\r\n \"expiryDate\": \"2067-05-28\",\r\n \"issuerCountry\": \"AE\"\r\n }\r\n ],\r\n \"postalAddress\": {\r\n \"addressLine1\": \"49 , park street\",\r\n \"addressLine2\": \"12\",\r\n \"addressLine3\": \"12\",\r\n \"city\": \"12\",\r\n \"stateProvince\": \"12\",\r\n \"postalCode\": \"50000\",\r\n \"country\": \"US\"\r\n },\r\n \"subjectName\": {\r\n \"firstName\": \"Test\",\r\n \"middleName\": \"\",\r\n \"lastName\": \"Sender2\",\r\n \"fullName\": \"Test Sender2\"\r\n }\r\n },\r\n \"recipientKyc\": {\r\n \"subjectName\": {\r\n \"firstName\": \"Deepa\",\r\n \"lastName\": \"Jain\",\r\n \"fullName\": \"Deepa Jain\"\r\n }\r\n },\r\n \"internationalTransferInformation\": {\r\n \"quoteId\": \"QR037C1NA6ZXBSQ88B\",\r\n \"receivingCountry\": \"IN\",\r\n \"remittancePurpose\": \"Family Maintenance\",\r\n \"sourceOfFunds\": \"Salary\",\r\n \"relationshipSender\": \"Brother\"\r\n }\r\n}");
Request request = new Request.Builder()
.url("https://uat-connect.terrapay.com:21211/eig/gsma/transactions")
.method("POST", body)
.addHeader("X-USERNAME", "terrapayuser")
.addHeader("X-PASSWORD", "101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b")
.addHeader("X-DATE", "2018-04-04 09:27:16")
.addHeader("X-ORIGINCOUNTRY", "US")
.addHeader("Content-Type", "text/plain")
.build();
Response response = client.newCall(request).execute();
require "uri"
require "net/http"
url = URI("https://uat-connect.terrapay.com:21211/eig/gsma/transactions")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-USERNAME"] = "terrapayuser"
request["X-PASSWORD"] = "101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b"
request["X-DATE"] = "2018-04-04 09:27:16"
request["X-ORIGINCOUNTRY"] = "US"
request["Content-Type"] = "text/plain"
request.body = "{\r\n \"amount\": \"500\",\r\n \"currency\": \"INR\",\r\n \"type\": \"inttransfer\",\r\n \"descriptionText\": \"Gift for my brother\",\r\n \"requestDate\": \"2021-05-23 08:19:36\",\r\n \"requestingOrganisationTransactionReference\": \"SrcTxnId002\",\r\n \"debitParty\": [\r\n {\r\n \"key\": \"msisdn\",\r\n \"value\": \"+971810456234\"\r\n }\r\n ],\r\n \"creditParty\": [\r\n {\r\n \"key\": \"bankaccountno\",\r\n \"value\": \"50100002965304\"\r\n },\r\n {\r\n \"key\": \"organisationid\",\r\n \"value\": \"HDFC Bank\"\r\n },\r\n {\r\n \"key\": \"sortcode\",\r\n \"value\": \"HDFC0001626\"\r\n }\r\n ],\r\n \"senderKyc\": {\r\n \"nationality\": \"AE\",\r\n \"dateOfBirth\": \"1967-05-28\",\r\n \"gender\": \"M\",\r\n \"idDocument\": [\r\n {\r\n \"idType\": \"VOTER_CARD\",\r\n \"idNumber\": \"13321115521\",\r\n \"issueDate\": \"1967-05-28\",\r\n \"expiryDate\": \"2067-05-28\",\r\n \"issuerCountry\": \"AE\"\r\n }\r\n ],\r\n \"postalAddress\": {\r\n \"addressLine1\": \"49 , park street\",\r\n \"addressLine2\": \"12\",\r\n \"addressLine3\": \"12\",\r\n \"city\": \"12\",\r\n \"stateProvince\": \"12\",\r\n \"postalCode\": \"50000\",\r\n \"country\": \"US\"\r\n },\r\n \"subjectName\": {\r\n \"firstName\": \"Test\",\r\n \"middleName\": \"\",\r\n \"lastName\": \"Sender2\",\r\n \"fullName\": \"Test Sender2\"\r\n }\r\n },\r\n \"recipientKyc\": {\r\n \"subjectName\": {\r\n \"firstName\": \"Deepa\",\r\n \"lastName\": \"Jain\",\r\n \"fullName\": \"Deepa Jain\"\r\n }\r\n },\r\n \"internationalTransferInformation\": {\r\n \"quoteId\": \"QR037C1NA6ZXBSQ88B\",\r\n \"receivingCountry\": \"IN\",\r\n \"remittancePurpose\": \"Family Maintenance\",\r\n \"sourceOfFunds\": \"Salary\",\r\n \"relationshipSender\": \"Brother\"\r\n }\r\n}"
response = https.request(request)
puts response.read_body
Success Response:
{
"amount": "100000.01",
"currency": "NGN",
"type": "inttransfer",
"requestDate": "2017-03-20T06:19:36.969Z",
"requestingOrganisationTransactionReference": "partnerRefId1234",
"debitParty": [
{
"key": "msisdn",
"value": "+33472034605"
}
],
"creditParty": [
{
"key": "msisdn",
"value": "+23410706056"
}
],
"transactionStatus": "3050:Remit Acknowledged.",
"transactionReference": "TPKM000000056269"
}
Failure Response :
{
"serverCorrelationId":"TPKM000000056269",
"clientCorrelationId":"partnerRefId1234",
"error": {
"errorCategory":"authorisation",
"errorCode":"1003",
"errorDescription":"Authentication failed. Username or Password is incorrect.",
"errorDateTime":"2017-05-02 11:00:00"
}
}
{
"serverCorrelationId":"TPKM000000056269",
"clientCorrelationId":"partnerRefId1234",
"error": {
"errorCategory":"businessRule",
"errorCode":"3032",
"errorDescription":"Remit Failed.",
"errorDateTime":"2017-05-02 11:00:00"
}
}
URL
https://uat-connect.terrapay.com:21211/eig/gsma/transactions
HTTP Request
POST /eig/gsma/transactions HTTP/1.1
Create a transaction to PAN Try it
Create a transaction to PAN
curl --location --request POST 'https://uat-connect.terrapay.com:21211/eig/gsma/transactions' \
--header 'X-DATE: 2020-01-02 10:51:16' \
--header 'X-ORIGINCOUNTRY: US' \
--header 'X-USERNAME: terrapayuser' \
--header 'X-PASSWORD:101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b' \
--header 'Content-Type: application/json' \
--data-raw
{
"amount": "100000.01",
"currency": "NGN",
"type": "inttransfer",
"descriptionText": null,
"requestDate": "2017-03-20T06:19:36.969Z",
"requestingOrganisationTransactionReference": "4119314191318",
"debitParty": [
{
"key": "msisdn",
"value": "+27123456789"
}
],
"creditParty": [
{
"key": "pan",
"value": "O+UJqWvJ3YFqUB0hWs3UkCE5/o7LyINi4egxdO8rZUZQjNrUCk+yWoAfKf+ifZSjDaTUd7yGvq2g7RhuRP6p5iWFH6PNCE85fmbi/YTwAxM4lnCMgg5UbrLxB632b1ZvgglboSNmj1VA9XnWOyDWxIsfyD1+OLjxoDBjfU0B2dAh3SJyyOsCjZEfNe+TtH6TygElhSUwBl0WgkRQzicE3GN3qyetIJU2LsXONHMplO3ZXKjGx7NPwtUgL9clXL+t2WFo9Brh9wvaL3X4WtE8teqhryrTjqZ3OvKQgACyYY733sVWlhwV9i2/IPGcPijHQPmrMtT1L7ceL2mVpqckw=="
},
{
"key": "cardtype",
"value": "credit"
}
],
"senderKyc": {
"nationality": "FR",
"dateOfBirth": "1986-06-28",
"gender": "M",
"idDocument": [
{
"idType": "nationalidcard",
"idNumber": "123456789",
"issueDate": "2003-09-26",
"expiryDate": "2033-09-26",
"issuerCountry": "FR"
}
],
"postalAddress": {
"addressLine1": "49 ",
"addressLine2": "park street",
"addressLine3": "walton's road",
"city": "Lyon",
"stateProvince": "Lyon",
"postalCode": "123456",
"country": "FR"
},
"subjectName": {
"title": "Mr.",
"firstName": "Einstein ",
"middleName": "James",
"lastName": "Bela",
"fullName": "Einstien James Bela"
}
},
"recipientKyc": {
"nationality": "FR",
"dateOfBirth": "1986-06-28",
"idDocument": [
{
"idType": "nationalidcard",
"idNumber": "123456789",
"issueDate": "2003-09-26",
"expiryDate": "2033-09-26",
"issuerCountry": "FR"
}
],
"postalAddress": {
"addressLine1": "49 ",
"addressLine2": "park street",
"addressLine3": "walton's road",
"city": "Lyon",
"stateProvince": "Lyon",
"postalCode": "123456",
"country": "FR"
},
"subjectName": {
"firstName": "John",
"lastName": "Smith",
"fullName": "John Dave Smith"
}
},
"internationalTransferInformation": {
"quoteId": "QT037fQXs3LGWXea4",
"receivingCountry": "NG",
"remittancePurpose": "Gift",
"sourceOfFunds": "Salary",
"relationshipSender": "Brother"
}
}
var myHeaders = new Headers();
myHeaders.append("X-USERNAME", "terrapayuser");
myHeaders.append("X-PASSWORD", "101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b");
myHeaders.append("X-DATE", "2018-04-04 09:27:16");
myHeaders.append("X-ORIGINCOUNTRY", "US");
myHeaders.append("Content-Type", "text/plain");
var raw = "{\r\n \"amount\": \"500\",\r\n \"currency\": \"INR\",\r\n \"type\": \"inttransfer\",\r\n \"descriptionText\": \"Gift for my brother\",\r\n \"requestDate\": \"2021-05-23 08:19:36\",\r\n \"requestingOrganisationTransactionReference\": \"SrcTxnId002\",\r\n \"debitParty\": [\r\n {\r\n \"key\": \"msisdn\",\r\n \"value\": \"+971810456234\"\r\n }\r\n ],\r\n \"creditParty\": [\r\n {\r\n \"key\": \"bankaccountno\",\r\n \"value\": \"\"\r\n },\r\n {\r\n \"key\": \"organisationid\",\r\n \"value\": \"\"\r\n },\r\n {\r\n \"key\": \"sortcode\",\r\n \"value\": \"\"\r\n }\r\n ],\r\n \"senderKyc\": {\r\n \"nationality\": \"AE\",\r\n \"dateOfBirth\": \"1967-05-28\",\r\n \"gender\": \"M\",\r\n \"idDocument\": [\r\n {\r\n \"idType\": \"VOTER_CARD\",\r\n \"idNumber\": \"13321115521\",\r\n \"issueDate\": \"1967-05-28\",\r\n \"expiryDate\": \"2067-05-28\",\r\n \"issuerCountry\": \"AE\"\r\n }\r\n ],\r\n \"postalAddress\": {\r\n \"addressLine1\": \"49 , park street\",\r\n \"addressLine2\": \"12\",\r\n \"addressLine3\": \"12\",\r\n \"city\": \"12\",\r\n \"stateProvince\": \"12\",\r\n \"postalCode\": \"50000\",\r\n \"country\": \"US\"\r\n },\r\n \"subjectName\": {\r\n \"firstName\": \"Test\",\r\n \"middleName\": \"\",\r\n \"lastName\": \"Sender2\",\r\n \"fullName\": \"Test Sender2\"\r\n }\r\n },\r\n \"recipientKyc\": {\r\n \"subjectName\": {\r\n \"firstName\": \"Deepa\",\r\n \"lastName\": \"Jain\",\r\n \"fullName\": \"Deepa Jain\"\r\n }\r\n },\r\n \"internationalTransferInformation\": {\r\n \"quoteId\": \"QR037C1NA6ZXBSQ88B\",\r\n \"receivingCountry\": \"IN\",\r\n \"remittancePurpose\": \"Family Maintenance\",\r\n \"sourceOfFunds\": \"Salary\",\r\n \"relationshipSender\": \"Brother\"\r\n }\r\n}";
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("https://uat-connect.terrapay.com:21211/eig/gsma/transactions", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
import requests
url = "https://uat-connect.terrapay.com:21211/eig/gsma/transactions"
payload = "{\r\n \"amount\": \"500\",\r\n \"currency\": \"INR\",\r\n \"type\": \"inttransfer\",\r\n \"descriptionText\": \"Gift for my brother\",\r\n \"requestDate\": \"2021-05-23 08:19:36\",\r\n \"requestingOrganisationTransactionReference\": \"SrcTxnId002\",\r\n \"debitParty\": [\r\n {\r\n \"key\": \"msisdn\",\r\n \"value\": \"+971810456234\"\r\n }\r\n ],\r\n \"creditParty\": [\r\n {\r\n \"key\": \"bankaccountno\",\r\n \"value\": \"50100002965304\"\r\n },\r\n {\r\n \"key\": \"organisationid\",\r\n \"value\": \"HDFC Bank\"\r\n },\r\n {\r\n \"key\": \"sortcode\",\r\n \"value\": \"HDFC0001626\"\r\n }\r\n ],\r\n \"senderKyc\": {\r\n \"nationality\": \"AE\",\r\n \"dateOfBirth\": \"1967-05-28\",\r\n \"gender\": \"M\",\r\n \"idDocument\": [\r\n {\r\n \"idType\": \"VOTER_CARD\",\r\n \"idNumber\": \"13321115521\",\r\n \"issueDate\": \"1967-05-28\",\r\n \"expiryDate\": \"2067-05-28\",\r\n \"issuerCountry\": \"AE\"\r\n }\r\n ],\r\n \"postalAddress\": {\r\n \"addressLine1\": \"49 , park street\",\r\n \"addressLine2\": \"12\",\r\n \"addressLine3\": \"12\",\r\n \"city\": \"12\",\r\n \"stateProvince\": \"12\",\r\n \"postalCode\": \"50000\",\r\n \"country\": \"US\"\r\n },\r\n \"subjectName\": {\r\n \"firstName\": \"Test\",\r\n \"middleName\": \"\",\r\n \"lastName\": \"Sender2\",\r\n \"fullName\": \"Test Sender2\"\r\n }\r\n },\r\n \"recipientKyc\": {\r\n \"subjectName\": {\r\n \"firstName\": \"Deepa\",\r\n \"lastName\": \"Jain\",\r\n \"fullName\": \"Deepa Jain\"\r\n }\r\n },\r\n \"internationalTransferInformation\": {\r\n \"quoteId\": \"QR037C1NA6ZXBSQ88B\",\r\n \"receivingCountry\": \"IN\",\r\n \"remittancePurpose\": \"Family Maintenance\",\r\n \"sourceOfFunds\": \"Salary\",\r\n \"relationshipSender\": \"Brother\"\r\n }\r\n}"
headers = {
'X-USERNAME': 'terrapayuser',
'X-PASSWORD': '101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b',
'X-DATE': '2018-04-04 09:27:16',
'X-ORIGINCOUNTRY': 'US',
'Content-Type': 'text/plain'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "{\r\n \"amount\": \"500\",\r\n \"currency\": \"INR\",\r\n \"type\": \"inttransfer\",\r\n \"descriptionText\": \"Gift for my brother\",\r\n \"requestDate\": \"2021-05-23 08:19:36\",\r\n \"requestingOrganisationTransactionReference\": \"SrcTxnId002\",\r\n \"debitParty\": [\r\n {\r\n \"key\": \"msisdn\",\r\n \"value\": \"+971810456234\"\r\n }\r\n ],\r\n \"creditParty\": [\r\n {\r\n \"key\": \"bankaccountno\",\r\n \"value\": \"50100002965304\"\r\n },\r\n {\r\n \"key\": \"organisationid\",\r\n \"value\": \"HDFC Bank\"\r\n },\r\n {\r\n \"key\": \"sortcode\",\r\n \"value\": \"HDFC0001626\"\r\n }\r\n ],\r\n \"senderKyc\": {\r\n \"nationality\": \"AE\",\r\n \"dateOfBirth\": \"1967-05-28\",\r\n \"gender\": \"M\",\r\n \"idDocument\": [\r\n {\r\n \"idType\": \"VOTER_CARD\",\r\n \"idNumber\": \"13321115521\",\r\n \"issueDate\": \"1967-05-28\",\r\n \"expiryDate\": \"2067-05-28\",\r\n \"issuerCountry\": \"AE\"\r\n }\r\n ],\r\n \"postalAddress\": {\r\n \"addressLine1\": \"49 , park street\",\r\n \"addressLine2\": \"12\",\r\n \"addressLine3\": \"12\",\r\n \"city\": \"12\",\r\n \"stateProvince\": \"12\",\r\n \"postalCode\": \"50000\",\r\n \"country\": \"US\"\r\n },\r\n \"subjectName\": {\r\n \"firstName\": \"Test\",\r\n \"middleName\": \"\",\r\n \"lastName\": \"Sender2\",\r\n \"fullName\": \"Test Sender2\"\r\n }\r\n },\r\n \"recipientKyc\": {\r\n \"subjectName\": {\r\n \"firstName\": \"Deepa\",\r\n \"lastName\": \"Jain\",\r\n \"fullName\": \"Deepa Jain\"\r\n }\r\n },\r\n \"internationalTransferInformation\": {\r\n \"quoteId\": \"QR037C1NA6ZXBSQ88B\",\r\n \"receivingCountry\": \"IN\",\r\n \"remittancePurpose\": \"Family Maintenance\",\r\n \"sourceOfFunds\": \"Salary\",\r\n \"relationshipSender\": \"Brother\"\r\n }\r\n}");
Request request = new Request.Builder()
.url("https://uat-connect.terrapay.com:21211/eig/gsma/transactions")
.method("POST", body)
.addHeader("X-USERNAME", "terrapayuser")
.addHeader("X-PASSWORD", "101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b")
.addHeader("X-DATE", "2018-04-04 09:27:16")
.addHeader("X-ORIGINCOUNTRY", "US")
.addHeader("Content-Type", "text/plain")
.build();
Response response = client.newCall(request).execute();
require "uri"
require "net/http"
url = URI("https://uat-connect.terrapay.com:21211/eig/gsma/transactions")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-USERNAME"] = "terrapayuser"
request["X-PASSWORD"] = "101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b"
request["X-DATE"] = "2018-04-04 09:27:16"
request["X-ORIGINCOUNTRY"] = "US"
request["Content-Type"] = "text/plain"
request.body = "{\r\n \"amount\": \"500\",\r\n \"currency\": \"INR\",\r\n \"type\": \"inttransfer\",\r\n \"descriptionText\": \"Gift for my brother\",\r\n \"requestDate\": \"2021-05-23 08:19:36\",\r\n \"requestingOrganisationTransactionReference\": \"SrcTxnId002\",\r\n \"debitParty\": [\r\n {\r\n \"key\": \"msisdn\",\r\n \"value\": \"+971810456234\"\r\n }\r\n ],\r\n \"creditParty\": [\r\n {\r\n \"key\": \"bankaccountno\",\r\n \"value\": \"\"\r\n },\r\n {\r\n \"key\": \"organisationid\",\r\n \"value\": \"\"\r\n },\r\n {\r\n \"key\": \"sortcode\",\r\n \"value\": \"\"\r\n }\r\n ],\r\n \"senderKyc\": {\r\n \"nationality\": \"AE\",\r\n \"dateOfBirth\": \"1967-05-28\",\r\n \"gender\": \"M\",\r\n \"idDocument\": [\r\n {\r\n \"idType\": \"VOTER_CARD\",\r\n \"idNumber\": \"13321115521\",\r\n \"issueDate\": \"1967-05-28\",\r\n \"expiryDate\": \"2067-05-28\",\r\n \"issuerCountry\": \"AE\"\r\n }\r\n ],\r\n \"postalAddress\": {\r\n \"addressLine1\": \"49 , park street\",\r\n \"addressLine2\": \"12\",\r\n \"addressLine3\": \"12\",\r\n \"city\": \"12\",\r\n \"stateProvince\": \"12\",\r\n \"postalCode\": \"50000\",\r\n \"country\": \"US\"\r\n },\r\n \"subjectName\": {\r\n \"firstName\": \"Test\",\r\n \"middleName\": \"\",\r\n \"lastName\": \"Sender2\",\r\n \"fullName\": \"Test Sender2\"\r\n }\r\n },\r\n \"recipientKyc\": {\r\n \"subjectName\": {\r\n \"firstName\": \"Deepa\",\r\n \"lastName\": \"Jain\",\r\n \"fullName\": \"Deepa Jain\"\r\n }\r\n },\r\n \"internationalTransferInformation\": {\r\n \"quoteId\": \"QR037C1NA6ZXBSQ88B\",\r\n \"receivingCountry\": \"IN\",\r\n \"remittancePurpose\": \"Family Maintenance\",\r\n \"sourceOfFunds\": \"Salary\",\r\n \"relationshipSender\": \"Brother\"\r\n }\r\n}"
response = https.request(request)
puts response.read_body
Success Response:
{
"amount": "100000.01",
"currency": "NGN",
"type": "inttransfer",
"requestDate": "2017-03-20T06:19:36.969Z",
"requestingOrganisationTransactionReference": "partnerRefId1234",
"debitParty": [
{
"key": "msisdn",
"value": "+33472034605"
}
],
"creditParty": [
{
"key": "msisdn",
"value": "+23410706056"
}
],
"transactionStatus": "3050:Remit Acknowledged.",
"transactionReference": "TPKM000000056269"
}
Failure Response :
{
"serverCorrelationId":"TPKM000000056269",
"clientCorrelationId":"partnerRefId1234",
"error": {
"errorCategory":"authorisation",
"errorCode":"1003",
"errorDescription":"Authentication failed. Username or Password is incorrect.",
"errorDateTime":"2017-05-02 11:00:00"
}
}
{
"serverCorrelationId":"TPKM000000056269",
"clientCorrelationId":"partnerRefId1234",
"error": {
"errorCategory":"businessRule",
"errorCode":"3032",
"errorDescription":"Remit Failed.",
"errorDateTime":"2017-05-02 11:00:00"
}
}
URL
POST /eig/gsma/transactions HTTP/1.1
Create transaction request parameter list
Request parameter list
Parameter | Description | Data Type | Requirement | Field Length |
---|---|---|---|---|
requestDate | The creation date and time of the transaction as supplied by the client in YYYY-MM-DD HH:mm:ss | String | Mandatory | 19 |
amount | Destination amount payable to the beneficiary with precision of 2 decimal places. | String | Mandatory | 10,2 |
currency | Destination amount currency in ISO 4217 format. Eg. NGN | String | Mandatory | 3 |
type | The harmonized Transaction Type. Fixed default value "inttransfer" or "p2p" for person to person transfers. | String | Mandatory | 11 |
descriptionText | Free format text description of the transaction provided by the client. This can be provided as a message for the receiver on the account statement. | String | Optional | 0-20 |
requestingOrganisationTransactionReference | Unique Transaction reference generated by the sending partner. | String | Mandatory | 4-50 |
provider | Provider value should be same as sent in the validation request. If a different value is sent then the transaction will be rejected.NOTE: Mandatory for non-telco walletes. Optional for telco wallets. | Numeric | Optional | 5-12 |
debitParty: | ||||
key | msisdn | String | Mandatory | 6 |
value | Sender Mobile Number with country code. Eg. +91xxxxxxxxxx | String | Mandatory | 10-18 |
key | organisationid | String | Optional | 14 |
value | Full name of the sending organization | String | Optional | 4-60 |
key | bankaccountno | String | Optional | 13 |
value | Sender bank account or IBAN number or card number | String | Optional | 5-50 |
creditParty: | ||||
key | msisdn | String | Conditional | 6 |
value | Beneficiary Mobile Number with country code. | String | Mandatory/Optional requirement of this field is destination country specific. | 10-18 |
key | bankaccountno | String | Conditional | 13 |
value | Beneficiary bank account or IBAN number as applicable and required in the destination country for receiving funds. Eg. 2365417895 or AT483200000012345864. This key/value pair is optional if the transfer is to a mobile wallet. | String | Mandatory - For Bank Accounts and Optional - For Mobile Wallet and PAN | 5-50 |
key | accounttype | String | Optional | 11 |
value | Beneficiary bank account type. Supported account types:CheckingSavingsThe default account type for p2p transactions is Savings. | String | Mandatory in certain destination countries for transfers to bank accounts. | 0-20 |
key | sortcode | String | Conditional | 8 |
value | Bank Code as required in the destination Country. It is the IFSC code for India and Swift BIC for all other countries. The requirement of this code is destination country specific. | String | Mandatory - For bank accounts and Optional - For mobile wallets and PAN | 4-25 |
key | organisationid | String | Conditional | 14 |
value | Full name of the beneficiary bank | String | Mandatory - For bank accounts and Optional - For mobile wallets and PAN | 4-60 |
key | banksubcode | String | Conditional | 1-11 |
value | This is a code that indicates the branch code of the specific bank to which the transaction is to be sent. | String | Mandatory - For bank accounts and Optional - For mobile wallets | 1-10 |
key | pan | String | Mandatory | 3-5 |
value | This indicates beneficiary Primary Account number in encrypted format to which transaction is to be sent. TerraPay will share the public key. Partner need to encrypt PAN details using RSA/ECB/OAEPWithSHA-256AndMGF1Padding algorithm. | String | Mandatory - For PAN and Optional - For bank and mobile wallets | 512-1024 |
key | cardtype | String | Optional | 5-10 |
value | Beneficiary card type. Eg. credit/debit. | String | Optional | 5-10 |
senderKyc: | ||||
nationality | Nationality of the sender in ISO Alpha-2 format. Eg. US | String | Mandatory | 2 |
dateOfBirth | Sender's date of birth in YYYY-MM-DD format | String | Mandatory | 10 |
countryOfBirth | Sender's country of birth in ISO Alpha-2 format. Eg. US | String | Optional | 10 |
gender | Sender's Gender. Enumeration = (M)ale, (F)emale, (U)nspecified | String | Optional | 1 |
senderKyc:idDocument: | ||||
idType | Sender's Id document type: For example nationalidcard, drivinglicense, passport, etc | String | Mandatory | 1-20 |
idNumber | Sender's Id document number. | String | Mandatory | 1-30 |
issueDate | Sender's Id document issue date in YYYY-MM-DD format. | String | Optional | 10 |
expiryDate | Sender's Id document expiry date in YYYY-MM-DD format. | String | Mandatory | 10 |
issuerCountry | Country where the Id document was issued in ISO Alpha-2 format. | String | Optional | 2 |
senderKyc:postalAddress: | ||||
addressLine1 | First line of the address | String | Mandatory | 4-20 |
addressLine2 | Second line of the address | String | Optional | 4-20 |
addressLine3 | Third line of the address | String | Optional | 4-20 |
city | City/Town of sender's address | String | Mandatory | 4-20 |
stateProvince | State of sender's address Note: State in ISO Alpha-2 format for transaction originated in US to Guatemala.Note: Mandatory/Optional requirement of this field is destination country specific. |
String | Conditional | 2-20 |
postalCode | Postal Code of sender's address.Note: Mandatory/Optional requirement of this field is destination country specific. | String | Conditional | 6-8 |
country | Country in ISO Alpha-2 format | String | Mandatory | 2 |
senderKyc:subjectName: | ||||
title | Title of the Sender | String | Optional | 0-6 |
firstName | First name of the Sender | String | Mandatory | 1-20 |
middleName | Middle name of the Sender | String | Optional | 0-50 |
lastName | Last name of the Sender | String | Mandatory | 1-20 |
fullName | Full name of the Sender | String | Mandatory | 1-50 |
recipientKyc: | ||||
nationality | Nationality of the customer in ISO Alpha-2 format. Eg. USNote: Mandatory/Optional requirement of this field is destination country specific. | String | Conditional | 2 |
dateOfBirth | Beneficiary's date of birth in YYYY-MM-DD format.Note: Mandatory/Optional requirement of this field is destination country specific. | String | Conditional | 10 |
recipientKyc:idDocument: | ||||
idType | Beneficiary's Id document as required in the destination country. Please click here for the list of required document in each country.Note: Mandatory/Optional requirement of this field is destination country specific. | String | Conditional | 1-20 |
idNumber | Beneficiary's Id document number.Note: Mandatory/Optional requirement of this field is destination country specific. | String | Conditional | 1-30 |
issueDate | Beneficiary's Id document issue date in YYYY-MM-DD format. | String | Optional | 10 |
expiryDate | Beneficiary's Id document expiry date in YYYY-MM-DD format.Note: Mandatory/Optional requirement of this field is destination country specific. | String | Conditional | 10 |
issuerCountry | Country where the Id document was issued in ISO Alpha-2 format. | String | Optional | 2 |
recipientKyc:postalAddress: | ||||
addressLine1 | First line of the address.Note: Mandatory/Optional requirement of this field is destination country specific. | String | Conditional | 4-20 |
addressLine2 | Second line of the address | String | Optional | 4-20 |
addressLine3 | Third line of the address | String | Optional | 4-20 |
city | City/Town of beneficiary's address.Note: Mandatory/Optional requirement of this field is destination country specific. | String | Conditional | 4-20 |
stateProvince | State of beneficiary's address | String | Optional | 4-20 |
postalCode | Postal Code of beneficiary's address | String | Conditional | 6-8 |
country | Country in ISO Alpha-2 format.Note: Mandatory/Optional requirement of this field is destination country specific. | String | Conditional | 2 |
recipientKyc:subjectName: | ||||
firstName | First name of the beneficiary | String | Mandatory | 1-20 |
lastName | Last name of the beneficiary | String | Mandatory | 1-20 |
fullName | Full name of the beneficiary | String | Mandatory | 1-50 |
regionalbeneficiaryname | Regional Beneficiary Name as per bank account (Japanese Language: Katakana) | String | Conditional | 1-50 |
internationalTransferInformation: | ||||
quoteId | The specific quoteId to be used for the transaction. This quoteId is generated when a quotation is created and it is returned on the quotation response | String | Mandatory | 16-20 |
receivingCountry | Destination country where the payout is to be made. To be specified in ISO Alpha 2 format. Eg. NG | String | Mandatory | 2 |
remittancePurpose | Reason for the transfer. Please click here for accepted values. | String | Mandatory | 4-30 |
sourceOfFunds | Source of funds. Please click here for accepted values. | String | Mandatory | 4-17 |
relationshipSender | The relation between the sender and the beneficiary. Please click here for accepted values. | String | Mandatory | 3-11 |
Response Parameters
Parameter | Description | Data Type |
---|---|---|
requestDate | The creation date and time of the transaction as supplied by the client. | String |
amount | Principle Transaction Amount. | String |
currency | Currency of the principal transaction amount. | String |
type | The harmonised Transaction Type | String |
requestingOrganisationTransactionReference | Unique Transaction reference submitted by sending partner as part of request buffer. | String |
transactionStatus | Indicates the status of the transaction | String |
transactionReference | Unique reference for the transaction. This is returned in the response by TerraPay's system | String |
debitParty: | ||
key | msisdn | String |
value | Sender Mobile Number as sent by the partner in the request API | String |
creditParty: | ||
key | msisdn | String |
value | Beneficiary Mobile Number as sent by the partner in the request API | String |
key | bankaccountno | String |
value | Beneficiary bank account details as sent by the partner in the request API | String |
View A Transaction
The View Transactions API is used for looking up the status of a transaction already sent to the TerraPay system.
URI format is: /transactions/{transactionReference}
View Transaction Status to a Mobile Wallet Try it
View Transaction Status to a Mobile Wallet
curl --location --request GET 'https://uat-connect.terrapay.com:21211/eig/gsma/transactions/TPPU000000334449' \
--header 'Content-Type: application/json'\
--header 'X-USERNAME:terrapayuser' \
--header 'X-PASSWORD: 101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b' \
--header 'X-DATE: 2020-01-02 10:51:16' \
--header 'X-ORIGINCOUNTRY: US' \
var myHeaders = new Headers();
myHeaders.append("X-USERNAME", "terrapayuser");
myHeaders.append("X-PASSWORD", "101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b");
myHeaders.append("X-DATE", "2018-04-04 09:27:16");
myHeaders.append("X-ORIGINCOUNTRY", "US");
var requestOptions = {
method: 'GET',
headers: myHeaders,
redirect: 'follow'
};
fetch("https://uat-connect.terrapay.com:21211/eig/gsma/transactions/SrcTxnId001", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
import requests
url = "https://uat-connect.terrapay.com:21211/eig/gsma/transactions/SrcTxnId001"
payload={}
headers = {
'X-USERNAME': 'terrapayuser',
'X-PASSWORD': '101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b',
'X-DATE': '2018-04-04 09:27:16',
'X-ORIGINCOUNTRY': 'US'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
Request request = new Request.Builder()
.url("https://uat-connect.terrapay.com:21211/eig/gsma/transactions/SrcTxnId001")
.method("GET", null)
.addHeader("X-USERNAME", "terrapayuser")
.addHeader("X-PASSWORD", "101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b")
.addHeader("X-DATE", "2018-04-04 09:27:16")
.addHeader("X-ORIGINCOUNTRY", "US")
.build();
Response response = client.newCall(request).execute();
require "uri"
require "net/http"
url = URI("https://uat-connect.terrapay.com:21211/eig/gsma/transactions/SrcTxnId001")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-USERNAME"] = "terrapayuser"
request["X-PASSWORD"] = "101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b"
request["X-DATE"] = "2018-04-04 09:27:16"
request["X-ORIGINCOUNTRY"] = "US"
response = https.request(request)
puts response.read_body
Success Response
{
"amount": "100000.01",
"currency": "NGN",
"type": "inttransfer",
"requestDate": "2017-03-20T06:19:36.969Z",
"requestingOrganisationTransactionReference": "partnerRefId1234",
"debitParty": [
{
"key": "msisdn",
"value": "+33472034605"
}
],
"creditParty": [
{
"key": "msisdn",
"value": "+23410706056"
}
],
"transactionStatus": "3000:Remit Success",
"transactionReference": "TPKM000000056269"
}
Failure Response :
{
"serverCorrelationId":"",
"clientCorrelationId":"partnerRefId1234",
"error": {
"errorCategory":"authorisation",
"errorCode":"1003",
"errorDescription":"Authentication failed. Username or Password is incorrect.",
"errorDateTime":"2017-05-02 11:00:00"
}
}
{
"serverCorrelationId":"TPKM000000056269",
"clientCorrelationId":"partnerRefId1234",
"error": {
"errorCategory":"businessRule",
"errorCode":"3032",
"errorDescription":"Remit Failed.",
"errorDateTime":"2017-05-02 11:00:00"
}
}
URL
https://uat-connect.terrapay.com:21211/eig/gsma/transactions/{transactionReference}
HTTP Request
GET /eig/gsma/transactions/TPKM000000056269 HTTP/1.1
View Transaction Status to a Bank Account Try it
View Transaction Status to a Bank Account
curl --location --request GET 'https://uat-connect.terrapay.com:21211/eig/gsma/transactions/TPKM000000056269 HTTP/1.1'\
--header 'Content-Type: application/json'\
--header 'X-USERNAME: terrapayuser '\
--header 'X-PASSWORD: 101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b'\
--header 'X-DATE: "2017-05-03 11:00:00'\
--header 'X-ORIGINCOUNTRY:US'\
var myHeaders = new Headers();
myHeaders.append("X-USERNAME", "terrapayuser");
myHeaders.append("X-PASSWORD", "101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b");
myHeaders.append("X-DATE", "2018-04-04 09:27:16");
myHeaders.append("X-ORIGINCOUNTRY", "US");
var requestOptions = {
method: 'GET',
headers: myHeaders,
redirect: 'follow'
};
fetch("https://uat-connect.terrapay.com:21211/eig/gsma/transactions/SrcTxnId001", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
import requests
url = "https://uat-connect.terrapay.com:21211/eig/gsma/transactions/SrcTxnId001"
payload={}
headers = {
'X-USERNAME': 'terrapayuser',
'X-PASSWORD': '101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b',
'X-DATE': '2018-04-04 09:27:16',
'X-ORIGINCOUNTRY': 'US'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
Request request = new Request.Builder()
.url("https://uat-connect.terrapay.com:21211/eig/gsma/transactions/SrcTxnId001")
.method("GET", null)
.addHeader("X-USERNAME", "terrapayuser")
.addHeader("X-PASSWORD", "101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b")
.addHeader("X-DATE", "2018-04-04 09:27:16")
.addHeader("X-ORIGINCOUNTRY", "US")
.build();
Response response = client.newCall(request).execute();
require "uri"
require "net/http"
url = URI("https://uat-connect.terrapay.com:21211/eig/gsma/transactions/SrcTxnId001")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-USERNAME"] = "terrapayuser"
request["X-PASSWORD"] = "101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b"
request["X-DATE"] = "2018-04-04 09:27:16"
request["X-ORIGINCOUNTRY"] = "US"
response = https.request(request)
puts response.read_body
Success Response
{
"amount": "100000.01",
"currency": "NGN",
"type": "inttransfer",
"requestDate": "2017-03-20T06:19:36.969Z",
"requestingOrganisationTransactionReference": "partnerRefId1234",
"debitParty": [
{
"key": "msisdn",
"value": "+33472034605"
}
],
"creditParty": [
{
"key": "msisdn",
"value": "+23410706056"
}
],
"transactionStatus": "3000:Remit Success",
"transactionReference": "TPKM000000056269"
}
Failure Response:
{
"serverCorrelationId":"",
"clientCorrelationId":"partnerRefId1234",
"error": {
"errorCategory":"authorisation",
"errorCode":"1003",
"errorDescription":"Authentication failed. Username or Password is incorrect.",
"errorDateTime":"2017-05-02 11:00:00"
}
}
{
"serverCorrelationId":"TPKM000000056269",
"clientCorrelationId":"partnerRefId1234",
"error": {
"errorCategory":"businessRule",
"errorCode":"3032",
"errorDescription":"Remit Failed.",
"errorDateTime":"2017-05-02 11:00:00"
}
}
URL
https://uat-connect.terrapay.com:21211/eig/gsma/transactions/{transactionReference}
HTTP Request
GET /eig/gsma/transactions/TPKM000000056269 HTTP/1.1
Request Parameters
Parameter | Description | Data Type | Requirement |
---|---|---|---|
transactionReference | Unique reference for the transaction which was returned in the response of the createTransaction API or the unique reference generated by the partner's system and sent in the createTransaction API request. | String | Mandatory |
Response Parameters
Parameter | Description | Data Type |
---|---|---|
requestDate | The creation date and time of the transaction as supplied by the client. | String |
amount | Principle Transaction Amount. | String |
currency | Currency of the principal transaction amount. | String |
type | The harmonised Transaction Type | String |
requestingOrganisationTransactionReference | Unique Transaction reference generated by the sending partner. | String |
transactionStatus | Indicates the status of the transaction | String |
transactionReference | Unique reference for the transaction. This is returned in the response by TerraPay's system | String |
debitParty: | ||
key | The name of the debitparty account identifier | String |
value | Keys include mobile wallet and bank account identifiers | String |
creditParty: | ||
key | The name of the creditparty account identifier | String |
value | Keys include mobile wallet and bank account identifiers | String |
Ledger Balance
The ledger balance API is used for get the current balance in the partner's ledger. The balance can be retrieved for all ledgers or ledgers of a specific currency. The ledger balance is retrieved only if the ledger is active.
URI format is: accounts/{currency}/balance
Get Balance of all ledgers
curl --location --request GET 'https://uat-connect.terrapay.com:21211/eig/gsma/accounts/all/balance'\
--header 'X-USERNAME:terrapayuser '\
--header 'X-PASSWORD: 101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b'\
--header 'X-DATE: 2017-05-03 11:00:00'\
--header 'X-ORIGINCOUNTRY:US'\
--header 'Content-Type: application/json '
var myHeaders = new Headers();
myHeaders.append("X-USERNAME", "terrapayuser");
myHeaders.append("X-PASSWORD", "101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b");
myHeaders.append("X-DATE", "2018-04-04 09:27:16");
myHeaders.append("X-ORIGINCOUNTRY", "US");
var requestOptions = {
method: 'GET',
headers: myHeaders,
redirect: 'follow'
};
fetch("https://uat-connect.terrapay.com:21211/eig/gsma/accounts/all/balance", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
import requests
url = "https://uat-connect.terrapay.com:21211/eig/gsma/accounts/all/balance"
payload={}
headers = {
'X-USERNAME': 'terrapayuser',
'X-PASSWORD': '101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b',
'X-DATE': '2018-04-04 09:27:16',
'X-ORIGINCOUNTRY': 'US'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
Request request = new Request.Builder()
.url("https://uat-connect.terrapay.com:21211/eig/gsma/accounts/all/balance")
.method("GET", null)
.addHeader("X-USERNAME", "terrapayuser")
.addHeader("X-PASSWORD", "101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b")
.addHeader("X-DATE", "2018-04-04 09:27:16")
.addHeader("X-ORIGINCOUNTRY", "US")
.build();
Response response = client.newCall(request).execute();
require "uri"
require "net/http"
url = URI("https://uat-connect.terrapay.com:21211/eig/gsma/accounts/all/balance")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-USERNAME"] = "terrapayuser"
request["X-PASSWORD"] = "101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b"
request["X-DATE"] = "2018-04-04 09:27:16"
request["X-ORIGINCOUNTRY"] = "US"
response = https.request(request)
puts response.read_body
Success Response:
[
{
"currency": "USD",
"currentBalance": "1000.000000",
"status": "available"
},
{
"currency": "NGN",
"currentBalance": "3000000.000000",
"status": "available"
},
{
"currency": "TZS",
"currentBalance": "1000000.000000",
"status": "available"
}
]
Get Balance of ledgers of single currency
curl --location --request GET 'https://uat-connect.terrapay.com:21211/eig/gsma/accounts/USD/balance'\
--header 'X-USERNAME: terrapayuser'\
--header 'X-PASSWORD: 101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b'\
--header 'X-DATE: 2017-05-03 11:00:00'\
--header 'X-ORIGINCOUNTRY:US'\
--header 'Content-Type: application/json'
var myHeaders = new Headers();
myHeaders.append("X-USERNAME", "terrapayuser");
myHeaders.append("X-PASSWORD", "101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b");
myHeaders.append("X-DATE", "2018-04-04 09:27:16");
myHeaders.append("X-ORIGINCOUNTRY", "US");
var requestOptions = {
method: 'GET',
headers: myHeaders,
redirect: 'follow'
};
fetch("https://uat-connect.terrapay.com:21211/eig/gsma/accounts/USD/balance", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
import requests
url = "https://uat-connect.terrapay.com:21211/eig/gsma/accounts/USD/balance"
payload={}
headers = {
'X-USERNAME': 'terrapayuser',
'X-PASSWORD': '101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b',
'X-DATE': '2018-04-04 09:27:16',
'X-ORIGINCOUNTRY': 'US'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
Request request = new Request.Builder()
.url("https://uat-connect.terrapay.com:21211/eig/gsma/accounts/USD/balance")
.method("GET", null)
.addHeader("X-USERNAME", "terrapayuser")
.addHeader("X-PASSWORD", "101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b")
.addHeader("X-DATE", "2018-04-04 09:27:16")
.addHeader("X-ORIGINCOUNTRY", "US")
.build();
Response response = client.newCall(request).execute();
require "uri"
require "net/http"
url = URI("https://uat-connect.terrapay.com:21211/eig/gsma/accounts/USD/balance")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-USERNAME"] = "terrapayuser"
request["X-PASSWORD"] = "101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b"
request["X-DATE"] = "2018-04-04 09:27:16"
request["X-ORIGINCOUNTRY"] = "US"
response = https.request(request)
puts response.read_body
Success Response:
[
{
"currency": "USD",
"currentBalance": "1000.000000",
"status": "available"
}
]
Get Balance of all ledgers Try it
URL
https://uat-connect.terrapay.com:21211/eig/gsma/accounts/all/balance
HTTP Request
GET /eig/gsma/accounts/all/balance HTTP/1.1
Get Balance for a single currency ledger Try it
URL
https://uat-connect.terrapay.com:21211/eig/gsma/accounts/USD/balance
HTTP Request
GET /eig/gsma/accounts/USD/balance HTTP/1.1
Corridor Quotation
Corridor Quotation Try it
Corridor Quotation
curl --location --request GET'https://uat-connect.terrapay.com:21211/eig/gsma/quotations/USD '\
--header 'X-USERNAME: terrapayuser'\
--header 'X-PASSWORD: 101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b'\
--header 'X-DATE: 2017-05-03 11:00:00'\
--header 'X-ORIGINCOUNTRY:US'\
--header 'Content-Type: application/json'
var myHeaders = new Headers();
myHeaders.append("X-USERNAME", "terrapayuser");
myHeaders.append("X-PASSWORD", "101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b");
myHeaders.append("X-DATE", "2018-04-04 09:27:16");
myHeaders.append("X-ORIGINCOUNTRY", "US");
var requestOptions = {
method: 'GET',
headers: myHeaders,
redirect: 'follow'
};
fetch("https://uat-connect.terrapay.com:21211/eig/gsma/quotations/USD", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
import requests
url = "https://uat-connect.terrapay.com:21211/eig/gsma/quotations/USD"
payload={}
headers = {
'X-USERNAME': 'terrapayuser',
'X-PASSWORD': '101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b',
'X-DATE': '2018-04-04 09:27:16',
'X-ORIGINCOUNTRY': 'US'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
Request request = new Request.Builder()
.url("https://uat-connect.terrapay.com:21211/eig/gsma/quotations/usd")
.method("GET", null)
.addHeader("X-USERNAME", "terrapayuser")
.addHeader("X-PASSWORD", "101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b")
.addHeader("X-DATE", "2018-04-04 09:27:16")
.addHeader("X-ORIGINCOUNTRY", "US")
.build();
Response response = client.newCall(request).execute();
require "uri"
require "net/http"
url = URI("https://uat-connect.terrapay.com:21211/eig/gsma/quotations/USD")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-USERNAME"] = "terrapayuser"
request["X-PASSWORD"] = "101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b"
request["X-DATE"] = "2018-04-04 09:27:16"
request["X-ORIGINCOUNTRY"] = "US"
response = https.request(request)
puts response.read_body
Success Response
[
{
"requestDate": "2017-10-18 09:27:16",
"requestCurrency": "USD",
"quotes":[
{
"receivingServiceProvider": "GH",
"receivingCurrency": "GHS",
"fxRate": "4.966000"
},
{
"receivingServiceProvider": "UG",
"receivingCurrency": "UGX",
"fxRate": "3728.000597"
}
],
"quotationStatus": "9000:Success"
}
]
This API is used to get the foreign exchange rates for the prefunding currency corridors that are active for the partner
URI format is: /quotations/{prefunding_currency}
URL
https://uat-connect.terrapay.com:21211/eig/gsma/quotations/USD
HTTP Request
GET /eig/gsma/quotations/USD HTTP/1.1
Cancel Transaction
Cancel Transaction Try it
Cancel Transaction
curl --location --request POST 'https://uat-connect.terrapay.com:21211/eig/gsma/remitCancel/'\
--header 'X-USERNAME: terrapayuser'\
--header 'X-PASSWORD: 101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b'\
--header 'X-DATE: "2021-01-03 11:00:00'\
--header 'X-ORIGINCOUNTRY:US'\
--header 'Content-Type: application/json'\
--data-raw
{
"reason": "cancelling",
"txnId": "TPSE000000298941"
}
var myHeaders = new Headers();
myHeaders.append("X-USERNAME", "terrapayuser");
myHeaders.append("X-PASSWORD", "101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b");
myHeaders.append("X-DATE", "2018-04-04 09:27:16");
myHeaders.append("X-ORIGINCOUNTRY", "US");
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({
"reason": "cancelling",
"txnId": "SrcTxnId001"
});
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("https://uat-connect.terrapay.com:21211/eig/gsma/remitCancel", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
import requests
import json
url = "https://uat-connect.terrapay.com:21211/eig/gsma/remitCancel"
payload = json.dumps({
"reason": "cancelling",
"txnId": "SrcTxnId001"
})
headers = {
'X-USERNAME': 'terrapayuser',
'X-PASSWORD': '101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b',
'X-DATE': '2018-04-04 09:27:16',
'X-ORIGINCOUNTRY': 'US',
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\r\n \"reason\": \"cancelling\",\r\n \"txnId\": \"SrcTxnId001\"\r\n}");
Request request = new Request.Builder()
.url("https://uat-connect.terrapay.com:21211/eig/gsma/remitCancel")
.method("POST", body)
.addHeader("X-USERNAME", "terrapayuser")
.addHeader("X-PASSWORD", "101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b")
.addHeader("X-DATE", "2018-04-04 09:27:16")
.addHeader("X-ORIGINCOUNTRY", "US")
.addHeader("Content-Type", "application/json")
.build();
Response response = client.newCall(request).execute();
require "uri"
require "json"
require "net/http"
url = URI("https://uat-connect.terrapay.com:21211/eig/gsma/remitCancel")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-USERNAME"] = "terrapayuser"
request["X-PASSWORD"] = "101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b"
request["X-DATE"] = "2018-04-04 09:27:16"
request["X-ORIGINCOUNTRY"] = "US"
request["Content-Type"] = "application/json"
request.body = JSON.dump({
"reason": "cancelling",
"txnId": "SrcTxnId001"
})
response = https.request(request)
puts response.read_body
Success Response
{
"responseMessage": "Cancel Success",
"statusCode": "3033"
}
This API is used to cancel an initiated transaction which is not yet credited. The cancellation will be done only if the transaction is pending on the TerraPay system and has not already been sent to the receiving partner for credit to the beneficiary account
URL
https://uat-connect.terrapay.com:21211/eig/gsma/remitCancel
HTTP Request
POST /eig/gsma/remitCancel HTTP/1.1
Cancel transaction request parameter list
Parameter name | Description | Data Type | Requirement |
---|---|---|---|
txnId | Reference for the transaction which was returned by transaction response buffer by TerraPay's system or partner transaction id. | String | Mandatory |
Response code for cancel transactions
Response Code | Response Message |
---|---|
3033 | Cancel Success |
15001 | Cannot Cancel. Credit already in process. |
15002 | Cannot Cancel. Transaction in Success state. |
15003 | Cannot Cancel. Transaction in Fail state. |
15004 | Cannot Cancel. Transaction not found. |
15005 | Transaction already in canceled state. |
Reverse Transaction
Reverse Transaction Try it
Reverse Transaction
curl --location --request POST 'https://uat-connect.terrapay.com:21211/eig/gsma/reversalInitiate/'\
--header 'X-USERNAME: terrapayuser'\
--header 'X-PASSWORD: 101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b'\
--header 'X-DATE: 2021-01-03 11:00:00'\
--header 'X-ORIGINCOUNTRY:US'\
--header 'Content-Type: application/json'\
--data-raw
{
"reversalReason": "reversalreason",
"txnId": "TPKM000000056269"
}
var myHeaders = new Headers();
myHeaders.append("X-USERNAME", "terrapayuser");
myHeaders.append("X-PASSWORD", "101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b");
myHeaders.append("X-DATE", "2018-04-04 09:27:16");
myHeaders.append("X-ORIGINCOUNTRY", "US");
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({
"reversalReason": "reversalreason",
"txnId": "TPKM000000056269"
});
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("https://uat-connect.terrapay.com:21211/eig/gsma/reversalInitiate", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
import requests
import json
url = "https://uat-connect.terrapay.com:21211/eig/gsma/reversalInitiate"
payload = json.dumps({
"reversalReason": "reversalreason",
"txnId": "TPKM000000056269"
})
headers = {
'X-USERNAME': 'terrapayuser',
'X-PASSWORD': '101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b',
'X-DATE': '2018-04-04 09:27:16',
'X-ORIGINCOUNTRY': 'US',
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\r\n \"reversalReason\": \"reversalreason\",\r\n \"txnId\": \"TPKM000000056269\"\r\n}");
Request request = new Request.Builder()
.url("https://uat-connect.terrapay.com:21211/eig/gsma/reversalInitiate")
.method("POST", body)
.addHeader("X-USERNAME", "terrapayuser")
.addHeader("X-PASSWORD", "101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b")
.addHeader("X-DATE", "2018-04-04 09:27:16")
.addHeader("X-ORIGINCOUNTRY", "US")
.addHeader("Content-Type", "application/json")
.build();
Response response = client.newCall(request).execute();
require "uri"
require "json"
require "net/http"
url = URI("https://uat-connect.terrapay.com:21211/eig/gsma/reversalInitiate")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-USERNAME"] = "terrapayuser"
request["X-PASSWORD"] = "101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b"
request["X-DATE"] = "2018-04-04 09:27:16"
request["X-ORIGINCOUNTRY"] = "US"
request["Content-Type"] = "application/json"
request.body = JSON.dump({
"reversalReason": "reversalreason",
"txnId": "TPKM000000056269"
})
response = https.request(request)
puts response.read_body
Success Response
{
"responseCode": "16003"
"responseMessage": "Reversal Pending",
"txnId": "TPYY000000783294"
}
Reverse Transaction is used to reverse a transfer which is to bring back the money from the beneficiary's account to the sender's account.
URL
https://uat-connect.terrapay.com:21211/eig/gsma/reversalInitiate/
HTTP Request
POST /eig/gsma/reversalInitiate HTTP/1.1
Reverse transaction response parameter list
Parameter name | Description | Data Type | Requirement |
---|---|---|---|
txnId | Reference for the transaction which was returned by transaction response buffer by TerraPay's system or partner transaction id. | String | Mandatory |
Response code for reversal transactions
Response Code | Response Message |
---|---|
16000 | Reversal Success. |
16001 | Reversal Failed. Transaction Not found. |
16002 | Reversal Rejected. |
16003 | Reversal Pending. |
16004 | Reversal cannot be done at this stage |
16005 | Reversal already raised. |
16006 | Transaction already reversed. |
16007 | Reverse cannot be done. Transaction is in failed state. |
Statements API
Response
[
{
"timestamp": "2020-04-29T13:00:00Z",
"type": "LIQUIDITY",
"internalRef": "TP000000000",
"externalRef": "",
"amount": "1000.00",
"currency": "USD",
"convertedAmount": "",
"convertedCurrency": "",
"balance": "1000.00",
"message": "Transfer with reference 123456"
},
{
"timestamp": "2020-05-22T09:12:42Z",
"type": "TRANSFERRED",
"internalRef": "TP000000001",
"externalRef": "TW000000000",
"amount": "10.12",
"currency": "USD",
"convertedAmount": "38280.09",
"convertedCurrency": "UGX",
"balance": "989.88",
"message": "3000:Remit Success"
},
{
"timestamp": "2020-05-22T10:15:55Z",
"type": "REJECTED",
"internalRef": "TP000000002",
"externalRef": "TW000000001",
"amount": "8.62",
"currency": "USD",
"convertedAmount": "19938.06",
"convertedCurrency": "TZS",
"balance": "989.88",
"message": "3007:Beneficiary KYC validation failed"
},
{
"timestamp": "2020-05-22T11:22:45Z",
"type": "BOUNCED",
"internalRef": "TP000000003",
"externalRef": "TW000000000",
"amount": "10.12",
"currency": "USD",
"convertedAmount": "38280.09",
"convertedCurrency": "UGX",
"balance": "1000.00",
"message": "3103:Bank credit failed. Account name mismatch"
}
]
Statement Types
TRANSFERRED
Represents successfully transferred transaction. Balance should be deleted
REJECTED
Represents transactions rejected by TerraPay. Balance shouldn't be changed. The reason of the rejection should be populated.
BOUNCED
Represents bounced-back transactions. Balance should be credited. Happens when a beneficiary bank returns funds back to TerraPay due to incorrect details, etc.
LIQUIDITY
Represents liquidity transactions sent to TerraPay. Balance should be credited.
Statement fields
Name | Format | Example | Requirement | Description |
---|---|---|---|---|
timestamp | ISO 8601 UTC DateTime | 2020-04-29T13:00:00Z | Mandatory | Transaction time |
type | TRANSFERRED REJECTED BOUNCED LIQUIDITY | Mandatory | Transaction time | |
internalRef | String | TPKM000000056269 | Mandatory | TerraPay transaction reference |
externalRef | String | 88440865645 | Optional for LIQUIDITY mandatory for the rest | Partner transaction reference |
amount | Decimal | 123.45 | Mandatory | Transaction amount in balance currency |
currency | ISO 4217 three-letter code | USD | Mandatory | Balance currency, USD |
convertedAmount | Decimal | 4497.45 | Optional for LIQUIDITY mandatory for the rest | Converted amount sent to beneficiary |
convertedCurrency | ISO 4217 three-letter code | TZS | Optional for LIQUIDITY mandatory for the rest | Currency of convertedAmount |
balance | Decimal | 212455.87 | Mandatory | Balance value after the transaction |
message | String | 3032:Remit Failed. | Mandatory | Extra transaction description should contain parseable reason for REJECTED and BOUNCED type |
Statement's example
Description | TimeStamp | Type | InternalRef | ExternalRef | Amount | Currency | Converted Amount | Converted Currency | Balance | Message |
---|---|---|---|---|---|---|---|---|---|---|
Partner sends funds to TerraPay | 2020-04-29T13:00:00Z | LIQUIDITY | TP000000000 | 1000.00 | USD | 1000.00 | Transfer with reference 123456 | |||
Successful transfer for 38280.09 UGX | 2020-05-22T09:12:42Z | TRANSFERRED | TP000000001 | TW000000000 | 10.12 | USD | 38280.09 | UGX | 989.88 | 3000:Remit Success |
Failed transfer for 19938.06 TZS | 2020-05-22T10:15:55Z | REJECTED | TP000000002 | TW000000001 | 8.62 | USD | 19938.06 | TZS | 989.88 | Transfer with reference 123456 |
Previously successful transfer to UGX was returned to TerraPay | 2020-05-22T11:22:45Z | BOUNCED | TP000000003 | TW000000000 | 10.12 | USD | 38280.09 | UGX | 1000.00 | 3103:Bank credit failed. Account name mismatch |
Request
Statements should be accessible via HTTP GET request.
Sample URL
URL
https://uat-connect.terrapay.com:21211/eig/gsma/statements?start=%7Bstart%7D&end=%7Bend%7D¤cy=%7Bcurrency%7D
Request parameter
Name | Format | Example | Requirement | Description |
---|---|---|---|---|
start | ISO 8601 UTC DateTime | 2020-04-29T13:00:00Z | mandatory | Beginning of the query interval |
end | ISO 8601 UTC DateTime | 2020-05-22T19:38:59Z | mandatory | End of the query interval |
Request headers
Request must include standard TerraPay headers:
- X-USERNAME
- X-PASSWORD
- X-DATE
- X-ORIGINCOUNTRY
Response
Response should contain list of statements in JSON format for the requested period.
Get Bank List
Get Bank List Try it
Get Bank List
curl --location --request GET 'https://uat-connect.terrapay.com:21211/eig/getbanklist/BD'\
--header 'X-USERNAME: username'\
--header 'X-PASSWORD: password'\
--header 'X-DATE:request datetime'\
--header 'X-ORIGINCOUNTRY:origincountry'\
--header 'Content-Type: application/json'
var myHeaders = new Headers();
myHeaders.append("X-USERNAME", "OpenTurfDev");
myHeaders.append("X-PASSWORD", "85d6dcc27d9fb21c7c346cdbcee2b56a84eba0f542a846de06658d2d094afd56");
myHeaders.append("X-DATE", "2018-04-04 09:27:16");
myHeaders.append("X-ORIGINCOUNTRY", "US");
var raw = "";
var requestOptions = {
method: 'GET',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("https://uat-connect.terrapay.com:21211/eig/getbanklist/NP", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
import requests
url = "https://uat-connect.terrapay.com:21211/eig/getbanklist/NP"
payload = ""
headers = {
'X-USERNAME': 'OpenTurfDev',
'X-PASSWORD': '85d6dcc27d9fb21c7c346cdbcee2b56a84eba0f542a846de06658d2d094afd56',
'X-DATE': '2018-04-04 09:27:16',
'X-ORIGINCOUNTRY': 'US'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
Request request = new Request.Builder()
.url("https://uat-connect.terrapay.com:21211/eig/getbanklist/NP")
.method("GET", null)
.addHeader("X-USERNAME", "OpenTurfDev")
.addHeader("X-PASSWORD", "85d6dcc27d9fb21c7c346cdbcee2b56a84eba0f542a846de06658d2d094afd56")
.addHeader("X-DATE", "2018-04-04 09:27:16")
.addHeader("X-ORIGINCOUNTRY", "US")
.build();
Response response = client.newCall(request).execute();
require "uri"
require "net/http"
url = URI("https://uat-connect.terrapay.com:21211/eig/getbanklist/NP")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-USERNAME"] = "OpenTurfDev"
request["X-PASSWORD"] = "85d6dcc27d9fb21c7c346cdbcee2b56a84eba0f542a846de06658d2d094afd56"
request["X-DATE"] = "2018-04-04 09:27:16"
request["X-ORIGINCOUNTRY"] = "US"
response = https.request(request)
puts response.read_body
Success Response
{
"countryCode": "BD",
"lastUpdatedOn": "2021-01-12 21:40:00.051",
"banks": [
{
"bankName": "DUTCH BANGLA BANK LIMITED",
"bankCode": "DBBLBDDH",
"providerCode": "",
"status": "ACTIVE"
},
{
"bankName": "AGRANI BANK LTD",
"bankCode": "AGBKBDDH",
"providerCode": "",
"status": "ACTIVE"
},]
}
The Bank list API is used to derive a bank name, code, provider code, and status.
URI format is: https://uat-connect.terrapay.com:21211/eig/getbanklist/{countrycode}
URL
https://uat-connect.terrapay.com:21211/eig/getbanklist/BD
HTTP Request
GET /eig/getbanklist/BD HTTP/1.1
Bank List response parameter list
Parameter name | Description | Data Type |
---|---|---|
countryCode | ISO Alpha 2 country code of the destination country. Eg. NG for Nigeria | String |
lastUpdatedOn | last updated date and time in YYYY-MM-DD HH:mm:ss.SSS format. | String |
bankName | Full name of the beneficiary bank | String |
bankCode | Bank Code as required in the destination Country. It can be one of: IFSC Code,Swift BIC. This code is specific to bank integration in each country and may be mandatory in certain destination countries | String |
providerCode | This is a code that indicates the bank to which the transaction is to be sent. If not set, then TerraPay will resolve the bank based on the bankCode. If the bankCode is incorrectly provided, then the bank will be resolved based on Bank Name (should match exactly as per the bank list shared by TerraPay). If these parameters do no match then the transaction will be rejected. If set, then TerraPay will resolve the bank based on the provider code. | Numeric |
status | Indicates the status of the account. If 'active' then the account can receive funds. If not then transactions sent to the account will fail. | String |
Get Wallet List
Get Wallet List Try it
Get Bank List
curl --location --request GET 'https://uat-connect.terrapay.com:21211/eig/getwalletlist/BD'\
--header 'X-USERNAME: username'\
--header 'X-PASSWORD: password'\
--header 'X-DATE:request datetime'\
--header 'X-ORIGINCOUNTRY:origincountry'\
--header 'Content-Type: application/json'
var myHeaders = new Headers();
myHeaders.append("X-USERNAME", "OpenTurfDev");
myHeaders.append("X-PASSWORD", "85d6dcc27d9fb21c7c346cdbcee2b56a84eba0f542a846de06658d2d094afd56");
myHeaders.append("X-DATE", "2018-04-04 09:27:16");
myHeaders.append("X-ORIGINCOUNTRY", "US");
var raw = "";
var requestOptions = {
method: 'GET',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("https://uat-connect.terrapay.com:21211/eig/getwalletlist/BD", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
import requests
url = "https://uat-connect.terrapay.com:21211/eig/getwalletlist/BD"
payload = ""
headers = {
'X-USERNAME': 'OpenTurfDev',
'X-PASSWORD': '85d6dcc27d9fb21c7c346cdbcee2b56a84eba0f542a846de06658d2d094afd56',
'X-DATE': '2018-04-04 09:27:16',
'X-ORIGINCOUNTRY': 'US'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
Request request = new Request.Builder()
.url("https://uat-connect.terrapay.com:21211/eig/getwalletlist/BD")
.method("GET", null)
.addHeader("X-USERNAME", "OpenTurfDev")
.addHeader("X-PASSWORD", "85d6dcc27d9fb21c7c346cdbcee2b56a84eba0f542a846de06658d2d094afd56")
.addHeader("X-DATE", "2018-04-04 09:27:16")
.addHeader("X-ORIGINCOUNTRY", "US")
.build();
Response response = client.newCall(request).execute();
require "uri"
require "net/http"
url = URI("https://uat-connect.terrapay.com:21211/eig/getwalletlist/BD")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-USERNAME"] = "OpenTurfDev"
request["X-PASSWORD"] = "85d6dcc27d9fb21c7c346cdbcee2b56a84eba0f542a846de06658d2d094afd56"
request["X-DATE"] = "2018-04-04 09:27:16"
request["X-ORIGINCOUNTRY"] = "US"
response = https.request(request)
puts response.read_body
Success Response
{
"countryCode": "BD",
"wallets": [
{
"walletName": "BKASH",
"providerCode": "88001,
},
{
"walletName": "ROCKET",
"providerCode": "88002,
},
{
"walletName": "NAGAD",
"providerCode": "88003",
} ]
}
The Wallet list API is used to derive wallet name and provider code.
URI format is: https://uat-connect.terrapay.com:21211/eig/getwalletlist/{countrycode}
URL
https://uat-connect.terrapay.com:21211/eig/getwalletlist/BD
HTTP Request
GET /eig/getwalletlist/BD HTTP/1.1
Wallet List response parameter list
Parameter name | Description | Data Type |
---|---|---|
countryCode | ISO Alpha 2 country code of the destination country. Eg. NG for Nigeria | String |
walletName | Name of the beneficiary wall | String |
providerCode | This is a code that indicates the wallet to which the transaction is to be sent. If not set, then TerraPay will automatically find the mobile wallet that the mobile number belongs to. If these parameters do no match then the transaction will be rejected. If set, then TerraPay will validate the mobile number against the mobile wallet operator specified. | Numeric |
Create a Business Transaction
This API is used to create business transaction. This is similar to create a transaction with additional parameters required to conduct business transaction. Business transactions can be as follows:
- Business to Business (B2B)
- Business to Person (B2P)
- Person to Business (P2B)
The URI format is:/transactions
B2B transaction to a Bank
B2B transaction to a Bank Try it
B2B transcation to a bank
curl --location --request POST 'https://uat-connect.terrapay.com:21211/eig/gsma/transactions'\
--header 'X-USERNAME:terrapayuser '\
--header 'X-PASSWORD: 101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b'\
--header 'X-DATE: 2018-03-12 09:00:00'\
--header 'X-ORIGINCOUNTRY:FR'\
--header 'Content-Type: application/json'\
--data--raw
{
"currency": "NGN",
"type": "b2b",
"requestDate": "2020-01-02 10:51:16",
"amount": "35500.00",
"descriptionText": "Gift for my brother",
"requestingOrganisationTransactionReference": "12345868378400387540",
"sendingAmount": "35500.00",
"payinCcyCode": "USD",
"provider": "23401",
"paymentMode": "Bank account",
"authenticationPartnerCode": "4534",
"paymentOption": "Account Credit",
"sendingPartnerCode": "343432223",
"receivingPartnerCode": "343432223",
"debitParty": [
{
"key": "msisdn",
"value": "+4491509874561"
}
],
"creditParty": [
{
"key": "bankaccountno",
"value": "1976010126"
},
{
"key": "sortcode",
"value": "CITINGLA"
},
{
"key": "organisationid",
"value": "Citi Bank"
},
{
"key": "banksubcode",
"value": "0001"
},
{
"key": "bankBranchName",
"value": "Citi Bank"
},
{
"key": "accountName",
"value": "Rajesh"
},
{
"key": "accountIBAN",
"value": "GB29NWBK60161331926819"
},
{
"key": "accountAdditionalNo1",
"value": "2656915085434"
}
],
"senderKyc": {
},
"recipientKyc": {
},
"internationalTransferInformation": {
"quoteId": "QT0FEO4OZZ28PLCA5",
"receivingCountry": "NG",
"remittancePurpose": "Advanced Goods Payments",
"sourceOfFunds": "Savings"
},
"business": {
"senderKyc": {
"businessName": "sample business",
"businessAddress1": "walton's road",
"businessAddressCity": "Lyon",
"businessAddressCountryCode": "US",
"businessPrimaryContactCountryCode": "US",
"businessPrimaryContactNo": "3472034605",
"businessDescription": "Electronics",
"businessCountryCode": "US",
"businessRegistrationType": "b2b",
"businessRegistrationNumber": "23123456789",
"businessRegistrationIssueDate": "2020-09-26",
"businessIDValidThru": "2033-09-26"
},
"recepientKyc": {
"businessName": "oyugi randy",
"businessPINCode": "123456",
"businessAddress1": "24",
"businessAddress2": "walton's road",
"businessAddressCity": "newyork",
"businessAddressState": "NYC",
"businessAddressCountryCode": "NG",
"businessAddressZip": "123456",
"businessPrimaryContactCountryCode": "NG",
"businessPrimaryContactNo": "232323212",
"businessPrimaryContactNoType": "Mobile",
"businessDescription": "Electronics wholesale",
"businessEmail": "rs.electronics@gmail.com",
"businessCountryCode": "NG",
"businessRegistrationType": "b2b",
"businessRegistrationNumber": "2312345678912",
"businessRegistrationIssuedBy": "NYC_TRADE",
"businessRegistrationIssuedAt": "NYC",
"businessRegistrationIssueDate": "2002-08-26",
"businessIDValidThru": "2036-09-26",
"typeofbusiness": "Electronics",
"businessPObox": "12345",
"businessMobile": "343234433"
}
}
}
var myHeaders = new Headers();
myHeaders.append("X-USERNAME", "terrapayuser");
myHeaders.append("X-PASSWORD", "101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b");
myHeaders.append("X-DATE", "2018-04-04 09:27:16");
myHeaders.append("X-ORIGINCOUNTRY", "US");
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({
"amount": "500",
"currency": "INR",
"type": "b2b",
"descriptionText": "Gift for my brother",
"requestDate": "2021-05-23 08:19:36",
"requestingOrganisationTransactionReference": "SrcTxnId004",
"debitParty": [
{
"key": "msisdn",
"value": "+971810456234"
}
],
"creditParty": [
{
"key": "bankaccountno",
"value": "50100002965304"
},
{
"key": "organisationid",
"value": "HDFC Bank"
},
{
"key": "sortcode",
"value": "HDFC0001626"
}
],
"senderKyc": {},
"recipientKyc": {},
"sendingAmount": "35500.00",
"payinCcyCode": "USD",
"paymentMode": "cash",
"authenticationPartnerCode": "4534",
"paymentOption": "Mobile Wallet",
"sendingPartnerCode": "343432223",
"receivingPartnerCode": "343432223",
"business": {
"senderKyc": {
"businessName": "sample business",
"businessAddress1": "alton's road",
"businessAddressCity": "Lyon",
"businessAddressCountryCode": "US",
"businessPrimaryContactCountryCode": "US",
"businessPrimaryContactNo": "3472034605",
"businessDescription": "Electronics",
"businessCountryCode": "US",
"businessRegistrationType": "Private Limited Company",
"businessRegistrationNumber": "23123456789",
"businessRegistrationIssueDate": "2001-09-26",
"businessIDValidThru": "2033-09-26",
"businessEmail": "test@testemail.com"
},
"recepientKyc": {
"businessName": "Oyugi Randy Electric Sale Pvt. Ltd.",
"businessPINCode": "123456",
"businessAddress1": "24",
"businessAddress2": "walton's road",
"businessAddressCity": "newyork",
"businessAddressState": "NYC",
"businessAddressCountryCode": "NG",
"businessAddressZip": "123456",
"businessPrimaryContactCountryCode": "NG",
"businessPrimaryContactNo": "232323212",
"businessPrimaryContactNoType": "Mobile",
"businessDescription": "Electronics wholesale",
"businessEmail": "rs.electronics@gmail.com",
"businessCountryCode": "NG",
"businessRegistrationType": "Private Limited Company",
"businessRegistrationNumber": "2312345678912",
"businessRegistrationIssuedBy": "NYC_TRADE",
"businessRegistrationIssuedAt": "NYC",
"businessRegistrationIssueDate": "2002-08-26",
"businessIDValidThru": "2036-09-26",
"typeofbusiness": "Electronics",
"businessPObox": "12345",
"businessMobile": "343234433"
}
},
"internationalTransferInformation": {
"quoteId": "QR037C1NA1XDKDL53E",
"receivingCountry": "IN",
"remittancePurpose": "Business Travel",
"sourceOfFunds": "Business Income",
"relationshipSender": "Employer"
}
});
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("https://uat-connect.terrapay.com:21211/eig/gsma/transactions", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
import requests
import json
url = "https://uat-connect.terrapay.com:21211/eig/gsma/transactions"
payload = json.dumps({
"amount": "500",
"currency": "INR",
"type": "b2b",
"descriptionText": "Gift for my brother",
"requestDate": "2021-05-23 08:19:36",
"requestingOrganisationTransactionReference": "SrcTxnId004",
"debitParty": [
{
"key": "msisdn",
"value": "+971810456234"
}
],
"creditParty": [
{
"key": "bankaccountno",
"value": "50100002965304"
},
{
"key": "organisationid",
"value": "HDFC Bank"
},
{
"key": "sortcode",
"value": "HDFC0001626"
}
],
"senderKyc": {},
"recipientKyc": {},
"sendingAmount": "35500.00",
"payinCcyCode": "USD",
"paymentMode": "cash",
"authenticationPartnerCode": "4534",
"paymentOption": "Mobile Wallet",
"sendingPartnerCode": "343432223",
"receivingPartnerCode": "343432223",
"business": {
"senderKyc": {
"businessName": "sample business",
"businessAddress1": "alton's road",
"businessAddressCity": "Lyon",
"businessAddressCountryCode": "US",
"businessPrimaryContactCountryCode": "US",
"businessPrimaryContactNo": "3472034605",
"businessDescription": "Electronics",
"businessCountryCode": "US",
"businessRegistrationType": "Private Limited Company",
"businessRegistrationNumber": "23123456789",
"businessRegistrationIssueDate": "2001-09-26",
"businessIDValidThru": "2033-09-26",
"businessEmail": "test@testemail.com"
},
"recepientKyc": {
"businessName": "Oyugi Randy Electric Sale Pvt. Ltd.",
"businessPINCode": "123456",
"businessAddress1": "24",
"businessAddress2": "walton's road",
"businessAddressCity": "newyork",
"businessAddressState": "NYC",
"businessAddressCountryCode": "NG",
"businessAddressZip": "123456",
"businessPrimaryContactCountryCode": "NG",
"businessPrimaryContactNo": "232323212",
"businessPrimaryContactNoType": "Mobile",
"businessDescription": "Electronics wholesale",
"businessEmail": "rs.electronics@gmail.com",
"businessCountryCode": "NG",
"businessRegistrationType": "Private Limited Company",
"businessRegistrationNumber": "2312345678912",
"businessRegistrationIssuedBy": "NYC_TRADE",
"businessRegistrationIssuedAt": "NYC",
"businessRegistrationIssueDate": "2002-08-26",
"businessIDValidThru": "2036-09-26",
"typeofbusiness": "Electronics",
"businessPObox": "12345",
"businessMobile": "343234433"
}
},
"internationalTransferInformation": {
"quoteId": "QR037C1NA1XDKDL53E",
"receivingCountry": "IN",
"remittancePurpose": "Business Travel",
"sourceOfFunds": "Business Income",
"relationshipSender": "Employer"
}
})
headers = {
'X-USERNAME': 'terrapayuser',
'X-PASSWORD': '101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b',
'X-DATE': '2018-04-04 09:27:16',
'X-ORIGINCOUNTRY': 'US',
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\r\n \"amount\": \"500\",\r\n \"currency\": \"INR\",\r\n \"type\": \"b2b\",\r\n \"descriptionText\": \"Gift for my brother\",\r\n \"requestDate\": \"2021-05-23 08:19:36\",\r\n \"requestingOrganisationTransactionReference\": \"SrcTxnId004\",\r\n \"debitParty\": [\r\n {\r\n \"key\": \"msisdn\",\r\n \"value\": \"+971810456234\"\r\n }\r\n ],\r\n \"creditParty\": [\r\n {\r\n \"key\": \"bankaccountno\",\r\n \"value\": \"50100002965304\"\r\n },\r\n {\r\n \"key\": \"organisationid\",\r\n \"value\": \"HDFC Bank\"\r\n },\r\n {\r\n \"key\": \"sortcode\",\r\n \"value\": \"HDFC0001626\"\r\n }\r\n ],\r\n \"senderKyc\": {},\r\n \"recipientKyc\": {},\r\n \"sendingAmount\": \"35500.00\",\r\n \"payinCcyCode\": \"USD\",\r\n \"paymentMode\": \"cash\",\r\n \"authenticationPartnerCode\": \"4534\",\r\n \"paymentOption\": \"Mobile Wallet\",\r\n \"sendingPartnerCode\": \"343432223\",\r\n \"receivingPartnerCode\": \"343432223\",\r\n \"business\": {\r\n \"senderKyc\": {\r\n \"businessName\": \"sample business\",\r\n \"businessAddress1\": \"alton's road\",\r\n \"businessAddressCity\": \"Lyon\",\r\n \"businessAddressCountryCode\": \"US\",\r\n \"businessPrimaryContactCountryCode\": \"US\",\r\n \"businessPrimaryContactNo\": \"3472034605\",\r\n \"businessDescription\": \"Electronics\",\r\n \"businessCountryCode\": \"US\",\r\n \"businessRegistrationType\": \"Private Limited Company\",\r\n \"businessRegistrationNumber\": \"23123456789\",\r\n \"businessRegistrationIssueDate\": \"2001-09-26\",\r\n \"businessIDValidThru\": \"2033-09-26\",\r\n \"businessEmail\": \"test@testemail.com\"\r\n },\r\n \"recepientKyc\": {\r\n \"businessName\": \"Oyugi Randy Electric Sale Pvt. Ltd.\",\r\n \"businessPINCode\": \"123456\",\r\n \"businessAddress1\": \"24\",\r\n \"businessAddress2\": \"walton's road\",\r\n \"businessAddressCity\": \"newyork\",\r\n \"businessAddressState\": \"NYC\",\r\n \"businessAddressCountryCode\": \"NG\",\r\n \"businessAddressZip\": \"123456\",\r\n \"businessPrimaryContactCountryCode\": \"NG\",\r\n \"businessPrimaryContactNo\": \"232323212\",\r\n \"businessPrimaryContactNoType\": \"Mobile\",\r\n \"businessDescription\": \"Electronics wholesale\",\r\n \"businessEmail\": \"rs.electronics@gmail.com\",\r\n \"businessCountryCode\": \"NG\",\r\n \"businessRegistrationType\": \"Private Limited Company\",\r\n \"businessRegistrationNumber\": \"2312345678912\",\r\n \"businessRegistrationIssuedBy\": \"NYC_TRADE\",\r\n \"businessRegistrationIssuedAt\": \"NYC\",\r\n \"businessRegistrationIssueDate\": \"2002-08-26\",\r\n \"businessIDValidThru\": \"2036-09-26\",\r\n \"typeofbusiness\": \"Electronics\",\r\n \"businessPObox\": \"12345\",\r\n \"businessMobile\": \"343234433\"\r\n }\r\n },\r\n \"internationalTransferInformation\": {\r\n \"quoteId\": \"QR037C1NA1XDKDL53E\",\r\n \"receivingCountry\": \"IN\",\r\n \"remittancePurpose\": \"Business Travel\",\r\n \"sourceOfFunds\": \"Business Income\",\r\n \"relationshipSender\": \"Employer\"\r\n }\r\n}");
Request request = new Request.Builder()
.url("https://uat-connect.terrapay.com:21211/eig/gsma/transactions")
.method("POST", body)
.addHeader("X-USERNAME", "terrapayuser")
.addHeader("X-PASSWORD", "101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b")
.addHeader("X-DATE", "2018-04-04 09:27:16")
.addHeader("X-ORIGINCOUNTRY", "US")
.addHeader("Content-Type", "application/json")
.build();
Response response = client.newCall(request).execute();
require "uri"
require "json"
require "net/http"
url = URI("https://uat-connect.terrapay.com:21211/eig/gsma/transactions")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-USERNAME"] = "terrapayuser"
request["X-PASSWORD"] = "101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b"
request["X-DATE"] = "2018-04-04 09:27:16"
request["X-ORIGINCOUNTRY"] = "US"
request["Content-Type"] = "application/json"
request.body = JSON.dump({
"amount": "500",
"currency": "INR",
"type": "b2b",
"descriptionText": "Gift for my brother",
"requestDate": "2021-05-23 08:19:36",
"requestingOrganisationTransactionReference": "SrcTxnId004",
"debitParty": [
{
"key": "msisdn",
"value": "+971810456234"
}
],
"creditParty": [
{
"key": "bankaccountno",
"value": "50100002965304"
},
{
"key": "organisationid",
"value": "HDFC Bank"
},
{
"key": "sortcode",
"value": "HDFC0001626"
}
],
"senderKyc": {},
"recipientKyc": {},
"sendingAmount": "35500.00",
"payinCcyCode": "USD",
"paymentMode": "cash",
"authenticationPartnerCode": "4534",
"paymentOption": "Mobile Wallet",
"sendingPartnerCode": "343432223",
"receivingPartnerCode": "343432223",
"business": {
"senderKyc": {
"businessName": "sample business",
"businessAddress1": "alton's road",
"businessAddressCity": "Lyon",
"businessAddressCountryCode": "US",
"businessPrimaryContactCountryCode": "US",
"businessPrimaryContactNo": "3472034605",
"businessDescription": "Electronics",
"businessCountryCode": "US",
"businessRegistrationType": "Private Limited Company",
"businessRegistrationNumber": "23123456789",
"businessRegistrationIssueDate": "2001-09-26",
"businessIDValidThru": "2033-09-26",
"businessEmail": "test@testemail.com"
},
"recepientKyc": {
"businessName": "Oyugi Randy Electric Sale Pvt. Ltd.",
"businessPINCode": "123456",
"businessAddress1": "24",
"businessAddress2": "walton's road",
"businessAddressCity": "newyork",
"businessAddressState": "NYC",
"businessAddressCountryCode": "NG",
"businessAddressZip": "123456",
"businessPrimaryContactCountryCode": "NG",
"businessPrimaryContactNo": "232323212",
"businessPrimaryContactNoType": "Mobile",
"businessDescription": "Electronics wholesale",
"businessEmail": "rs.electronics@gmail.com",
"businessCountryCode": "NG",
"businessRegistrationType": "Private Limited Company",
"businessRegistrationNumber": "2312345678912",
"businessRegistrationIssuedBy": "NYC_TRADE",
"businessRegistrationIssuedAt": "NYC",
"businessRegistrationIssueDate": "2002-08-26",
"businessIDValidThru": "2036-09-26",
"typeofbusiness": "Electronics",
"businessPObox": "12345",
"businessMobile": "343234433"
}
},
"internationalTransferInformation": {
"quoteId": "QR037C1NA1XDKDL53E",
"receivingCountry": "IN",
"remittancePurpose": "Business Travel",
"sourceOfFunds": "Business Income",
"relationshipSender": "Employer"
}
})
response = https.request(request)
puts response.read_body
URL
https://uat-connect.terrapay.com:21211/eig/gsma/transactions
HTTP Request
POST /eig/gsma/transactions HTTP/1.1
B2P transaction to bank
B2P transaction to bank Try it
B2P transaction to bank
curl --location --request POST 'https://uat-connect.terrapay.com:21211/eig/gsma/transactions'\
--header 'X-USERNAME:terrapayuser'\
--header 'X-PASSWORD: 101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b'\
--header 'X-DATE: 2017-05-03 11:00:00'\
--header 'X-ORIGINCOUNTRY:FR'\
--header 'Content-Type: application/json'\
--data--raw
{
"currency": "NGN",
"type": "b2p",
"requestDate": "2020-01-02 10:51:16",
"amount": "35500.00",
"descriptionText": "Gift for my brother",
"requestingOrganisationTransactionReference": "123458w8378400387553",
"sendingAmount": "35500.00",
"payinCcyCode": "USD",
"provider": "23401",
"paymentMode": "Bank account",
"authenticationPartnerCode": "4534",
"paymentOption": "Account Credit",
"sendingPartnerCode": "343432223",
"receivingPartnerCode": "343432223",
"debitParty": [
{
"key": "msisdn",
"value": "+4491509874561"
}
],
"creditParty": [
{
"key": "bankaccountno",
"value": "1976010126"
},
{
"key": "sortcode",
"value": "CITINGLA"
},
{
"key": "organisationid",
"value": "Citi Bank"
},
{
"key": "banksubcode",
"value": "0001"
},
{
"key": "bankBranchName",
"value": "Citi Bank"
},
{
"key": "accountName",
"value": "Rajesh"
},
{
"key": "accountIBAN",
"value": "GB29NWBK60161331926819"
},
{
"key": "accountAdditionalNo1",
"value": "2656915085434"
}
],
"senderKyc": {
},
"recipientKyc":{
"primaryContactCountryCode": "NG",
"primaryContactNo": "2349061114853",
"primaryContactNoType": "personal",
"subjectName":{
"firstName": "oyugi",
"lastName": "randy",
"fullName": "oyugi randy"
}
},
"internationalTransferInformation":{
"quoteId": "QT0FEO4UG99LQNQC3",
"receivingCountry": "NG",
"remittancePurpose": "Business Travel",
"sourceOfFunds": "Business Income",
"relationshipSender": "Employer"
},
"business": {
"senderKyc": {
"businessName": "sample business",
"businessAddress1": "alton's road",
"businessAddressCity": "Lyon",
"businessAddressCountryCode": "US",
"businessPrimaryContactCountryCode": "US",
"businessPrimaryContactNo": "3472034605",
"businessDescription": "Electronics",
"businessCountryCode": "US",
"businessRegistrationType": "b2p",
"businessRegistrationNumber": "23123456789",
"businessRegistrationIssueDate": "2001-09-26",
"businessIDValidThru": "2033-09-26"
},
"recepientKyc": {
}
}
}
var myHeaders = new Headers();
myHeaders.append("X-USERNAME", "terrapayuser");
myHeaders.append("X-PASSWORD", "101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b");
myHeaders.append("X-DATE", "2018-04-04 09:27:16");
myHeaders.append("X-ORIGINCOUNTRY", "US");
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({
"amount": "500",
"currency": "INR",
"type": "b2p",
"descriptionText": "Gift for my brother",
"requestDate": "2021-05-23 08:19:36",
"requestingOrganisationTransactionReference": "SrcTxnId003",
"debitParty": [
{
"key": "msisdn",
"value": "+971810456234"
}
],
"creditParty": [
{
"key": "bankaccountno",
"value": "50100002965304"
},
{
"key": "organisationid",
"value": "HDFC Bank"
},
{
"key": "sortcode",
"value": "HDFC0001626"
}
],
"senderKyc": {},
"recipientKyc": {
"subjectName": {
"firstName": "Deepa",
"lastName": "Jain",
"fullName": "Deepa Jain"
}
},
"sendingAmount": "35500.00",
"payinCcyCode": "USD",
"paymentMode": "cash",
"authenticationPartnerCode": "4534",
"paymentOption": "Mobile Wallet",
"sendingPartnerCode": "343432223",
"receivingPartnerCode": "343432223",
"business": {
"senderKyc": {
"businessName": "sample business",
"businessAddress1": "alton's road",
"businessAddressCity": "Lyon",
"businessAddressCountryCode": "US",
"businessPrimaryContactCountryCode": "US",
"businessPrimaryContactNo": "3472034605",
"businessDescription": "Electronics",
"businessCountryCode": "US",
"businessRegistrationType": "Private Limited Company",
"businessRegistrationNumber": "23123456789",
"businessRegistrationIssueDate": "2001-09-26",
"businessIDValidThru": "2033-09-26",
"businessEmail": "test@testemail.com"
},
"recepientKyc": {}
},
"internationalTransferInformation": {
"quoteId": "QR037C1NZWQLJ42P1F",
"receivingCountry": "IN",
"remittancePurpose": "Business Travel",
"sourceOfFunds": "Business Income",
"relationshipSender": "Employer"
}
});
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("https://uat-connect.terrapay.com:21211/eig/gsma/transactions", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
import requests
import json
url = "https://uat-connect.terrapay.com:21211/eig/gsma/transactions"
payload = json.dumps({
"amount": "500",
"currency": "INR",
"type": "b2p",
"descriptionText": "Gift for my brother",
"requestDate": "2021-05-23 08:19:36",
"requestingOrganisationTransactionReference": "SrcTxnId003",
"debitParty": [
{
"key": "msisdn",
"value": "+971810456234"
}
],
"creditParty": [
{
"key": "bankaccountno",
"value": "50100002965304"
},
{
"key": "organisationid",
"value": "HDFC Bank"
},
{
"key": "sortcode",
"value": "HDFC0001626"
}
],
"senderKyc": {},
"recipientKyc": {
"subjectName": {
"firstName": "Deepa",
"lastName": "Jain",
"fullName": "Deepa Jain"
}
},
"sendingAmount": "35500.00",
"payinCcyCode": "USD",
"paymentMode": "cash",
"authenticationPartnerCode": "4534",
"paymentOption": "Mobile Wallet",
"sendingPartnerCode": "343432223",
"receivingPartnerCode": "343432223",
"business": {
"senderKyc": {
"businessName": "sample business",
"businessAddress1": "alton's road",
"businessAddressCity": "Lyon",
"businessAddressCountryCode": "US",
"businessPrimaryContactCountryCode": "US",
"businessPrimaryContactNo": "3472034605",
"businessDescription": "Electronics",
"businessCountryCode": "US",
"businessRegistrationType": "Private Limited Company",
"businessRegistrationNumber": "23123456789",
"businessRegistrationIssueDate": "2001-09-26",
"businessIDValidThru": "2033-09-26",
"businessEmail": "test@testemail.com"
},
"recepientKyc": {}
},
"internationalTransferInformation": {
"quoteId": "QR037C1NZWQLJ42P1F",
"receivingCountry": "IN",
"remittancePurpose": "Business Travel",
"sourceOfFunds": "Business Income",
"relationshipSender": "Employer"
}
})
headers = {
'X-USERNAME': 'terrapayuser',
'X-PASSWORD': '101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b',
'X-DATE': '2018-04-04 09:27:16',
'X-ORIGINCOUNTRY': 'US',
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\r\n \"amount\": \"500\",\r\n \"currency\": \"INR\",\r\n \"type\": \"b2p\",\r\n \"descriptionText\": \"Gift for my brother\",\r\n \"requestDate\": \"2021-05-23 08:19:36\",\r\n \"requestingOrganisationTransactionReference\": \"SrcTxnId003\",\r\n \"debitParty\": [\r\n {\r\n \"key\": \"msisdn\",\r\n \"value\": \"+971810456234\"\r\n }\r\n ],\r\n \"creditParty\": [\r\n {\r\n \"key\": \"bankaccountno\",\r\n \"value\": \"50100002965304\"\r\n },\r\n {\r\n \"key\": \"organisationid\",\r\n \"value\": \"HDFC Bank\"\r\n },\r\n {\r\n \"key\": \"sortcode\",\r\n \"value\": \"HDFC0001626\"\r\n }\r\n ],\r\n \"senderKyc\": {},\r\n \"recipientKyc\": {\r\n \"subjectName\": {\r\n \"firstName\": \"Deepa\",\r\n \"lastName\": \"Jain\",\r\n \"fullName\": \"Deepa Jain\"\r\n }\r\n },\r\n \"sendingAmount\": \"35500.00\",\r\n \"payinCcyCode\": \"USD\",\r\n \"paymentMode\": \"cash\",\r\n \"authenticationPartnerCode\": \"4534\",\r\n \"paymentOption\": \"Mobile Wallet\",\r\n \"sendingPartnerCode\": \"343432223\",\r\n \"receivingPartnerCode\": \"343432223\",\r\n \"business\": {\r\n \"senderKyc\": {\r\n \"businessName\": \"sample business\",\r\n \"businessAddress1\": \"alton's road\",\r\n \"businessAddressCity\": \"Lyon\",\r\n \"businessAddressCountryCode\": \"US\",\r\n \"businessPrimaryContactCountryCode\": \"US\",\r\n \"businessPrimaryContactNo\": \"3472034605\",\r\n \"businessDescription\": \"Electronics\",\r\n \"businessCountryCode\": \"US\",\r\n \"businessRegistrationType\": \"Private Limited Company\",\r\n \"businessRegistrationNumber\": \"23123456789\",\r\n \"businessRegistrationIssueDate\": \"2001-09-26\",\r\n \"businessIDValidThru\": \"2033-09-26\",\r\n \"businessEmail\":\"test@testemail.com\"\r\n },\r\n \"recepientKyc\": {}\r\n },\r\n \"internationalTransferInformation\": {\r\n \"quoteId\": \"QR037C1NZWQLJ42P1F\",\r\n \"receivingCountry\": \"IN\",\r\n \"remittancePurpose\": \"Business Travel\",\r\n \"sourceOfFunds\": \"Business Income\",\r\n \"relationshipSender\": \"Employer\"\r\n }\r\n}");
Request request = new Request.Builder()
.url("https://uat-connect.terrapay.com:21211/eig/gsma/transactions")
.method("POST", body)
.addHeader("X-USERNAME", "terrapayuser")
.addHeader("X-PASSWORD", "101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b")
.addHeader("X-DATE", "2018-04-04 09:27:16")
.addHeader("X-ORIGINCOUNTRY", "US")
.addHeader("Content-Type", "application/json")
.build();
Response response = client.newCall(request).execute();
require "uri"
require "json"
require "net/http"
url = URI("https://uat-connect.terrapay.com:21211/eig/gsma/transactions")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-USERNAME"] = "terrapayuser"
request["X-PASSWORD"] = "101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b"
request["X-DATE"] = "2018-04-04 09:27:16"
request["X-ORIGINCOUNTRY"] = "US"
request["Content-Type"] = "application/json"
request.body = JSON.dump({
"amount": "500",
"currency": "INR",
"type": "b2p",
"descriptionText": "Gift for my brother",
"requestDate": "2021-05-23 08:19:36",
"requestingOrganisationTransactionReference": "SrcTxnId003",
"debitParty": [
{
"key": "msisdn",
"value": "+971810456234"
}
],
"creditParty": [
{
"key": "bankaccountno",
"value": "50100002965304"
},
{
"key": "organisationid",
"value": "HDFC Bank"
},
{
"key": "sortcode",
"value": "HDFC0001626"
}
],
"senderKyc": {},
"recipientKyc": {
"subjectName": {
"firstName": "Deepa",
"lastName": "Jain",
"fullName": "Deepa Jain"
}
},
"sendingAmount": "35500.00",
"payinCcyCode": "USD",
"paymentMode": "cash",
"authenticationPartnerCode": "4534",
"paymentOption": "Mobile Wallet",
"sendingPartnerCode": "343432223",
"receivingPartnerCode": "343432223",
"business": {
"senderKyc": {
"businessName": "sample business",
"businessAddress1": "alton's road",
"businessAddressCity": "Lyon",
"businessAddressCountryCode": "US",
"businessPrimaryContactCountryCode": "US",
"businessPrimaryContactNo": "3472034605",
"businessDescription": "Electronics",
"businessCountryCode": "US",
"businessRegistrationType": "Private Limited Company",
"businessRegistrationNumber": "23123456789",
"businessRegistrationIssueDate": "2001-09-26",
"businessIDValidThru": "2033-09-26",
"businessEmail": "test@testemail.com"
},
"recepientKyc": {}
},
"internationalTransferInformation": {
"quoteId": "QR037C1NZWQLJ42P1F",
"receivingCountry": "IN",
"remittancePurpose": "Business Travel",
"sourceOfFunds": "Business Income",
"relationshipSender": "Employer"
}
})
response = https.request(request)
puts response.read_body
URL
https://uat-connect.terrapay.com:21211/eig/gsma/transactions
HTTP Request
POST /eig/gsma/transactions HTTP/1.1
B2P transaction to mobile wallet
B2P transaction to mobile wallet Try it
B2P transaction to mobile wallet
curl --location --request POST 'https://uat-connect.terrapay.com:21211/eig/gsma/transactions'\
--header 'X-USERNAME: terrapayuser'\
--header 'X-PASSWORD: 101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b'\
--header 'X-DATE: 2019-08-25 12:00:00'\
--header 'X-ORIGINCOUNTRY:FR'\
--header 'Content-Type: application/json'\
--data-raw
{
"currency": "NGN",
"type": "b2p",
"requestDate": "2020-01-02 10:51:16",
"amount": "35500.00",
"descriptionText": "Gift for my brother",
"requestingOrganisationTransactionReference": "123458w8378400387553",
"sendingAmount": "35500.00",
"payinCcyCode": "USD",
"provider": "23401",
"paymentMode": "cash",
"authenticationPartnerCode": "4534",
"paymentOption": "Mobile Wallet",
"sendingPartnerCode": "343432223",
"receivingPartnerCode": "343432223",
"debitParty": [
{
"key": "msisdn",
"value": "+4491509874561"
}
],
"creditParty": [
{
"key": "msisdn",
"value": "+2349061114853"
}
],
"senderKyc": {
},
"recipientKyc":{
"primaryContactCountryCode": "NG",
"primaryContactNo": "2349061114853",
"primaryContactNoType": "personal",
"subjectName":{
"firstName": "Kevin",
"lastName": "Hawkins",
"fullName": "Kevin Hawkins"
}
},
"internationalTransferInformation":{
"quoteId": "QT0FEO4UG99LQNQC3",
"receivingCountry": "NG",
"remittancePurpose": "Business_Travel",
"sourceOfFunds": "Business_Income",
"relationshipSender": "Employer"
},
"business": {
"senderKyc": {
"businessName": "sample business",
"businessAddress1": "alton's road",
"businessAddressCity": "Lyon",
"businessAddressCountryCode": "US",
"businessPrimaryContactCountryCode": "US",
"businessPrimaryContactNo": "3472034605",
"businessDescription": "Electronics",
"businessCountryCode": "US",
"businessRegistrationType": "b2p",
"businessRegistrationNumber": "23123456789",
"businessRegistrationIssueDate": "2001-09-26",
"businessIDValidThru": "2033-09-26"
},
"recepientKyc": {
}
}
}
var myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({
"amount": "500",
"currency": "INR",
"type": "b2p",
"descriptionText": "Gift for my brother",
"requestDate": "2021-05-23 08:19:36",
"requestingOrganisationTransactionReference": "SrcTxnId003",
"debitParty": [
{
"key": "msisdn",
"value": "+4491509874561"
}
],
"creditParty": [
{
"key": "msisdn",
"value": "+2349061114853"
}
],
"senderKyc": {},
"recipientKyc": {
"subjectName": {
"firstName": "Deepa",
"lastName": "Jain",
"fullName": "Deepa Jain"
}
},
"sendingAmount": "35500.00",
"payinCcyCode": "USD",
"paymentMode": "cash",
"authenticationPartnerCode": "4534",
"paymentOption": "Mobile Wallet",
"sendingPartnerCode": "343432223",
"receivingPartnerCode": "343432223",
"business": {
"senderKyc": {
"businessName": "sample business",
"businessAddress1": "alton's road",
"businessAddressCity": "Lyon",
"businessAddressCountryCode": "US",
"businessPrimaryContactCountryCode": "US",
"businessPrimaryContactNo": "3472034605",
"businessDescription": "Electronics",
"businessCountryCode": "US",
"businessRegistrationType": "Private Limited Company",
"businessRegistrationNumber": "23123456789",
"businessRegistrationIssueDate": "2001-09-26",
"businessIDValidThru": "2033-09-26",
"businessEmail": "test@testemail.com"
},
"recepientKyc": {}
},
"internationalTransferInformation": {
"quoteId": "QR037C1NZWQLJ42P1F",
"receivingCountry": "IN",
"remittancePurpose": "Business Travel",
"sourceOfFunds": "Business Income",
"relationshipSender": "Employer"
}
});
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("https://uat-connect.terrapay.com:21211/eig/gsma/transactions", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
import requests
import json
url = "https://uat-connect.terrapay.com:21211/eig/gsma/transactions"
payload = json.dumps({
"amount": "500",
"currency": "INR",
"type": "b2p",
"descriptionText": "Gift for my brother",
"requestDate": "2021-05-23 08:19:36",
"requestingOrganisationTransactionReference": "SrcTxnId003",
"debitParty": [
{
"key": "msisdn",
"value": "+4491509874561"
}
],
"creditParty": [
{
"key": "msisdn",
"value": "+2349061114853"
}
],
"senderKyc": {},
"recipientKyc": {
"subjectName": {
"firstName": "Deepa",
"lastName": "Jain",
"fullName": "Deepa Jain"
}
},
"sendingAmount": "35500.00",
"payinCcyCode": "USD",
"paymentMode": "cash",
"authenticationPartnerCode": "4534",
"paymentOption": "Mobile Wallet",
"sendingPartnerCode": "343432223",
"receivingPartnerCode": "343432223",
"business": {
"senderKyc": {
"businessName": "sample business",
"businessAddress1": "alton's road",
"businessAddressCity": "Lyon",
"businessAddressCountryCode": "US",
"businessPrimaryContactCountryCode": "US",
"businessPrimaryContactNo": "3472034605",
"businessDescription": "Electronics",
"businessCountryCode": "US",
"businessRegistrationType": "Private Limited Company",
"businessRegistrationNumber": "23123456789",
"businessRegistrationIssueDate": "2001-09-26",
"businessIDValidThru": "2033-09-26",
"businessEmail": "test@testemail.com"
},
"recepientKyc": {}
},
"internationalTransferInformation": {
"quoteId": "QR037C1NZWQLJ42P1F",
"receivingCountry": "IN",
"remittancePurpose": "Business Travel",
"sourceOfFunds": "Business Income",
"relationshipSender": "Employer"
}
})
headers = {
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\r\n \"amount\": \"500\",\r\n \"currency\": \"INR\",\r\n \"type\": \"b2p\",\r\n \"descriptionText\": \"Gift for my brother\",\r\n \"requestDate\": \"2021-05-23 08:19:36\",\r\n \"requestingOrganisationTransactionReference\": \"SrcTxnId003\",\r\n \"debitParty\": [\r\n {\r\n\t\t\"key\": \"msisdn\",\r\n\t\t\"value\": \"+4491509874561\"\r\n\t} \r\n ],\r\n \"creditParty\": [\r\n {\r\n\t\t\"key\": \"msisdn\",\r\n\t\t\"value\": \"+2349061114853\"\r\n\t\t}\r\n ],\r\n \"senderKyc\": {},\r\n \"recipientKyc\": {\r\n \"subjectName\": {\r\n \"firstName\": \"Deepa\",\r\n \"lastName\": \"Jain\",\r\n \"fullName\": \"Deepa Jain\"\r\n }\r\n },\r\n \"sendingAmount\": \"35500.00\",\r\n \"payinCcyCode\": \"USD\",\r\n \"paymentMode\": \"cash\",\r\n \"authenticationPartnerCode\": \"4534\",\r\n \"paymentOption\": \"Mobile Wallet\",\r\n \"sendingPartnerCode\": \"343432223\",\r\n \"receivingPartnerCode\": \"343432223\",\r\n \"business\": {\r\n \"senderKyc\": {\r\n \"businessName\": \"sample business\",\r\n \"businessAddress1\": \"alton's road\",\r\n \"businessAddressCity\": \"Lyon\",\r\n \"businessAddressCountryCode\": \"US\",\r\n \"businessPrimaryContactCountryCode\": \"US\",\r\n \"businessPrimaryContactNo\": \"3472034605\",\r\n \"businessDescription\": \"Electronics\",\r\n \"businessCountryCode\": \"US\",\r\n \"businessRegistrationType\": \"Private Limited Company\",\r\n \"businessRegistrationNumber\": \"23123456789\",\r\n \"businessRegistrationIssueDate\": \"2001-09-26\",\r\n \"businessIDValidThru\": \"2033-09-26\",\r\n \"businessEmail\":\"test@testemail.com\"\r\n },\r\n \"recepientKyc\": {}\r\n },\r\n \"internationalTransferInformation\": {\r\n \"quoteId\": \"QR037C1NZWQLJ42P1F\",\r\n \"receivingCountry\": \"IN\",\r\n \"remittancePurpose\": \"Business Travel\",\r\n \"sourceOfFunds\": \"Business Income\",\r\n \"relationshipSender\": \"Employer\"\r\n }\r\n}");
Request request = new Request.Builder()
.url("https://uat-connect.terrapay.com:21211/eig/gsma/transactions")
.method("POST", body)
.addHeader("Content-Type", "application/json")
.build();
Response response = client.newCall(request).execute();
require "uri"
require "json"
require "net/http"
url = URI("https://uat-connect.terrapay.com:21211/eig/gsma/transactions")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = "application/json"
request.body = JSON.dump({
"amount": "500",
"currency": "INR",
"type": "b2p",
"descriptionText": "Gift for my brother",
"requestDate": "2021-05-23 08:19:36",
"requestingOrganisationTransactionReference": "SrcTxnId003",
"debitParty": [
{
"key": "msisdn",
"value": "+4491509874561"
}
],
"creditParty": [
{
"key": "msisdn",
"value": "+2349061114853"
}
],
"senderKyc": {},
"recipientKyc": {
"subjectName": {
"firstName": "Deepa",
"lastName": "Jain",
"fullName": "Deepa Jain"
}
},
"sendingAmount": "35500.00",
"payinCcyCode": "USD",
"paymentMode": "cash",
"authenticationPartnerCode": "4534",
"paymentOption": "Mobile Wallet",
"sendingPartnerCode": "343432223",
"receivingPartnerCode": "343432223",
"business": {
"senderKyc": {
"businessName": "sample business",
"businessAddress1": "alton's road",
"businessAddressCity": "Lyon",
"businessAddressCountryCode": "US",
"businessPrimaryContactCountryCode": "US",
"businessPrimaryContactNo": "3472034605",
"businessDescription": "Electronics",
"businessCountryCode": "US",
"businessRegistrationType": "Private Limited Company",
"businessRegistrationNumber": "23123456789",
"businessRegistrationIssueDate": "2001-09-26",
"businessIDValidThru": "2033-09-26",
"businessEmail": "test@testemail.com"
},
"recepientKyc": {}
},
"internationalTransferInformation": {
"quoteId": "QR037C1NZWQLJ42P1F",
"receivingCountry": "IN",
"remittancePurpose": "Business Travel",
"sourceOfFunds": "Business Income",
"relationshipSender": "Employer"
}
})
response = https.request(request)
puts response.read_body
URL
https://uat-connect.terrapay.com:21211/eig/gsma/transactions
HTTP Request
POST /eig/gsma/transactions HTTP/1.1
P2B transaction to bank
P2B transaction to bank Try it
P2B transaction to bank
curl --location --request POST 'https://uat-connect.terrapay.com:21211/eig/gsma/transactions'\
--header 'X-USERNAME: terrapayuser'\
--header 'X-PASSWORD:
101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825'\
--header 'X-DATE: 2017-05-03 11:00:00'\
--header 'X-ORIGINCOUNTRY:FR'\
--header 'Content-Type: application/json'\
--data-raw
{
"currency": "NGN",
"type": "p2b",
"requestDate": "2020-01-02 10:51:16",
"amount": "35500.00",
"descriptionText": "Gift for my brother",
"requestingOrganisationTransactionReference": "123458w8378400387553",
"sendingAmount": "35500.00",
"payinCcyCode": "USD",
"provider": "23401",
"paymentMode": "Bank account",
"authenticationPartnerCode": "4534",
"paymentOption": "Account Credit",
"sendingPartnerCode": "343432223",
"receivingPartnerCode": "343432223",
"debitParty": [
{
"key": "msisdn",
"value": "+4491509874561"
}
],
"creditParty": [
{
"key": "bankaccountno",
"value": "1976010126"
},
{
"key": "sortcode",
"value": "CITINGLA"
},
{
"key": "organisationid",
"value": "Citi Bank"
},
{
"key": "banksubcode",
"value": "0001"
},
{
"key": "bankBranchName",
"value": "Citi Bank"
},
{
"key": "accountName",
"value": "Rajesh"
},
{
"key": "accountIBAN",
"value": "GB29NWBK60161331926819"
},
{
"key": "accountAdditionalNo1",
"value": "2656915085434"
}
],
"senderKyc": {
"nationality": "US",
"dateOfBirth": "1986-06-28",
"gender": "M",
"primaryContactCountryCode": "NG",
"primaryContactNo": "2349061114853",
"primaryContactNoType": "personal",
"idDocument": [
{
"idType": "nationalidcard",
"idNumber": "123456789",
"issueDate": "2003-09-26",
"expiryDate": "2033-09-26",
"issuerCountry": "US"
}
],
"postalAddress": {
"addressLine1": "49",
"addressLine2": "park street",
"addressLine3": "walton's road",
"city": "Lyon",
"stateProvince": "Lyon",
"postalCode": "123456",
"country": "US"
},
"subjectName": {
"title": "Mr.",
"firstName": "Einstein",
"middleName": "James",
"lastName": "Bela",
"fullName": "Einstien James Bela"
}
},
"recipientKyc":{
},
"internationalTransferInformation":{
"quoteId": "QT0FEO4TUIMN33Z6B",
"receivingCountry": "NG",
"remittancePurpose": "Business profits to Parents",
"sourceOfFunds": "Savings",
"relationshipSender": "Brother"
},
"business": {
"senderKyc": {
},
"recepientKyc": {
"businessName": "oyugi randy",
"businessPINCode": "123456",
"businessAddress1": "24",
"businessAddress2": "walton's road",
"businessAddressCity": "newyork",
"businessAddressState": "NYC",
"businessAddressCountryCode": "NG",
"businessAddressZip": "123456",
"businessPrimaryContactCountryCode": "NG",
"businessPrimaryContactNo": "232323212",
"businessPrimaryContactNoType": "Mobile",
"businessDescription": "Electronics wholesale",
"businessEmail": "vrs.electronics@gmail.com",
"businessCountryCode": "NG",
"businessRegistrationType": "p2b",
"businessRegistrationNumber": "2312345678912",
"businessRegistrationIssuedBy": "NYC_TRADE",
"businessRegistrationIssuedAt": "NYC",
"businessRegistrationIssueDate": "2002-09-26",
"businessIDValidThru": "2036-09-26",
"typeofbusiness": "Electronics",
"businessPObox": "12345",
"businessMobile": "343234433"
}
}
}
var myHeaders = new Headers();
myHeaders.append("X-USERNAME", "terrapayuser");
myHeaders.append("X-PASSWORD", "101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b");
myHeaders.append("X-DATE", "2018-04-04 09:27:16");
myHeaders.append("X-ORIGINCOUNTRY", "US");
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({
"amount": "500",
"currency": "INR",
"type": "p2b",
"descriptionText": "Gift for my brother",
"requestDate": "2021-05-23 08:19:36",
"requestingOrganisationTransactionReference": "SrcTxnId005",
"debitParty": [
{
"key": "msisdn",
"value": "+971810456234"
}
],
"creditParty": [
{
"key": "bankaccountno",
"value": "50100002965304"
},
{
"key": "organisationid",
"value": "HDFC Bank"
},
{
"key": "sortcode",
"value": "HDFC0001626"
}
],
"senderKyc": {
"nationality": "AE",
"dateOfBirth": "1967-05-28",
"gender": "M",
"idDocument": [
{
"idType": "VOTER_CARD",
"idNumber": "13321115521",
"issueDate": "1967-05-28",
"expiryDate": "2067-05-28",
"issuerCountry": "AE"
}
],
"postalAddress": {
"addressLine1": "49 , park street",
"addressLine2": "12",
"addressLine3": "12",
"city": "12",
"stateProvince": "12",
"postalCode": "50000",
"country": "US"
},
"subjectName": {
"firstName": "Test",
"middleName": "",
"lastName": "Sender2",
"fullName": "Test Sender2"
}
},
"recipientKyc": {},
"sendingAmount": "35500.00",
"payinCcyCode": "USD",
"paymentMode": "cash",
"authenticationPartnerCode": "4534",
"paymentOption": "Mobile Wallet",
"sendingPartnerCode": "343432223",
"receivingPartnerCode": "343432223",
"business": {
"senderKyc": {},
"recepientKyc": {
"businessName": "Oyugi Randy Electric Sale Pvt. Ltd.",
"businessPINCode": "123456",
"businessAddress1": "24",
"businessAddress2": "walton's road",
"businessAddressCity": "newyork",
"businessAddressState": "NYC",
"businessAddressCountryCode": "NG",
"businessAddressZip": "123456",
"businessPrimaryContactCountryCode": "NG",
"businessPrimaryContactNo": "232323212",
"businessPrimaryContactNoType": "Mobile",
"businessDescription": "Electronics wholesale",
"businessEmail": "rs.electronics@gmail.com",
"businessCountryCode": "NG",
"businessRegistrationType": "Private Limited Company",
"businessRegistrationNumber": "2312345678912",
"businessRegistrationIssuedBy": "NYC_TRADE",
"businessRegistrationIssuedAt": "NYC",
"businessRegistrationIssueDate": "2002-08-26",
"businessIDValidThru": "2036-09-26",
"typeofbusiness": "Electronics",
"businessPObox": "12345",
"businessMobile": "343234433"
}
},
"internationalTransferInformation": {
"quoteId": "QR037C1NA6ZXBSQ88B",
"receivingCountry": "IN",
"remittancePurpose": "Business Travel",
"sourceOfFunds": "Business Income",
"relationshipSender": "Employer"
}
});
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("https://uat-connect.terrapay.com:21211/eig/gsma/transactions", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
import requests
import json
url = "https://uat-connect.terrapay.com:21211/eig/gsma/transactions"
payload = json.dumps({
"amount": "500",
"currency": "INR",
"type": "p2b",
"descriptionText": "Gift for my brother",
"requestDate": "2021-05-23 08:19:36",
"requestingOrganisationTransactionReference": "SrcTxnId005",
"debitParty": [
{
"key": "msisdn",
"value": "+971810456234"
}
],
"creditParty": [
{
"key": "bankaccountno",
"value": "50100002965304"
},
{
"key": "organisationid",
"value": "HDFC Bank"
},
{
"key": "sortcode",
"value": "HDFC0001626"
}
],
"senderKyc": {
"nationality": "AE",
"dateOfBirth": "1967-05-28",
"gender": "M",
"idDocument": [
{
"idType": "VOTER_CARD",
"idNumber": "13321115521",
"issueDate": "1967-05-28",
"expiryDate": "2067-05-28",
"issuerCountry": "AE"
}
],
"postalAddress": {
"addressLine1": "49 , park street",
"addressLine2": "12",
"addressLine3": "12",
"city": "12",
"stateProvince": "12",
"postalCode": "50000",
"country": "US"
},
"subjectName": {
"firstName": "Test",
"middleName": "",
"lastName": "Sender2",
"fullName": "Test Sender2"
}
},
"recipientKyc": {},
"sendingAmount": "35500.00",
"payinCcyCode": "USD",
"paymentMode": "cash",
"authenticationPartnerCode": "4534",
"paymentOption": "Mobile Wallet",
"sendingPartnerCode": "343432223",
"receivingPartnerCode": "343432223",
"business": {
"senderKyc": {},
"recepientKyc": {
"businessName": "Oyugi Randy Electric Sale Pvt. Ltd.",
"businessPINCode": "123456",
"businessAddress1": "24",
"businessAddress2": "walton's road",
"businessAddressCity": "newyork",
"businessAddressState": "NYC",
"businessAddressCountryCode": "NG",
"businessAddressZip": "123456",
"businessPrimaryContactCountryCode": "NG",
"businessPrimaryContactNo": "232323212",
"businessPrimaryContactNoType": "Mobile",
"businessDescription": "Electronics wholesale",
"businessEmail": "rs.electronics@gmail.com",
"businessCountryCode": "NG",
"businessRegistrationType": "Private Limited Company",
"businessRegistrationNumber": "2312345678912",
"businessRegistrationIssuedBy": "NYC_TRADE",
"businessRegistrationIssuedAt": "NYC",
"businessRegistrationIssueDate": "2002-08-26",
"businessIDValidThru": "2036-09-26",
"typeofbusiness": "Electronics",
"businessPObox": "12345",
"businessMobile": "343234433"
}
},
"internationalTransferInformation": {
"quoteId": "QR037C1NA6ZXBSQ88B",
"receivingCountry": "IN",
"remittancePurpose": "Business Travel",
"sourceOfFunds": "Business Income",
"relationshipSender": "Employer"
}
})
headers = {
'X-USERNAME': 'terrapayuser',
'X-PASSWORD': '101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b',
'X-DATE': '2018-04-04 09:27:16',
'X-ORIGINCOUNTRY': 'US',
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\r\n \"amount\": \"500\",\r\n \"currency\": \"INR\",\r\n \"type\": \"p2b\",\r\n \"descriptionText\": \"Gift for my brother\",\r\n \"requestDate\": \"2021-05-23 08:19:36\",\r\n \"requestingOrganisationTransactionReference\": \"SrcTxnId005\",\r\n \"debitParty\": [\r\n {\r\n \"key\": \"msisdn\",\r\n \"value\": \"+971810456234\"\r\n }\r\n ],\r\n \"creditParty\": [\r\n {\r\n \"key\": \"bankaccountno\",\r\n \"value\": \"50100002965304\"\r\n },\r\n {\r\n \"key\": \"organisationid\",\r\n \"value\": \"HDFC Bank\"\r\n },\r\n {\r\n \"key\": \"sortcode\",\r\n \"value\": \"HDFC0001626\"\r\n }\r\n ],\r\n \"senderKyc\": {\r\n \"nationality\": \"AE\",\r\n \"dateOfBirth\": \"1967-05-28\",\r\n \"gender\": \"M\",\r\n \"idDocument\": [\r\n {\r\n \"idType\": \"VOTER_CARD\",\r\n \"idNumber\": \"13321115521\",\r\n \"issueDate\": \"1967-05-28\",\r\n \"expiryDate\": \"2067-05-28\",\r\n \"issuerCountry\": \"AE\"\r\n }\r\n ],\r\n \"postalAddress\": {\r\n \"addressLine1\": \"49 , park street\",\r\n \"addressLine2\": \"12\",\r\n \"addressLine3\": \"12\",\r\n \"city\": \"12\",\r\n \"stateProvince\": \"12\",\r\n \"postalCode\": \"50000\",\r\n \"country\": \"US\"\r\n },\r\n \"subjectName\": {\r\n \"firstName\": \"Test\",\r\n \"middleName\": \"\",\r\n \"lastName\": \"Sender2\",\r\n \"fullName\": \"Test Sender2\"\r\n }\r\n },\r\n \"recipientKyc\": {},\r\n \"sendingAmount\": \"35500.00\",\r\n \"payinCcyCode\": \"USD\",\r\n \"paymentMode\": \"cash\",\r\n \"authenticationPartnerCode\": \"4534\",\r\n \"paymentOption\": \"Mobile Wallet\",\r\n \"sendingPartnerCode\": \"343432223\",\r\n \"receivingPartnerCode\": \"343432223\",\r\n \"business\": {\r\n \"senderKyc\": {},\r\n \"recepientKyc\": {\r\n \"businessName\": \"Oyugi Randy Electric Sale Pvt. Ltd.\",\r\n \"businessPINCode\": \"123456\",\r\n \"businessAddress1\": \"24\",\r\n \"businessAddress2\": \"walton's road\",\r\n \"businessAddressCity\": \"newyork\",\r\n \"businessAddressState\": \"NYC\",\r\n \"businessAddressCountryCode\": \"NG\",\r\n \"businessAddressZip\": \"123456\",\r\n \"businessPrimaryContactCountryCode\": \"NG\",\r\n \"businessPrimaryContactNo\": \"232323212\",\r\n \"businessPrimaryContactNoType\": \"Mobile\",\r\n \"businessDescription\": \"Electronics wholesale\",\r\n \"businessEmail\": \"rs.electronics@gmail.com\",\r\n \"businessCountryCode\": \"NG\",\r\n \"businessRegistrationType\": \"Private Limited Company\",\r\n \"businessRegistrationNumber\": \"2312345678912\",\r\n \"businessRegistrationIssuedBy\": \"NYC_TRADE\",\r\n \"businessRegistrationIssuedAt\": \"NYC\",\r\n \"businessRegistrationIssueDate\": \"2002-08-26\",\r\n \"businessIDValidThru\": \"2036-09-26\",\r\n \"typeofbusiness\": \"Electronics\",\r\n \"businessPObox\": \"12345\",\r\n \"businessMobile\": \"343234433\"\r\n }\r\n },\r\n \"internationalTransferInformation\": {\r\n \"quoteId\": \"QR037C1NA6ZXBSQ88B\",\r\n \"receivingCountry\": \"IN\",\r\n \"remittancePurpose\": \"Business Travel\",\r\n \"sourceOfFunds\": \"Business Income\",\r\n \"relationshipSender\": \"Employer\"\r\n }\r\n}");
Request request = new Request.Builder()
.url("https://uat-connect.terrapay.com:21211/eig/gsma/transactions")
.method("POST", body)
.addHeader("X-USERNAME", "terrapayuser")
.addHeader("X-PASSWORD", "101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b")
.addHeader("X-DATE", "2018-04-04 09:27:16")
.addHeader("X-ORIGINCOUNTRY", "US")
.addHeader("Content-Type", "application/json")
.build();
Response response = client.newCall(request).execute();
require "uri"
require "json"
require "net/http"
url = URI("https://uat-connect.terrapay.com:21211/eig/gsma/transactions")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-USERNAME"] = "terrapayuser"
request["X-PASSWORD"] = "101dfd2422f23f06120b77ab17d39229ff9bb40563eae042bc6cc6e8f9f1825b"
request["X-DATE"] = "2018-04-04 09:27:16"
request["X-ORIGINCOUNTRY"] = "US"
request["Content-Type"] = "application/json"
request.body = JSON.dump({
"amount": "500",
"currency": "INR",
"type": "p2b",
"descriptionText": "Gift for my brother",
"requestDate": "2021-05-23 08:19:36",
"requestingOrganisationTransactionReference": "SrcTxnId005",
"debitParty": [
{
"key": "msisdn",
"value": "+971810456234"
}
],
"creditParty": [
{
"key": "bankaccountno",
"value": "50100002965304"
},
{
"key": "organisationid",
"value": "HDFC Bank"
},
{
"key": "sortcode",
"value": "HDFC0001626"
}
],
"senderKyc": {
"nationality": "AE",
"dateOfBirth": "1967-05-28",
"gender": "M",
"idDocument": [
{
"idType": "VOTER_CARD",
"idNumber": "13321115521",
"issueDate": "1967-05-28",
"expiryDate": "2067-05-28",
"issuerCountry": "AE"
}
],
"postalAddress": {
"addressLine1": "49 , park street",
"addressLine2": "12",
"addressLine3": "12",
"city": "12",
"stateProvince": "12",
"postalCode": "50000",
"country": "US"
},
"subjectName": {
"firstName": "Test",
"middleName": "",
"lastName": "Sender2",
"fullName": "Test Sender2"
}
},
"recipientKyc": {},
"sendingAmount": "35500.00",
"payinCcyCode": "USD",
"paymentMode": "cash",
"authenticationPartnerCode": "4534",
"paymentOption": "Mobile Wallet",
"sendingPartnerCode": "343432223",
"receivingPartnerCode": "343432223",
"business": {
"senderKyc": {},
"recepientKyc": {
"businessName": "Oyugi Randy Electric Sale Pvt. Ltd.",
"businessPINCode": "123456",
"businessAddress1": "24",
"businessAddress2": "walton's road",
"businessAddressCity": "newyork",
"businessAddressState": "NYC",
"businessAddressCountryCode": "NG",
"businessAddressZip": "123456",
"businessPrimaryContactCountryCode": "NG",
"businessPrimaryContactNo": "232323212",
"businessPrimaryContactNoType": "Mobile",
"businessDescription": "Electronics wholesale",
"businessEmail": "rs.electronics@gmail.com",
"businessCountryCode": "NG",
"businessRegistrationType": "Private Limited Company",
"businessRegistrationNumber": "2312345678912",
"businessRegistrationIssuedBy": "NYC_TRADE",
"businessRegistrationIssuedAt": "NYC",
"businessRegistrationIssueDate": "2002-08-26",
"businessIDValidThru": "2036-09-26",
"typeofbusiness": "Electronics",
"businessPObox": "12345",
"businessMobile": "343234433"
}
},
"internationalTransferInformation": {
"quoteId": "QR037C1NA6ZXBSQ88B",
"receivingCountry": "IN",
"remittancePurpose": "Business Travel",
"sourceOfFunds": "Business Income",
"relationshipSender": "Employer"
}
})
response = https.request(request)
puts response.read_body
URL
https://uat-connect.terrapay.com:21211/eig/gsma/transactions
HTTP Request
POST /eig/gsma/transactions HTTP/1.1
Business transaction request parameter list
Business transaction request parameter list
Parameter name | Description | Data Type | Requirement | Field Length |
---|---|---|---|---|
requestDate | The creation date and time of the transaction as supplied by the sending partner in YYYY-MM-DD HH:mm:ss format | String | Mandatory | 19 |
amount | Destination amount payable to the beneficiary with precision of 2 decimal places. | String | Mandatory | 10,2 |
currency | Destination amount currency in ISO 4217 format. Eg. NGN | String | Mandatory | 3 |
type | The harmonized Transaction Type. Fixed value - b2b, b2p, p2b | String | Mandatory | 3 |
descriptionText | Free format text description of the transaction provided by the client. This can be provided as a message for the receiver on the account statement. | String | Optional | 0-20 |
requestingOrganisationTransactionReference | Unique Transaction reference generated by the sending partner. | String | Mandatory | 4-50 |
provider | Provider value should be same as sent in the validation request. If a different value is sent then the transaction will be rejected. Note: Mandatory/Optional requirement of this field is destination country specific. |
Numeric | Conditional | 5-12 |
sendingAmount | Payin Amount with precision of 2 decimal places | String | Mandatory | 10,2 |
payingCcyCode | Payin Currency in ISO 4217 format. Eg. USD | String | Mandatory | 3 |
paymentMode | Type of Payment i.e. Cash, Card, Bank account or Others | String | Mandatory | 0-20 |
authenticationPartnerCode | Multi factor authentication partner code. Unique code with a combination of 4 letters of the Company's first name, Country Code, City Code | String | Optional | 4-20 |
paymentOption | Mobile Wallet/Account Credit | String | Mandatory | 4-100 |
sendingPartnerCode | Unique send partner code. Unique code with a combination of 4 letters of the Company's first name, Country Code, City Code | String | Optional | 4-20 |
recievingPartnerCode | Unique Receive Partner Code | String | Optional | 4-20 |
debitParty:
Parameter name | Description | Data Type | Requirement | Field Length |
---|---|---|---|---|
key | msisdn | String | Mandatory | 6 |
value | Sender Mobile Number with country code. Eg. +91xxxxxxxxxx | String | Mandatory | 10-18 |
creditParty:
Parameter name | Description | Data Type | Requirement | Field Length |
---|---|---|---|---|
Key | msisdn | String | Mandatory | 6 |
Value | Beneficiary wallet Number with country code. Eg.+91xxxxxxxxxx. | String | Optional - For Bank Accounts Mandatory - For Mobile Wallet | 5-50 |
Key | beneficiarySmsNotify | String | Optional | 20 |
Value | Status Update through SMS notification. Values are true or false. true indicates ntofication required. Notification will be sent for b2b and p2b transactions on BusinessMsisdn number (part of business receipient kyc) | String | Optional | 4-5 |
Key | bankaccountno | String | Conditional | 13 |
Value | Beneficiary bank account or IBAN number as applicable and required in the destination country for receiving funds. Eg. 2365417895 or AT483200000012345864. This key/value pair is optional if the transfer is to a mobile wallet. | String | Mandatory - For bank accounts Optional - For mobile wallets | 5-50 |
Key | accounttype | String | Optional | 11 |
Value | Type of the bank account. Supported account types:CheckingSavingsThe default account type for p2p transactions is Savings. | String | 0-20 | |
Key | sortcode | String | Conditional | 8 |
Value | Bank Code as required in the destination Country. It is the IFSC code for India and Swift BIC for all other countries. The requirement of this code is destination country specific. | String | Mandatory - For bank accounts Optional - For mobile wallets | 4-25 |
Key | organisationid | String | Conditional | 14 |
Value | Full name of the beneficiary bank | String | Mandatory - For bank accounts Optional - For mobile wallets | 4-60 |
Key | banksubcode | String | Conditional | 11 |
Value | This is a code that indicates the branch code or routing code or routing number of the specific bank branch to which the transaction is to be sent. | String | Mandatory - For bank accounts Optional - For mobile wallets | 1-10 |
Key | accountIBAN | String | Conditional | 11 |
Value | Recieve Account IBAN Number for receiving funds. This should be the same as the value in bankaccountno. | String | Mandatory - For bank accounts Optional - For mobile wallets | 13 |
Key | accountAdditionalNo1 | String | Optional | 20 |
Value | If any additional accounts to be provided. | String | Optional | 13 |
Key | accountAdditionalNo2 | String | Optional | 20 |
Value | If any additional accounts to be provided. | String | Optional | 13 |
senderKyc: Applicable for p2b type transactions
Parameter name | Description | Data Type | Requirement | Field Length |
---|---|---|---|---|
nationality | Nationality of the customer in ISO Alpha-2 format. Eg. US | String | Mandatory | 2 |
dateOfBirth | Sender's Date of Birth in YYYY-MM-DD format | String | Mandatory | 10 |
gender | Sender's Gender. Enumeration = (M)ale, (F)emale, (U)nspecified | String | Optional | 1 |
primaryContactCountryCode | Primary Contact Country Code | String | Mandatory | 2 |
primaryContactNo | Primary Contact Number | String | Mandatory | 10-15 |
primaryContactNoType | Primary Contact Number type i.e. Personal/Office | String | Mandatory | 4-50 |
senderKyc:idDocument
Parameter name | Description | Data Type | Requirement | Field Length |
---|---|---|---|---|
idType | Sender's Id document type: For example nationalidcard, drivinglicense, passport, etc | String | Mandatory | 1-20 |
idNumber | Sender's Id document number | String | Mandatory | 1-30 |
issueDate | Sender's Id document issue date in YYYY-MM-DD format. | String | Optional | 10 |
expiryDate | Sender's Id document expiry date in YYYY-MM-DD format. | String | Mandatory | 10 |
issuerCountry | Country where the identification type was issued in ISO Alpha-2 format. | String | Optional | 2 |
senderKyc:postalAddress
Parameter name | Description | Data Type | Requirement | Field Length |
---|---|---|---|---|
addressLine1 | First line of the address | String | Mandatory | 4-20 |
addressLine2 | Second line of the address | String | Optional | 4-20 |
addressLine3 | Third line of the address | String | Optional | 4-20 |
city | City/Town of sender's address | String | Mandatory | 4-20 |
stateProvince | State of sender's address Note: State in ISO Alpha-2 format for transaction originated in US to Guatemala.Mandatory/Optional requirement of this field is destination country specific. |
String | Conditional | 2-20 |
postalCode | Postal Code of sender's address | String | Conditional | 6-8 |
country | Country in ISO Alpha-2 format | String | Mandatory | 2 |
senderKyc:subjectName
Parameter name | Description | Data Type | Requirement | Field Length |
---|---|---|---|---|
title | Title of the Sender | String | Optional | 0-6 |
firstName | First name of the Sender | String | Mandatory | 1-20 |
middleName | Middle name of the Sender | String | Optional | 0-50 |
lastName | Last name of the Sender | String | Mandatory | 1-20 |
fullName | Full name of the Sender | String | Mandatory | 1-50 |
recipientKyc: Applicable for b2p type transactions
Parameter name | Description | Data Type | Requirement | Field Length |
---|---|---|---|---|
nationality | Nationality of the customer in ISO Alpha-2 format. Eg. US | String | Optional | 2 |
dateOfBirth | Beneficiary's Date of Birth in YYYY-MM-DD format | String | Optional | 10 |
gender | Beneficiary's Gender. Enumeration = (M)ale, (F)emale, (U)nspecified | String | Optional | 1 |
recipientKyc:subjectName
Parameter name | Description | Data Type | Requirement | Field Length |
---|---|---|---|---|
firstName | First name of the beneficiary | String | Mandatory | 1-20 |
lastName | Last name of the beneficiary | String | Mandatory | 1-20 |
fullName | Full name of the beneficiary | String | Mandatory | 1-50 |
regionalbeneficiaryname | Regional Beneficiary Name as per bank account (Japanese language: Katakana) | String | Conditional | 1-50 |
recipientKyc:idDocument
Parameter name | Description | Data Type | Requirement | Field Length |
---|---|---|---|---|
idType | Beneficiary's Id document as required in the destination country. Please click here for the list of required document in each country.Note: Mandatory/Optional requirement of this field is destination country specific. | String | Conditional | 1-20 |
idNumber | Beneficiary's Id document number.Note: Mandatory/Optional requirement of this field is destination country specific. | String | Conditional | 1-30 |
issueDate | Beneficiary's Id document issue date in YYYY-MM-DD format. | String | Optional | 10 |
expiryDate | Beneficiary's Id document expiry date in YYYY-MM-DD format.Note: Mandatory/Optional requirement of this field is destination country specific. | String | Conditional | 10 |
issuerCountry | Country where the identification type was issued in ISO Alpha-2 format. | String | Optional | 2 |
internationalTransferInformation:
Parameter name | Description | Data Type | Requirement | Field Length |
---|---|---|---|---|
quoteId | The specific quoteId to be used for the transaction. This quoteId is generated when a quotation is created and it is returned on the quotation response | String | Mandatory | 16-20 |
receivingCountry | Destination country where the payout is to be made. To be specified in ISO Alpha 2 format. Eg. NG | String | Mandatory | 2 |
remittancePurpose | Reason for the transfer. Click here to find the accepted values. | String | Mandatory | 4-30 |
sourceOfFunds | Source of funds. | String | Mandatory | 4-17 |
relationshipSender | The relation between the sender and the beneficiary. | String | Optional | 3-11 |
businesssenderKyc: Applicable for b2p and b2b business transactions
Parameter name | Description | Data Type | Requirement | Field Length |
---|---|---|---|---|
businessName | Company Name | String | Mandatory | 4-180 |
businessPINCode | Company Pin Code | String | Optional | 2-20 |
businessAddress1 | Registered Address 1 | String | Mandatory | 4-20 |
businessAddress2 | Registered Address 2 | String | Optional | 4-20 |
businessAddressCity | Registered City.Note: Mandatory/Optional requirement of this field is destination country specific. | String | Conditional | 4-20 |
businessAddressCountryCode | Registered Country Code in ISO Alpha 2 standard | String | Optional | 2 |
businessAddressZip | Registered address Zip Code | String | Optional | 4-20 |
businessPrimaryContactCountryCode | Company Primary Contact Country Code in ISO Alpha 2 standard | String | Mandatory | 2 |
businessPrimaryContactNo | Company Primary Contact Number | String | Mandatory | 10-15 |
businessDescription | Short description of the business | String | Optional | 0-100 |
businessEmail | Company email id | String | Mandatory | 0-100 |
businessCountryCode | Company Country Code in ISO Alpha 2 standard | String | Mandatory | 2 |
businessRegistrationType | Type of Registration | String | Mandatory | 4-100 |
businessRegistrationIssuedBy | Company Incorporation Issued by | String | Optional | 0-20 |
businessRegistrationIssuedAt | Company Incorporation Issued at | String | Optional | 0-20 |
businessRegistrationNumber | Company Incorporation Number | String | Mandatory | 4-20 |
businessRegistrationIssueDate | Company Incorporation Issued Date in YYYY-MM-DD format. | String | Mandatory | 10 |
businessIDValidThru | Company Incorporation Expiry Date in YYYY-MM-DD format. | String | Mandatory | 10 |
businessrecipientKyc: Applicable for p2b and b2b business transactions
Parameter name | Description | Data Type | Requirement | Field Length |
---|---|---|---|---|
businessName | Company Name | String | Mandatory | 4-180 |
businessPINCode | Company Pin Code | String | Optional | 2-20 |
businessAddress1 | Registered Address 1 | String | Optional | 4-20 |
businessAddress2 | Registered Address 2 | String | Optional | 4-20 |
businessAddressCity | Registered City | String | Optional | 4-20 |
businessAddressState | Registered State | String | Optional | 4-20 |
businessAddressCountryCode | Registered Country Code in ISO Alpha 2 standard | String | Mandatory | 2 |
businessAddressZip | Registered address Zip Code | String | Optional | 4-20 |
businessPrimaryContactCountryCode | Company Primary contact country code in ISO Alpha 2 standard | String | Optional | 2 |
businessPrimaryContactNo | Company Primary Contact Number | String | Optional | 10-15 |
businessPrimaryContactNoType | Company Primary Contact Number type i.e. Personal/Office | String | Optional | 4-50 |
businessDescription | Short description of the business | String | Optional | 0-100 |
businessEmail | Company email id | String | Optional | 0-100 |
businessCountryCode | Company country code in ISO Alpha 2 standard | String | Optional | 2 |
businessRegistrationType | Type of Registration | String | Conditional | 0-100 |
businessRegistrationNumber | Company Incorporation Number.Note: Mandatory/Optional requirement of this field is destination country specific. | String | Conditional | 0-20 |
businessRegistrationIssuedBy | Company Incorporation Issued by | String | Optional | 0-20 |
businessRegistrationIssuedAt | Company Incorporation Issued at | String | Optional | 0-20 |
businessRegistrationIssueDate | Company Incorporation Issued Date | String | Mandatory | 0-10 |
businessIDValidThru | Company Incorporation Expiry Date | String | Optional | 0-10 |
typeofbusiness | Type of Company | String | Optional | 0-20 |
business PO box | Company PO Box | String | Optional | 0-10 |
regionalBeneficiaryName | Regional Beneficiary Name as per bank account (Japanese language: Katakana) | String | Conditional | 1-50 |
Response Codes & Messages
Generic Response
Generic Response Code & Messages
Response Code | Response Message | Contact TerraPay | Transaction Action | Remarks/Comments |
---|---|---|---|---|
1000 | Invalid [propertyName] | No | Retry | Check for invalid request parameter(s) |
1001 | [propertyName] value should be between [minlength] to [maxlength] | No | Retry | Check for invalid request parameter(s) |
1002 | [propertyName] must be [length] | No | Retry | Check for invalid request parameter(s) |
1003 | Authentication failed. Username or Password is incorrect. | Yes | Retry | Contact TerraPay operations team for valid username and password. |
1004 | Invalid parameters in the request | No | Retry | Check for invalid request parameter(s). |
1005 | Mandatory fields are missing | No | Retry | Check for invalid request parameter(s). |
1006 | Request SHA256 checksum mismatch | No | Retry | Check for invalid checksum sent with request. |
1007 | Server is busy. Please do a status enquiry to check if your transactions reached TerraPay. | No | Status check | Call the status API till transaction status changes to success/failed. |
1010 | Source country not allowed | Yes | Retry | Operation team needs to check source country configuration. |
1011 | Destination country not allowed | Yes | Retry | Operation team needs to check destination country configuration. |
1012 | Source currency not allowed | Yes | Retry | Operation team needs to check source currency configuration. |
1013 | Destination currency not allowed | Yes | Retry | Operation team needs to check destination currency configuration. |
1014 | Source country inactive | Yes | Retry | Operation team needs to check source country configuration. |
1015 | Destination country inactive | Yes | Retry | Operation team needs to check destination country configuration. |
1016 | Failed to get destination partner | Yes | Retry | Operation team needs to check corridor configuration. |
1017 | Source partner validity fail | Yes | Retry | operations team needs to extend validity of source partner in system. |
1018 | Destination partner validity fail | Yes | Retry | operations team needs to extend validity of destination partner in system. |
1019 | Source partner suspended | Yes | Retry | operations team needs to check activation status of partner. |
1020 | Destination partner suspended | Yes | Retry | operations team needs to check activation status of partner. |
1021 | Source partner inactive | Yes | Retry | operations team needs to check activation status of partner. |
1022 | Destination partner inactive | Yes | Retry | operations team needs to check activation status of partner. |
1023 | Corridor validity failed | Yes | Retry | operations team needs to check corridor validity. |
1024 | Corridor Suspended | Yes | Retry | operations team needs to check corridor activation status. |
1026 | Source MSISDN not allowed. | No | Cancel | Invalid source/sender's mobile number. |
1027 | Source MSISDN Blacklisted. | No | Cancel | Source/sender's mobile number is black listed. |
1028 | Destination MSISDN not allowed. | No | Cancel | Invalid destination mobile number. |
1029 | Destination MSISDN Blacklisted. | No | Cancel | Destination mobile number is black listed. |
1030 | Corridor not exists | Yes | Retry | Operation team needs to check corridor configuration. |
1031 | Source currency inactive | Yes | Retry | Operation team needs to check currency configuration. |
1032 | Destination currency inactive | Yes | Retry | Operation team needs to check currency configuration. |
1046 | Invalid Transaction ID. | No | Retry | Check for transaction Id format (special characters). |
1061 | Destination Country Sanctioned. | No | Cancel | Destination country is on sanction list.Transaction cannot be delievered. |
1062 | Source Country Sanctioned. | No | Cancel | Source country is on sanctionlist. Transaction cannot be delievered. |
1073 | Routing Failed. | Yes | Retry | Route is inactive.Check with TerraPay operations team to enable the route and retry. |
Beneficiary Validation Responses
Beneficiary Validation Responses Codes & Messages
Response Code | Response Message | Contact TerraPay | Transaction Action | Remarks/Comments |
---|---|---|---|---|
6000 | Beneficiary MSISDN Validation Success | No | No | Transaction validation is success. |
6001 | Corridor does not exists | Yes | Retry | Operation team needs to check the corridor configuration. |
6002 | Corridor inactive | Yes | Retry | Operation team needs to check the corridor configuration. |
6003 | Beneficiary MSISDN blacklisted | No | Cancel | Beneficiary MSISDN has been blacklisted on TerraPay system.. |
6004 | Beneficiary validation failed | Yes | Cancel | Operation team needs to check. |
6005 | Beneficiary Registered but not KYCed | No | Cancel | Beneficiary is registered with destination partner network with incomplete KYC details. |
6006 | Beneficiary MSISDN not found | No | Cancel | Beneficiary is not registered with destination partner network. |
6007 | Beneficiary Suspended | No | Cancel | Beneficiary is in suspended state on TerraPay system. |
6008 | Beneficiary name does not match | No | Cancel | Beneficiary validation failed. |
6009 | Beneficiary validation failed. Request timed out at destination partner | Yes | Retry | Operation team needs to check the time out issue. |
6010 | Mandatory KYC parameter check failed | Yes | Retry | Resend the transaction with required KYC parameters. |
6011 | Validation Failed. Beneficiary must register or upgrade KYC Level to receive transactions | No | Cancel | Beneficiary validation failed. |
6012 | Beneficiary KYC Verification Pending | No | Cancel | Beneficiary validation failed. |
6013 | Receiver Name Missing | No | Cancel | Beneficiary validation failed. |
6014 | Customer Not Registered | No | Cancel | Beneficiary validation failed. |
6017 | Beneficiary Account is locked | No | Cancel | Beneficiary validation failed. |
6019 | Destination Partner Timed Out - Please retry. | Yes | Retry | Operation team needs to check time out issue. |
6022 | Beneficiary Account Inactive | No | Cancel | Beneficiary validation failed. |
6020 | Beneficiary Account is Inactive | No | Cancel | Beneficiary validation failed. |
6101 | Destination bank not configured | Yes | Retry | Operation team needs to check configuration. |
6102 | Invalid Bank Account Number | No | Cancel | Send the transaction with valid account number. |
6103 | Destination bank not reachable | Yes | Retry | Operation team needs to check. |
6104 | Validation Failed at Destination Partner | Yes | Retry | Operation team needs to check. |
6105 | BankSubCode is missing | No | Retry | Retry with correct data. |
6023 | Provider code/bank subcode is missing | No | Cancel | Send the transaction with valid provider code. |
6024 | Provider code does not match operator network | No | Cancel | Send the transaction with valid provider code. |
6025 | Invalid UPI ID format | No | Cancel | Send the transaction with valid UPI address. |
6026 | Bank UPI Not Supported | No | Cancel | Beneficiary validation failed. |
6027 | Incorrect IFSC Code | No | Retry | Retry with correct data. |
6028 | Validation Penny Drop Service down | Yes | Retry | Operation team needs to check. |
6030 | Account cannot be validated | No | Cancel | Beneficiary validation failed. |
6033 | IMPS Node down | Yes | Retry | Operation team needs to check. |
6034 | Unable to process request | Yes | Retry | Operation team needs to check. |
6035 | Invalid response from partner | Yes | Retry | Operation team needs to check. |
6036 | Invalid sort code | No | Retry | Retry with correct data. |
Quote Response
Quote Response Codes & Messages
Response Code | Response Message | Contact TerraPay | Transaction Action | Remarks/Comments |
---|---|---|---|---|
2000 | Quote Success | No | No | Quotation is success. |
2001 | Source amount is invalid | No | Retry | Send correct/valid source amount with quote request. |
2002 | Beneficiary MSISDN validation failed | No | Cancel | Beneficiary validation is in failure state for which quote request is initiated. |
2003 | Failed to get Forex rate | Yes | Retry | Operation team needs to check rate configuration. |
Remit Response
Remit Response Codes & Messages
Response Code | Response Message | Contact TerraPay | Transaction Action | Remarks/Comments |
---|---|---|---|---|
3000 | Remit Success | No | No | Transaction is in success state. |
3050 | Remit Acknowledged, status PENDING | No | Status check | Call the status API till transaction status changes to success/failed. |
3001 | Transaction request should be current date. | No | Retry | Correct the date in the request and retry the transaction with the same reference or id. |
3002 | Beneficiary Validation failed | No | Retry | Beneficiary validation is in failure state. Send another validation request and then re-initiate the transaction. |
3003 | Transaction id is invalid | No | Retry | Retry the status check with a valid partner or TerraPay transaction reference or id. |
3004 | Duplicate transaction Id | No | Status check | There is already a transaction being processed with the same reference or id. Please do a status check to get an update |
3005 | Quote and Remit parameters do not match | No | Retry | The amount sent in the transaction request does not match the amount returned back by the quotation response. Please chck and resend with correct details. |
3006 | Sender KYC validation failed | No | Cancel | Transaction failed. Please reach out to compliance for further details. |
3007 | Beneficiary KYC validation failed | No | Cancel | Transaction failed. Please reach out to compliance for further details. |
3008 | Quote expired | No | Cancel | Initiate a new a quote request and then send a new transaction with the quote reference generated. |
3009 | Failed to process quote request | Yes | Retry | Operation team needs to check the forex configuration |
3010 | Mandatory KYC parameter check failed | No | Retry | Check for sender's KYC parameters in remit request. |
3011 | Invalid Fx Rate | Yes | Retry | Operation team needs to check the forex configuration |
3022 | Corridor validation failed | Yes | Retry | Operation team needs to check the corridor configuration. |
3030 | Possible duplicate transaction received within configured time. | Yes | Retry | Wait for sometime and send the transaction again. |
3031 | Connection timeout while connecting to destination partner | Yes | Retry | Wait for sometime and send the transaction again. |
3032 | Remit failed | Yes | Cancel | The transaction has failed. |
3049 | Remit Failed. Insufficient funds | No | Retry | Check your balance at TerraPay and retry after balance is funded. |
3060 | Beneficiary daily transaction count limit reached | No | Cancel | Beneficiary has reached the daily transaction count. |
3061 | Beneficiary weekly transaction count limit reached | No | Cancel | Beneficiary has reached the weekly transaction count. |
3062 | Beneficiary monthly transaction count limit reached | No | Cancel | Beneficiary has reached the monthly transaction count. |
3072 | Receiver Daily Transaction Limit Reached | No | Cancel | Beneficiary daily transaction limit has reached. |
3074 | Beneficiary monthly transaction amount limit reached | No | Cancel | Beneficiary monthly transaction amount limit reached. |
3075 | Sending Partner Min allowed amount check failed. | No | Cancel | Sending partner is sending less than minimum configured transaction amount. |
3076 | Sending Partner Max allowed amount check failed. | No | Cancel | Sending partner is sending more than maximum configured transaction amount. |
3077 | Receiving Partner Min allowed amount check failed. | No | Cancel | Receiving partner is receiving less than minimum configured transaction amount. |
3078 | Receiving Partner Max allowed amount check failed. | No | Cancel | Receiving partner is receiving more than maximum configured transaction amount. |
3079 | Sender Min allowed amount check failed. | No | Cancel | Sender is sending less than minimum configured transaction amount. |
3080 | Sender Max allowed amount check failed. | No | Cancel | Sender is sending more than maximum configured transaction amount. |
3081 | Receiver Min allowed amount check failed. | No | Cancel | Beneficiary is receiving less than minimum configured transaction amount. |
3082 | Receiver Max allowed amount check failed. | No | Cancel | Beneficiary is receiving more than maximum configured transaction amount. |
3100 | Credit Failed. Msisdn not found. | No | Cancel | Transaction has failed due to invalid wallet account. |
3101 | Bank Credit Failed. Invalid Account. | No | Cancel | Transaction has failed by bank due to invalid bank account. |
3102 | Bank Credit Failed. Bank Not Reachable. | No | Cancel | Transaction failed by destination partner as bank is not reachable. |
3103 | Bank credit failed. Account name mismatch. | No | Cancel | Transaction failed by bank due to account name mismatch. |
3104 | Bank credit failed. Transaction limit exceeded. | No | Cancel | Transaction failed by bank as transaction limit exceeded. |
3105 | Bank credit failed. Transaction not permitted. | No | Cancel | Transaction failed by bank as transaction is permitted. |
3106 | Bank credit failed. Unknown Error. | No | Cancel | Transaction |
3107 | Invalid Amount Limit. | No | Cancel | Transaction failed due to max limit per transaction. |
3109 | Insufficient funds in the receiving partner account. | Yes | Cancel | Operation team needs to check the prefunding balance. |
3110 | Invalid Beneficiary Account | No | Cancel | Transaction has failed due to invalid account. |
3111 | Beneficiary Account not Registered | No | Cancel | Transaction has failed due to account not registed. |
3113 | Beneficiary Account Limit Reached. | No | Cancel | Transaction failed due to transaction limit exceeded. |
3114 | Beneficiary Account Barred. | No | Cancel | Transaction failed as account is Barred. |
3115 | Beneficiary Account Inactive | No | Cancel | Transaction failed as account is inactive. |
3116 | Beneficiary Account Locked | No | Cancel | Transaction failed as account is locked. |
3117 | Transfer type not supported | No | Cancel | Please check the transfer type and retry the transaction with the correct Transfer type |
3132 | Remit Failed - Max retry limit reached. | No | Cancel | Transaction failed as transaction limit exceeded. |
3133 | Sender KYC Sanctioned | No | Cancel | Transaction failed as sender is on sanction list |
3150 | Transaction on hold due to compliance reason. | Yes | Status Check | Check with TerraPay compliance team on additional complaince requirements. |
3202 | Remit failed | No | Cancel | Rejected by destination bank. |
3208 | Reversal Pending | Yes | Status Check | Reversal is pending for approval.Check with TerraPay Operations team.Call the status API till transaction status changes to success/failed. |
3210 | Invalid sort code | No | Cancel | Invalid sort code |
3211 | Beneficiary Opt-in Pending | No | Status check | Call the status API till transaction status changes to success/failed. |
3212 | Beneficiary Pending Cashout | No | Status check | Call the status API till transaction status changes to success/failed. |
3213 | Beneficiary Pending Review | No | Status check | Call the status API till transaction status changes to success/failed. |
3214 | Beneficiary Pending Registration | No | Status check | Call the status API till transaction status changes to success/failed. |
3215 | Commercial Transaction | Yes | Retry | Operation team needs to check with receive partner. |
3216 | Invalid Beneficiary contact details | No | Cancel | Resend the transaction with valid beneficiary contact details. |
3217 | Beneficiary Unresponsive | No | Cancel | Resend the transaction with valid beneficiary details. |
3218 | Beneficiary Pending Upgrade | No | Status check | Call the status API till transaction status changes to success/failed. |
3219 | Beneficiary Pending Adjustment | No | Status check | Call the status API till transaction status changes to success/failed. |
3222 | Invalid UPI amount. | No | Cancel | The provided amount is not acceptable for UPI transaction. |
3223 | Transaction rejected at wallet operator. | No | Cancel | Transaction rejected by the wallet operator. Please cancel and refund the sender. |
3224 | Transaction rejected due to compliance | No | Cancel | Please cancel and refund the sender. |
3225 | Cancellation requested by the sender | No | Cancel | Please cancel and refund the sender. |
3226 | Transaction rejected due to outage/downtime. | No | Cancel | Please cancel and refund the sender. |
Purpose, Source of Funds, and Relationship
Person To Person
P2P Purpose for Transaction
Sl. no. | Purpose |
---|---|
1 | Business Profits to Parents |
2 | Business Travel |
3 | Family Maintenance |
4 | Salary |
5 | Savings |
6 | Medical Expenses |
7 | Tuition Fees |
8 | Education Support |
9 | Gift | 10 | Home Improvement | 11 | Debt Settlement | 12 | Real Estate | 13 | Taxes |
P2P Source of Funds
Sl. no. | Source of Funds | Proof |
---|---|---|
1 | Salary |
|
2 | Savings | |
3 | Lottery | |
4 | Loan | |
5 | Business Income | |
6 | Others |
P2P Relationship
Sl. no. | Relationship |
---|---|
1 | Self |
2 | Father |
3 | Mother |
4 | Spouse |
5 | Son |
6 | Daughter |
7 | Brother |
8 | Sister |
9 | Friend |
10 | Employer |
11 | Colleague |
Person to Business
P2B Purpose for Transaction
Sl. no. | Purpose |
---|---|
1 | Advanced Goods Payments |
2 | Business profits to Parents |
3 | Business Travel |
4 | Charitable Donation |
5 | Conference or Training Fee |
6 | Employee Compensation |
7 | Events or Competition Participation Expenses |
8 | Export Goods Payments |
9 | Goods and Services |
10 | Goods Exported |
11 | Loan Repayment |
12 | Other Business |
13 | Other Business Services |
14 | Rent Property Expenses |
15 | Salary Payment |
16 | Software Export |
17 | Travel Cost Accomodation Cost |
18 | Travel Expenses |
P2B Source of Funds
Sl. no. | Source of Funds | Proof |
---|---|---|
1 | Salary |
|
2 | Savings | |
3 | Lottery | |
4 | Loan | |
5 | Business Income | |
6 | Business Profit | |
7 | Settlement | |
8 | Others |
Business to Person
B2P Purpose for Transaction
Sl. no. | Purpose |
---|---|
1 | Advanced Goods Payments |
2 | Business profits to Parents |
3 | Business Travel |
4 | Charitable Donation |
5 | Conference or Training Fee |
6 | Employee Compensation |
7 | Events or Competition Participation Expenses |
8 | Export Goods Payments |
9 | Goods and Services |
10 | Goods Exported |
11 | Loan Repayment |
12 | Other Business |
13 | Other Business Services |
14 | Rent Property Expenses |
15 | Salary Payment |
16 | Software Export |
17 | Travel Cost Accomodation Cost |
18 | Travel Expenses |
B2P Source of Funds
Sl. no. | Source of Funds | Proof |
---|---|---|
1 | Salary |
|
2 | Savings | |
3 | Lottery | |
4 | Loan | |
5 | Business Income | |
6 | Business Profit | |
7 | Settlement | |
8 | Others |
Business to Business
B2B Purpose for Transaction
Sl. no. | Purpose |
---|---|
1 | Advanced Goods Payments |
2 | Business profits to Parents |
3 | Business Travel |
4 | Charitable Donation |
5 | Conference or Training Fee |
6 | Employee Compensation |
7 | Events or Competition Participation Expenses |
8 | Export Goods Payments |
9 | Goods and Services |
10 | Goods Exported |
11 | Loan Repayment |
12 | Other Business |
13 | Other Business Services |
14 | Rent Property Expenses |
15 | Salary Payment |
16 | Software Export |
17 | Travel Cost Accomodation Cost |
18 | Travel Expenses |
B2B Source of Funds
Sl. no. | Source of Funds | Proof |
---|---|---|
1 | Salary |
|
2 | Savings | |
3 | Lottery | |
4 | Loan | |
5 | Business Income | |
6 | Business Profit | |
7 | Settlement | |
8 | Others |
Country Specific Parameters list
Country Specific Parameters list:
Country Name | Bank Details | Beneficiary Details | Remark |
---|---|---|---|
Australia | Bank name, bank code,bank state branch code & bank account number. | Beneficiary first name, last name, address, city, state, postalcode. | 6 digit BSB code need to be requested from the sender. |
Bangladesh | 1. Bank name, bank account number and Routing number. |
Beneficiary first name, last name. | Routing numbers need to be requested from the sender. |
Canada | Bank name, bank account number & Routing number. | Beneficiary first name, last name,Address,PostalCode, city and province | 1. Bank name & 8 digit routing numbers (3 digit Bank code + 5 digit transit code ) need to be requested from the sender. 2. Transaction to province Quebec is not allowed. |
China | Static Bank name (UNION PAY), Provider code(CNUNIONPAY) & 16 digit card number. | Beneficiary first name, last name & mobile number. | |
El Salvador,Nicaragua | Bank name, bank account number & SWIFT/BIC code. | Beneficiary first name, last name & mobile number. | |
India | 1. Bank name, bank account number & IFSC code for IMPS, NEFT and RTGS payouts 2. Virtual Payment Address (VPA) and provider code (INUPI01) |
Beneficiary first name, last name. | IFSC code and Bank name to be requested from the sender. |
Israel | 1. Bank name, bank account number and Branch Code. |
Beneficiary first name, last name. | Branch Code need to be requested from the sender. |
Jamaica | Bank name, bank account number, account type, & Branch Code. | Beneficiary first name, last name, address, city, stateProvince, country. | Branch Code (5 digits) need to be requested from the sender. |
LATAM Region (Except Mexico, Honduras, Guatemala) |
Bank name, bank code, bank account number, bank branch code, account type. Note: 1. Account type is mandatory only for business transactions. 2. Branch code is mandatory for transaction to Brazil. 3. Provider code is mandatory for PIX key based transaction to Brazil. - For Phone number code is BRI_PIX_T - For E-mail code is BRI_PIX_E - For Id Number code is BRI_PIX_C - For Random pix key code is BRI_PIX_A |
Beneficiary first name, last name, Beneficiary address, City, ID type & ID number. | |
Malaysia | Bank name, bank account number & SWIFT/BIC code. | Beneficiary first name, last name, mobile number | |
Myanmar | Bank name, bank account number & SWIFT/BIC code. | Beneficiary first name, last name, mobile number,ID number, ID type | |
Philippines | 1. Bank name, bank account number & bank code 2. For OFW payment provider code is PH_OFW |
Beneficiary first name, last name. | |
Russia | Bank name, bank account number & SWIFT/BIC code. | Beneficiary first name, last name. | Bank name & 9 digit SWIFT/BIC code need to be requested from the sender. |
SEPA | Bank name and IBAN. | Beneficiary first name, last name. | Bank name need to be requested from the sender. |
South Africa | Bank name, bank account number & SWIFT/BIC code. | Beneficiary first name, last name & mobile number. | |
South Korea | Bank name, bank account number & SWIFT/BIC code. | Beneficiary first name, last name, mobile number | |
UAE | Bank name, bank code & IBAN | Beneficiary first name, last name, mobile number, Beneficiary address, City, Nationality, ID type , ID number & ID Expiry date | |
UK | 1. Bank name and IBAN. OR Bank name, bank account number & sort code. |
Beneficiary first name, last name. | Bank name & sort code need to be requested from the sender. |
Ukraine | IBAN. | Beneficiary first name, last name, mobile number | |
USA | Bank name, SWIFT/BIC code, bank account number & Routing number. | Beneficiary first name, last name. | Bank name & 9 digit routing number need to be requested from the sender. |
Rest all country | Bank name, bank account number & SWIFT/BIC code. | Beneficiary first name, last name. |
Country Specific Recipient Documents
Country Specific Recipient Documents
Country Name | ReceiverKYC IDType |
---|---|
Argentina | Tax ID No |
Bolivia | Identity Card, Foreigner ID. |
Brazil | CPF, CNPJ. |
Chile | Tax ID No | Colombia | Citizenship card , NIT, Passport, Foreigner ID, Special Stay Permit. |
Costa Rica | Identity Card, Legal Identity, Certificate of residence. |
Dominican Republic | Identity Card, Tax ID No, Passport. |
Ecuador | Identity Card, Tax ID No, Passport. |
Panama | ID number. |
Paraguay | Identity Card, Civil National Identity Card. |
Peru | Citizen ID, Business ID, Foreign Resident ID, Passport. |
UAE | GCC ID, Passport, National ID, and Emirates ID. |
Uruguay | Identity Card, Tax ID No, Passport. |
About
TerraPay is a licensed digital payments infrastructure and solutions provider, paving the global payments highway. For more information about us, click here: https://www.terrapay.com/about-us.php