Pangea RaaS API
Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.
Introduction
The Pangea Remittance as a Service (RaaS) API allows any company to add remittances to their existing product or service by integrating a simple API while leveraging Pangea's money transmitter license, compliance controls, and integrations with payment networks worldwide. Companies using the API do not need their own money transmitter license.
The API facilitates a complete end to end transfer of funds from a sender's funding mechanism to the receiver's funding mechanism, such as a debit card or bank account. Transfers can be created, completed, cancelled or refunded. The API supports retrieving transaction status and receipts.
Base URL
Production: https://api.pangea-raas.com/raas/v1
Integration: https://api.pangea-raas-integration.com/raas/v1
Authentication
In order to make an authenticated call to the API, each request made to a resource's endpoints must include your access key and secret key within the request headers. Pangea will provide your specific authentication keys as part of the initial setup process.
The API expects the following headers to be correctly set within each request.
Header Field Name | Description | Value Format |
---|---|---|
X-Pangea-Access-Key | API access key | string |
X-Pangea-Secret-Key | Secret authentication key | A random string between 16 and 32 chars |
Minimal API connectivity can be validated by executing a request to /ping with the correct authentication headers.
Responses
Pangea respondes with restful HTTP status codes to describe the result of a request.
HttpStatusCode | Description |
---|---|
200 | OK |
201 | Resource was successfully created. |
204 | OK - no content |
400 | The request was poorly formed. |
401 | Authorization was not granted. |
404 | The requested resource was not found. |
409 | The request encounted a conflict. Inspect the message field for more information. |
500 | An unexpected server error occurred. |
Configuration
Program configuration options available for creating and completing a transfer can be discovered through the API.
Pangea is licensed to send money originating from the USA to many countries worldwide. The exact set of countries configured for your program can be queried via the API.
The exact set of available funding and delivery methods are configurable for your program and can be queried via the API.
Licensing is configured for your program for each individual state in the USA. A transfer created on behalf of a sender whose address is from a USA state that is not licensed for your program will fail. The exact set of states that your program is licensed in can be queried via the API.
Pangea.js library
Pangea requires the use of our Pangea.js library to mitigate fraud and to securely collect debit card information for payment. Include the pangea.js script in your web application using the following script tag. You must always load this script directly from Pangea. Do not host this script or copy it into any bundle. To be able to use pangea.js in your application, Pangea must add your hostname to the CORS whitelist.
We provide an sdk for both iOS and Android apps. See the details in github: https://github.com/gopangea/sdk-raas-android
https://github.com/gopangea/sdk-raas-ios
// Production:
<script src="https://api.pangea-raas.com/static/v1/pangea.js"></script>
// Sandbox:
<script src="https://api.pangea-raas-integration.com/static/v1/pangea.js"></script>
...
// Get funding card temporary token
pangea.createToken({
publicKey: publicKey.val(),
partnerIdentifier: partnerIdentifier.val(),
cardNumber: cardNumber.val(),
cvv: CVV.val()
})
.then(tokenResponse => {
var fundingCardToken = tokenResponse.token;
}).catch(error => {
// handle error
});
// Get clientSessionData for POST Transfer
pangea.getSessionData()
.then(result => {
var transferClientSessionData = result;
}).catch(error => {
// handle error
});
Session Establishment
The pangea.js library must be loaded into your app throughout the transfer creation process. We use this to help ensure that transfers are sent from the indicated sender. On loading of the pangea.js script, a sessionId is used to track and ensure that the transfer is created by a real person. Retreive the session data with pangea.getSessionData() so that you can include it on the POST transfer call. #create-a-transfer
Funding card tokenization
Pangea.js must also be used for generating a temporary token representing a sender’s funding card. Pangea.js retrieves the token by first encrypting the card data using your public key then sends it to Pangea’s server. You will send the temporary token to your server and finally over to the Pangea RaaS API to create a funding card. Pangea uses the temporary token to generate a permanent token with our card payments provider. The card number and cvv is never stored anywhere in Pangea. You will use the same permanent token for each transfer made with that card. The temporary token is valid for 24 hours. Upon successful generation of the temporary token, you can safely send it to your server. Then to create the funding method in the RaaS API, provide the token along with the other required fields: #register-a-debit-card
You’ll have a different public key for both sandbox and production. The partnerIdentifier will be the same in both environments and will be assigned to you.
Environments
Account holders are granted access to two environments that host the API. A pre-production sandbox environment is used for testing, integration, and certification. Once certification tests are completed successfully, access is provided to the production environment. Specific details regarding how to access each environment will be provided upon account creation.
API Versioning
The relative resource paths of the API are prefixed with the API version number. It is important to note that the API is versioned as a whole; each resource is not versioned independently.
Any updates to the API that are not backwards compatible will only be introduced with a new version of the API. In other words, no breaking changes are ever made to any existing URL endpoints.
Older versions of the API will remain available for a period time, which adds flexibility to the process of transitioning to newer versions. For example, you can easily revert to using an older version of the API if you encounter any issues with using a newer version.
Currently, v1 is the latest version of the API.
Quotations
Before creating a transfer, you must retrieve a Quotation. The quotation describes how much Pangea will charge you for a specific transfer. The response contains the fee we charge plus the quotation fx rate. The fx rate returned is the rate we will charge you to transmit the specified sending amount. Quotations usually change once per day for each country. It is possible when creating a transfer that the Quotation you specify is outdated. Simply request a new quotation in this case. You may use any fx rate or fee for your customers when creating the transfer (except for termination to Honduras or El Salvador). #quotations
Creating a Transfer
To create a transfer you will need to specify a sender, receiver, funding account, and if termination via direct deposit- a termination account. A quote is required to create a transfer. The resources created are then referenced in the Create Transfer request.
Updates to the status of a transfer will be sent to the URL specified on the Transfer POST call. Pangea expects a 200 OK response within 30 seconds. Pangea will retry failed callbacks (timeout or non-200 response) periodically for up to 24 hours. If callbacks retries are exhaused for a transfer update, the status will have to be requested through the GET Transfers/{id}
endpoint.
The following diagram defines the lifecycle of a transfer.
A transfer begins as Created and after success results in Completed. In most cases, a transfer will be either Available or Completed in about one minute. Failed transfers will result in Cancelled (when customer was never charged) or Refunded. Each time the transfer status changes, Pangea will send a callback to your system detailing the new status. Also, you can query for the current status given the transfer's ID or the provided referenceId
.
Cancellation is possible when the transfer is not Completed. However, our partners often do not notify us if cancellation is possible so the transfer stays in the CancelInProgress state until it is either Refunded or Completed (money deposited or receiver picked up the funds).
In rare cases, a termination partner will mistakenly process a transaction as Completed
. In this case we will issue a callback with code of type Reversed
. Cash pickup transfers will then be in the Available
state. It is also possible that this is followed up by a Refunded
callback depending on our delivery partner's decision. All direct deposit transfers will result in Refunded
after Reversed
. In certifying your integration we will require that you handle these callbacks.
Transfer Limits
As part of regulatory compliance the following limits exist in the API. Breaches to these limits will result in an error during transfer creation. These are enforced both on the sender and the receiver.
Limit | Amount |
---|---|
Minimum | $20 |
Transfer | $999.00 |
Daily | $999.00 |
Weekly | $2000.00 |
Monthly | $2000.00 |
Callbacks
Pangea will send a callback to your system when the state changes (see above lifecycle diagram). The callback url is provided on the POST transfer request. The body of the callback is described below in the TransferCallback schema. An "Available" callback will also have the receiver pickup code in the payload. Here are the following possible callbacks.
Code | Description |
---|---|
Available | The funds are available to be picked up by the receiver. |
Complete | The money was picked up or deposited. |
Reversed | Our delivery partner reversed their notification that it was picked up/deposited. |
Refunded | The customer's funding method has been refunded. |
Cancelled | The transfer has been cancelled. It was never Funded. |
Transfer Receipts
Money transfer regulations have strict requirements around the receipt which is shown to the customer. We provide an endpoint to retrieve the compliant receipt which can be shown to your customers. A receipt is generated when a transfer is successfully created. The provided receipt must be made available to a customer after successful creation of a transfer. We currently support a receipt in either English or Spanish. #retrieve-a-receipt
Cancellation Reasons
These are the following subcodes for a cancelled transfer. You will find this in the TransferStatus object.
subcode | Description |
---|---|
Cancellation_Requested | You the partner requested cancellation. |
Pangea_Cancellation | Pangea had to cancel the transfer due to fraud or compliance reasons. |
Autocancel_Stale_Transfer | Not picked up transfer was autocancelled after period of time (7 days) |
Limit_Exceeded_Transfer | A limit on the transfer amount was breached. |
Limit_Exceeded_Sender | A limit around the sender was breached. |
Limit_Exceeded_Receiver | A limit around the receiver was breached. |
Limit_Exceeded_Delivery | A limit around the delivery method was breached. |
Limit_Exceeded_Funding | A limit around the funding method was breached. |
Origination_Unlicensed | The origination state is unlicensed (based off Sender address) |
Funding_Issue_Other | Failure to charge card or withdraw from ach account |
Funding_Issue_CardTypeNotAllowed | Funding card used is not a debit card. |
Funding_Issue_AddressVerificationFailed | ZIP code provided does not match the card's ZIP. |
Funding_Issue_CVVVerificationFailed | CVV code provided does not match the card's CVV. |
Funding_Issue_CardZipNotInSameStateAsSenderZip | |
Funding_Issue_CardDeclined | Payment processor cannot accept this card. |
Funding_Issue_CardInvalid | Card determined to be invalid by the payment processor. |
Funding_Issue_CardAlreadyInTwoAccounts | This card is already registered by 2 other users in Pangea's platform. |
Funding_Issue_Business_Card_Used | Funding card used was determined to be a business account |
Funding_Issue_InsufficientFunds | Funding card was denied due to insufficient funds |
Delivery_Failed | Transmission to the delivery network was rejected. |
409 Response Errors
This is a list of the errors you should expect when executing requests which may result in a 409 response. These are seen in the Error response schema.
action | code | message | additionalInformation |
---|---|---|---|
POST /funding/cards | 100 | Postal code verification failed | |
101 | This card is already registered by 2 other users in Pangea's platform | ||
102 | Card declined | ||
103 | Card type not debit | ||
104 | Card postal code not in same state as sender postal code | ||
105 | CVV or expiration date did not match verification | ||
106 | Token is expired | ||
107 | Card invalid | ||
POST /delivery/accounts | 001 | Partner not found | |
002 | Receiver not found | ||
008 | AccountType not found | ||
151 | Partner not direct deposit or mobile wallet | ||
POST /senders | 203 | Business name detected | |
202 | Name is invalid | ||
205 | Sender country must be in USA | ||
206 | Phone number is required to be a mobile number | ||
207 | Phone number is not a USA number | ||
208 | A sender already exists for this phone number | ||
209 | Id type not accepted | ||
707 | Sender state is unlicensed | ||
POST /senders/{senderId}/receivers | 010 | Postal code not found for country | |
202 | Name is invalid | ||
203 | Business name detected | ||
211 | State or province invalid | ||
212 | City not found for the given country | ||
213 | City found in a different stateOrProvince | ||
214 | StateOrProvince not found for the given country | ||
215 | Municipality is required for the provided city | ||
216 | Provided municipality is not valid. See documentation for list of options | ||
PATCH /senders/{senderId}/receivers/{receiverId} | 201 | Cannot change a receiver's country | |
POST /transfers | 002 | Receiver not found | |
003 | Sender not found | ||
005 | Delivery account not found | ||
004 | Funding account not found | ||
007 | Quote not found | ||
021 | Pangea rejected - Sender | ||
022 | Pangea rejected - Receiver | ||
150 | Delivery method not supported | ||
705 | Transfer limit exceeded | ||
701 | Sender limit exceeded | ||
702 | Receiver limit exceeded | ||
703 | Funding limit exceeded | ||
704 | Delivery limit exceeded | ||
710 | A newer quote is available. Please try again with the latest quote. | latest quotationId | |
711 | The request exchange does not match the required exchange rate for the quotation. | ||
714 | Duplicate transfer detected | transferId | |
715 | Delivery amount invalid for given funding amount and exchange rate | amount expected | |
712 | The delivery partner's deliveryRequirements were not satisfied | missing field requirement | |
713 | The sender state's deliveryRequirements were not satisfied | missing field requirement | |
716 | Transfer costs are not covered in the pricing to the customer. Please update the fee and FX rate to fully cover the cost of this transfer. | ||
717 | Your pre-funded balance for promotional pricing is too low to cover the cost of this transfer. Please reach out to your account manager to update your promotional balance. | ||
any action | 210 | Country is not supported | |
999 | Unexpected error. Please contact support | ||
020 | Pangea rejected | ||
POST /transfers/{id}/cancel | 700 | Unable to cancel due to current status |
Receiver Municipality
Municipality is required only for receivers in Mexico City (MX-CMX). Provide this on the ReceiverAddress object. The valid options are
- Álvaro Obregón
- Azcapotzalco
- Benito Juárez
- Coyoacán
- Cuajimalpa de Morelos
- Cuauhtémoc
- Gustavo A. Madero
- Iztacalco
- Iztapalapa
- Magdalena Contreras
- Miguel Hidalgo
- Milpa Alta
- Tláhuac
- Tlalpan
- Venustiano Carranza
- Xochimilco
Authentication
API Key (PangeaAccessKey)
- Parameter Name: X-Pangea-Access-Key, in: header.
API Key (PangeaSecretKey)
- Parameter Name: X-Pangea-Secret-Key, in: header.
Ping
Facilitates connectivity and authentication testing.
Ping
Code samples
POST https://api.pangeamoneytransfer.com/v1/ping HTTP/1.1
Host: api.pangeamoneytransfer.com
# You can also use wget
curl -X POST https://api.pangeamoneytransfer.com/v1/ping \
-H 'X-Pangea-Access-Key: API_KEY' \
-H 'X-Pangea-Secret-Key: API_KEY'
var headers = {
'X-Pangea-Access-Key':'API_KEY',
'X-Pangea-Secret-Key':'API_KEY'
};
$.ajax({
url: 'https://api.pangeamoneytransfer.com/v1/ping',
method: 'post',
headers: headers,
success: function(data) {
console.log(JSON.stringify(data));
}
})
import requests
headers = {
'X-Pangea-Access-Key': 'API_KEY',
'X-Pangea-Secret-Key': 'API_KEY'
}
r = requests.post('https://api.pangeamoneytransfer.com/v1/ping', params={
}, headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'X-Pangea-Access-Key' => 'API_KEY',
'X-Pangea-Secret-Key' => 'API_KEY'
}
result = RestClient.post 'https://api.pangeamoneytransfer.com/v1/ping',
params: {
}, headers: headers
p JSON.parse(result)
URL obj = new URL("https://api.pangeamoneytransfer.com/v1/ping");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"X-Pangea-Access-Key": []string{"API_KEY"},
"X-Pangea-Secret-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api.pangeamoneytransfer.com/v1/ping", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /ping
Exists as a first step into connecting to our API. Use it to ensure successful authentication.
Provide the required Authentication headers to ensure a succesfull 200 response.
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Successful ping | None |
Configuration
Resources used to discover the available configuration options for your program.
Get licensed states
Code samples
GET https://api.pangeamoneytransfer.com/v1/config/states HTTP/1.1
Host: api.pangeamoneytransfer.com
Accept: application/json
# You can also use wget
curl -X GET https://api.pangeamoneytransfer.com/v1/config/states \
-H 'Accept: application/json' \
-H 'X-Pangea-Access-Key: API_KEY' \
-H 'X-Pangea-Secret-Key: API_KEY'
var headers = {
'Accept':'application/json',
'X-Pangea-Access-Key':'API_KEY',
'X-Pangea-Secret-Key':'API_KEY'
};
$.ajax({
url: 'https://api.pangeamoneytransfer.com/v1/config/states',
method: 'get',
headers: headers,
success: function(data) {
console.log(JSON.stringify(data));
}
})
import requests
headers = {
'Accept': 'application/json',
'X-Pangea-Access-Key': 'API_KEY',
'X-Pangea-Secret-Key': 'API_KEY'
}
r = requests.get('https://api.pangeamoneytransfer.com/v1/config/states', params={
}, headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-Pangea-Access-Key' => 'API_KEY',
'X-Pangea-Secret-Key' => 'API_KEY'
}
result = RestClient.get 'https://api.pangeamoneytransfer.com/v1/config/states',
params: {
}, headers: headers
p JSON.parse(result)
URL obj = new URL("https://api.pangeamoneytransfer.com/v1/config/states");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-Pangea-Access-Key": []string{"API_KEY"},
"X-Pangea-Secret-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.pangeamoneytransfer.com/v1/config/states", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /config/states
Get the licensed states available for your program. States may have their own delivery requirements. These will be validated when creating a transfer.
Licensing is configured for your program for each individual state in the USA. This endpoint lists all the licensed states available.
Example responses
200 Response
[
{
"id": "USA-AK"
},
{
"id": "USA-FL",
"deliveryRequirements": {
"deliveryAccountRequirements": null,
"senderRequirements": null,
"receiverRequirements": [
"address"
]
}
},
{
"id": "USA-IL"
}
]
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | The request was successful. | Inline |
Response Schema
Status Code 200
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | [StateConfiguration] | false | none | none |
» id | string(ISO 3166-2) | true | none | The state's ISO 3166-2 code. |
» deliveryRequirements | DeliveryRequirements | false | none | none |
»» deliveryAccountRequirements | [DeliveryAccountRequirements] | false | none | none |
»» senderRequirements | [PersonRequirements] | false | none | none |
»» recieverRequirements | [PersonRequirements] | false | none | none |
Get supported countries
Code samples
GET https://api.pangeamoneytransfer.com/v1/config/delivery/countries HTTP/1.1
Host: api.pangeamoneytransfer.com
Accept: application/json
# You can also use wget
curl -X GET https://api.pangeamoneytransfer.com/v1/config/delivery/countries \
-H 'Accept: application/json' \
-H 'X-Pangea-Access-Key: API_KEY' \
-H 'X-Pangea-Secret-Key: API_KEY'
var headers = {
'Accept':'application/json',
'X-Pangea-Access-Key':'API_KEY',
'X-Pangea-Secret-Key':'API_KEY'
};
$.ajax({
url: 'https://api.pangeamoneytransfer.com/v1/config/delivery/countries',
method: 'get',
headers: headers,
success: function(data) {
console.log(JSON.stringify(data));
}
})
import requests
headers = {
'Accept': 'application/json',
'X-Pangea-Access-Key': 'API_KEY',
'X-Pangea-Secret-Key': 'API_KEY'
}
r = requests.get('https://api.pangeamoneytransfer.com/v1/config/delivery/countries', params={
}, headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-Pangea-Access-Key' => 'API_KEY',
'X-Pangea-Secret-Key' => 'API_KEY'
}
result = RestClient.get 'https://api.pangeamoneytransfer.com/v1/config/delivery/countries',
params: {
}, headers: headers
p JSON.parse(result)
URL obj = new URL("https://api.pangeamoneytransfer.com/v1/config/delivery/countries");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-Pangea-Access-Key": []string{"API_KEY"},
"X-Pangea-Secret-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.pangeamoneytransfer.com/v1/config/delivery/countries", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /config/delivery/countries
Get a list of supported countries.
Before a customer can send a transfer, they'll need to know whether or not the Country they want to remit to is supported.
This endpoint allows you to see which countries we support as well as what delivery methods are available in each country.
Example responses
200 Response
[
{
"id": "MEX",
"currency": "MXN",
"roundingAmountDigits": 0,
"methods": [
"cash-pickup",
"direct-deposit"
]
},
{
"id": "IND",
"currency": "IDR",
"roundingAmountDigits": 2,
"methods": [
"cash-pickup",
"direct-deposit"
]
},
{
"id": "BRA",
"currency": "BRL",
"roundingAmountDigits": 2,
"methods": [
"direct-deposit"
]
}
]
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | The request was successful. | Inline |
Response Schema
Status Code 200
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | [Country] | false | none | none |
» id | string(iso-alpha-3) | true | none | The country's ISO Alpha-3 code. |
» currency | string(iso-alpha-3) | true | none | The currency the money belongs to. |
» roundingAmountDigits | number | true | none | The count of decimals the delivery amount must be rounded to. |
» methods | [DeliveryMethod] | true | none | The country's available delivery methods. |
Get delivery methods
Code samples
GET https://api.pangeamoneytransfer.com/v1/config/delivery/{country}/methods HTTP/1.1
Host: api.pangeamoneytransfer.com
Accept: application/json
# You can also use wget
curl -X GET https://api.pangeamoneytransfer.com/v1/config/delivery/{country}/methods \
-H 'Accept: application/json' \
-H 'X-Pangea-Access-Key: API_KEY' \
-H 'X-Pangea-Secret-Key: API_KEY'
var headers = {
'Accept':'application/json',
'X-Pangea-Access-Key':'API_KEY',
'X-Pangea-Secret-Key':'API_KEY'
};
$.ajax({
url: 'https://api.pangeamoneytransfer.com/v1/config/delivery/{country}/methods',
method: 'get',
headers: headers,
success: function(data) {
console.log(JSON.stringify(data));
}
})
import requests
headers = {
'Accept': 'application/json',
'X-Pangea-Access-Key': 'API_KEY',
'X-Pangea-Secret-Key': 'API_KEY'
}
r = requests.get('https://api.pangeamoneytransfer.com/v1/config/delivery/{country}/methods', params={
}, headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-Pangea-Access-Key' => 'API_KEY',
'X-Pangea-Secret-Key' => 'API_KEY'
}
result = RestClient.get 'https://api.pangeamoneytransfer.com/v1/config/delivery/{country}/methods',
params: {
}, headers: headers
p JSON.parse(result)
URL obj = new URL("https://api.pangeamoneytransfer.com/v1/config/delivery/{country}/methods");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-Pangea-Access-Key": []string{"API_KEY"},
"X-Pangea-Secret-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.pangeamoneytransfer.com/v1/config/delivery/{country}/methods", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /config/delivery/{country}/methods
Get the delivery methods available in a given country.
A Delivery Method is any manner in which a receiver can receive transfer funds. Available delivery methods will change based on which country the customer is remitting to, but every country we support will have at least 1 delivery method available.
This endpoint lists all the delivery methods available in a given country.
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
country | path | string(iso-alpha-3) | true | The ISO Alpha-3 code of the country you want to retrieve delivery methods for. |
Example responses
200 Response
[
"cash-pickup",
"direct-deposit"
]
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | The request was successful. | Inline |
Response Schema
Status Code 200
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | [DeliveryMethod] | false | none | [The method with which to receive transfer funds.] |
Get delivery partners
Code samples
GET https://api.pangeamoneytransfer.com/v1/config/delivery/{country}/partners HTTP/1.1
Host: api.pangeamoneytransfer.com
Accept: application/json
# You can also use wget
curl -X GET https://api.pangeamoneytransfer.com/v1/config/delivery/{country}/partners \
-H 'Accept: application/json' \
-H 'X-Pangea-Access-Key: API_KEY' \
-H 'X-Pangea-Secret-Key: API_KEY'
var headers = {
'Accept':'application/json',
'X-Pangea-Access-Key':'API_KEY',
'X-Pangea-Secret-Key':'API_KEY'
};
$.ajax({
url: 'https://api.pangeamoneytransfer.com/v1/config/delivery/{country}/partners',
method: 'get',
headers: headers,
success: function(data) {
console.log(JSON.stringify(data));
}
})
import requests
headers = {
'Accept': 'application/json',
'X-Pangea-Access-Key': 'API_KEY',
'X-Pangea-Secret-Key': 'API_KEY'
}
r = requests.get('https://api.pangeamoneytransfer.com/v1/config/delivery/{country}/partners', params={
}, headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-Pangea-Access-Key' => 'API_KEY',
'X-Pangea-Secret-Key' => 'API_KEY'
}
result = RestClient.get 'https://api.pangeamoneytransfer.com/v1/config/delivery/{country}/partners',
params: {
}, headers: headers
p JSON.parse(result)
URL obj = new URL("https://api.pangeamoneytransfer.com/v1/config/delivery/{country}/partners");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-Pangea-Access-Key": []string{"API_KEY"},
"X-Pangea-Secret-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.pangeamoneytransfer.com/v1/config/delivery/{country}/partners", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /config/delivery/{country}/partners
Get the available delivery partners for a country.
A Delivery Partner is the means through which a transfer is delivered to a receiver. For instance, a delivery partner allows your receivers to pick up funds at various cash pick-up locations or facilitates the deposit of transfer funds directly into a receiver's bank account.
Every delivery partner has a method
property that specifies how they handle the delivery of transfer funds. If your sender wants their receiver to receive funds by physically picking up cash, they should use a delivery partner whose method
is 'cash-pickup'.
Transfer specific requirements are listed in the deliveryRequirements property. Different delivery partners require different fields for the delivery account, sender, and/or receiver.
This endpoint lists all the delivery partners available in a specific country.
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
country | path | string(iso-alpha-3) | true | The ISO Alpha-3 code of the country you want to retrieve delivery partners for. |
Example responses
200 Response
[
{
"id": "fa7f7c05a25c4a9e8c6652a761b622cd",
"name": "Elektra",
"method": "cash-pickup",
"logoUrl": "https://api.pangeamoneytransfer.com/assets/elektra.png",
"country": "MEX"
},
{
"id": "86a8b5be15c3461b9223b3c142771d49",
"name": "Banco Famsa",
"method": "direct-deposit",
"logoUrl": "https://pangea-assets.s3-us-west-2.amazonaws.com/partners/banco-famsa@2x.png",
"country": "MEX",
"deliveryRequirements": {
"deliveryAccountRequirements": [
"accountNumber"
],
"senderRequirements": [
"nationality"
],
"receiverRequirements": [
"idNumber"
]
}
}
]
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | The request was successful. | Inline |
Response Schema
Status Code 200
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | [DeliveryPartner] | false | none | none |
» id | Identifier(uuid) | true | read-only | Universally unique identifier of an API resource. |
» name | string | true | none | The name of the partner responsible for paying out the transfer. |
» method | string | true | none | The delivery method this partner supports. |
» logoUrl | string(uri) | false | none | A public image URL of the delivery partner's logo. |
» country | string(iso-alpha-3) | true | none | The country in which the delivery partner operates. |
» deliveryRequirements | DeliveryRequirements | false | none | none |
»» deliveryAccountRequirements | [DeliveryAccountRequirements] | false | none | none |
»» senderRequirements | [PersonRequirements] | false | none | none |
»» recieverRequirements | [PersonRequirements] | false | none | none |
Enumerated Values
Property | Value |
---|---|
method | cash-pickup |
method | direct-deposit |
method | mobile-wallet |
Get delivery partner entities
Code samples
GET https://api.pangeamoneytransfer.com/v1/config/deliveryPartners/{deliveryPartnerId}/entities HTTP/1.1
Host: api.pangeamoneytransfer.com
Accept: application/json
# You can also use wget
curl -X GET https://api.pangeamoneytransfer.com/v1/config/deliveryPartners/{deliveryPartnerId}/entities \
-H 'Accept: application/json' \
-H 'X-Pangea-Access-Key: API_KEY' \
-H 'X-Pangea-Secret-Key: API_KEY'
var headers = {
'Accept':'application/json',
'X-Pangea-Access-Key':'API_KEY',
'X-Pangea-Secret-Key':'API_KEY'
};
$.ajax({
url: 'https://api.pangeamoneytransfer.com/v1/config/deliveryPartners/{deliveryPartnerId}/entities',
method: 'get',
headers: headers,
success: function(data) {
console.log(JSON.stringify(data));
}
})
import requests
headers = {
'Accept': 'application/json',
'X-Pangea-Access-Key': 'API_KEY',
'X-Pangea-Secret-Key': 'API_KEY'
}
r = requests.get('https://api.pangeamoneytransfer.com/v1/config/deliveryPartners/{deliveryPartnerId}/entities', params={
}, headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-Pangea-Access-Key' => 'API_KEY',
'X-Pangea-Secret-Key' => 'API_KEY'
}
result = RestClient.get 'https://api.pangeamoneytransfer.com/v1/config/deliveryPartners/{deliveryPartnerId}/entities',
params: {
}, headers: headers
p JSON.parse(result)
URL obj = new URL("https://api.pangeamoneytransfer.com/v1/config/deliveryPartners/{deliveryPartnerId}/entities");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-Pangea-Access-Key": []string{"API_KEY"},
"X-Pangea-Secret-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.pangeamoneytransfer.com/v1/config/deliveryPartners/{deliveryPartnerId}/entities", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /config/deliveryPartners/{deliveryPartnerId}/entities
Get the list of entities for a delivery partner.
Some (Ethiopia) delivery partners require deliveryPartnerEntityId as a delivery requirement. This endpoint provides a lookup to get the list of entities for a given partner. The entity is a specific branch for a given bank.
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
deliveryPartnerId | path | string | true | The delivery partner id |
Example responses
200 Response
[
{
"id": 150336,
"name": "Zeway Branch",
"location": "Oromia"
},
{
"id": 151185,
"name": "Head Office",
"location": "Addis Ababa"
}
]
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | The request was successful. | Inline |
Response Schema
Status Code 200
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | [DeliveryPartnerEntity] | false | none | [This is a related and required entity to a delivery account. This is usually a specific branch for a given bank (delivery partner)] |
» id | string | true | none | Identifier of the entity. Use as input when adding a delivery account for the deliveryPartnerEntityId |
» name | string | true | none | The name of the entity. Usually a branch name for the delivery partner bank. |
» location | string | true | none | Addis Ababa |
Funding
Resources related to the funding of transfers.
Register a debit card
Code samples
POST https://api.pangeamoneytransfer.com/v1/funding/cards HTTP/1.1
Host: api.pangeamoneytransfer.com
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X POST https://api.pangeamoneytransfer.com/v1/funding/cards \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'X-Pangea-Access-Key: API_KEY' \
-H 'X-Pangea-Secret-Key: API_KEY'
var headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'X-Pangea-Access-Key':'API_KEY',
'X-Pangea-Secret-Key':'API_KEY'
};
$.ajax({
url: 'https://api.pangeamoneytransfer.com/v1/funding/cards',
method: 'post',
headers: headers,
success: function(data) {
console.log(JSON.stringify(data));
}
})
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'X-Pangea-Access-Key': 'API_KEY',
'X-Pangea-Secret-Key': 'API_KEY'
}
r = requests.post('https://api.pangeamoneytransfer.com/v1/funding/cards', params={
}, headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'X-Pangea-Access-Key' => 'API_KEY',
'X-Pangea-Secret-Key' => 'API_KEY'
}
result = RestClient.post 'https://api.pangeamoneytransfer.com/v1/funding/cards',
params: {
}, headers: headers
p JSON.parse(result)
URL obj = new URL("https://api.pangeamoneytransfer.com/v1/funding/cards");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"X-Pangea-Access-Key": []string{"API_KEY"},
"X-Pangea-Secret-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api.pangeamoneytransfer.com/v1/funding/cards", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /funding/cards
Register a debit card.
Senders will be able to register a Debit Card in order to fund transfers. Once a card is registered, Pangea will handle charging the card upon transfer submission as well as refunding the card in the case of a cancellation or system error.
This endpoint provides the ability to register a debit card with the RaaS API. You'll use the RaaS JS SDK obtain a temporary token for a given card. This token is then passed through to our server in the "token" field. We never store card numbers in our database.
Body parameter
{
"senderId": "54af14befd2e48f9b01dc1040181f339",
"nameOnCard": "Amy Smith",
"iin": 400000,
"lastFourDigits": 5019,
"expirationDate": "01-20",
"postalCode": 60654,
"token": "NTI2dzkxdldmcTdPM1FDbHJrSVFkSFpWbUc3QnFWVjc0WXQ5WTEwMUdJYkRFQitaSEl1Vjh5aUlQUXZ2NWdNMQ=="
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
senderId | body | string(uuid) | true | The unique identifier of the sender you're registering a card for. |
nameOnCard | body | string | true | none |
iin | body | string | true | none |
lastFourDigits | body | string | true | none |
expirationDate | body | string(MM-yy) | true | none |
postalCode | body | string | true | The postal card associated with this card |
token | body | string | true | The token generated by the Pangea client side SDK |
Example responses
201 Response
{
"id": "d48fc57c92aa495aad2311438c545620",
"senderId": "d48fc57c92aa495aad2311438c545620",
"nameOnCard": "Cristoball Nelson",
"brand": "Visa",
"lastFourDigits": 3107,
"expiration": "01-20",
"iin": 475056
}
409 Response
{
"code": "101",
"message": "This card is already registered by 2 other users in Pangea's platform"
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
201 | Created | The resource was successfully created. | FundingCard |
409 | Conflict | The request encountered a conflict. | Error |
Query a debit card
Code samples
GET https://api.pangeamoneytransfer.com/v1/funding/cards/{cardId} HTTP/1.1
Host: api.pangeamoneytransfer.com
Accept: application/json
# You can also use wget
curl -X GET https://api.pangeamoneytransfer.com/v1/funding/cards/{cardId} \
-H 'Accept: application/json' \
-H 'X-Pangea-Access-Key: API_KEY' \
-H 'X-Pangea-Secret-Key: API_KEY'
var headers = {
'Accept':'application/json',
'X-Pangea-Access-Key':'API_KEY',
'X-Pangea-Secret-Key':'API_KEY'
};
$.ajax({
url: 'https://api.pangeamoneytransfer.com/v1/funding/cards/{cardId}',
method: 'get',
headers: headers,
success: function(data) {
console.log(JSON.stringify(data));
}
})
import requests
headers = {
'Accept': 'application/json',
'X-Pangea-Access-Key': 'API_KEY',
'X-Pangea-Secret-Key': 'API_KEY'
}
r = requests.get('https://api.pangeamoneytransfer.com/v1/funding/cards/{cardId}', params={
}, headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-Pangea-Access-Key' => 'API_KEY',
'X-Pangea-Secret-Key' => 'API_KEY'
}
result = RestClient.get 'https://api.pangeamoneytransfer.com/v1/funding/cards/{cardId}',
params: {
}, headers: headers
p JSON.parse(result)
URL obj = new URL("https://api.pangeamoneytransfer.com/v1/funding/cards/{cardId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-Pangea-Access-Key": []string{"API_KEY"},
"X-Pangea-Secret-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.pangeamoneytransfer.com/v1/funding/cards/{cardId}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /funding/cards/{cardId}
Get a registered debit card.
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
cardId | path | string(uuid) | true | The unique identifier associated with the debit card you'd like to execute the request against. |
Example responses
200 Response
{
"id": "d48fc57c92aa495aad2311438c545620",
"senderId": "d48fc57c92aa495aad2311438c545620",
"nameOnCard": "Cristoball Nelson",
"brand": "Visa",
"lastFourDigits": 3107,
"expiration": "01-20",
"iin": 475056
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | The request was successful. | FundingCard |
Delivery
Resources related to the delivery of transfers.
Create a delivery account
Code samples
POST https://api.pangeamoneytransfer.com/v1/delivery/accounts HTTP/1.1
Host: api.pangeamoneytransfer.com
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X POST https://api.pangeamoneytransfer.com/v1/delivery/accounts \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'X-Pangea-Access-Key: API_KEY' \
-H 'X-Pangea-Secret-Key: API_KEY'
var headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'X-Pangea-Access-Key':'API_KEY',
'X-Pangea-Secret-Key':'API_KEY'
};
$.ajax({
url: 'https://api.pangeamoneytransfer.com/v1/delivery/accounts',
method: 'post',
headers: headers,
success: function(data) {
console.log(JSON.stringify(data));
}
})
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'X-Pangea-Access-Key': 'API_KEY',
'X-Pangea-Secret-Key': 'API_KEY'
}
r = requests.post('https://api.pangeamoneytransfer.com/v1/delivery/accounts', params={
}, headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'X-Pangea-Access-Key' => 'API_KEY',
'X-Pangea-Secret-Key' => 'API_KEY'
}
result = RestClient.post 'https://api.pangeamoneytransfer.com/v1/delivery/accounts',
params: {
}, headers: headers
p JSON.parse(result)
URL obj = new URL("https://api.pangeamoneytransfer.com/v1/delivery/accounts");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"X-Pangea-Access-Key": []string{"API_KEY"},
"X-Pangea-Secret-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api.pangeamoneytransfer.com/v1/delivery/accounts", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /delivery/accounts
Register a delivery account.
A Delivery Account is a receiver's bank account that can be remitted to directly via a direct deposit transfer. This allows receivers to skip the process of physically picking up cash, instead allowing them to have funds deposited directly into their bank account.
Most direct-deposit partners only require the accountNumber and partnerId. India direct-deposit transfers require the ifsc code as well. We tokenize the account number on our server and store only the token in our database.
Body parameter
{
"receiverId": "54af14befd2e48f9b01dc1040181f339",
"partnerId": "f80331fe3aec4a6086fedc473371c25a",
"accountNumber": "012555555555555551",
"cbu": "string",
"clabe": "string",
"iban": "string",
"email": "string",
"msisdn": "string",
"branchNumber": "string",
"swiftBic": "string",
"ifsc": "ICIC0000007",
"acountType": "CHECKING",
"deliveryPartnerEntityId": 151181
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
receiverId | body | string(uuid) | true | The unique identifier of the receiver you're registering an account for. |
partnerId | body | string(uuid) | true | The ID of the partner this account belongs to. |
accountNumber | body | string | false | The bank account number receiving the money |
cbu | body | string | false | The CBU formatted bank account number |
clabe | body | string | false | The CLABE formatted bank account number |
iban | body | string | false | The IBAN formatted bank account number |
body | string | false | The email associated with the account | |
msisdn | body | string | false | The msisdn associated with the account |
branchNumber | body | string | false | The branch number |
swiftBic | body | string | false | The SWIFT-BIC code |
ifsc | body | string | false | The IFSC code of the branch this account belongs to |
acountType | body | string | false | CHECKING or SAVINGS |
deliveryPartnerEntityId | body | string | false | The specific entity for the delivery partner. Obtain this from the configuration endpoint |
Example responses
201 Response
{
"id": "d48fc57c92aa495aad2311438c545620",
"receiverId": "d48fc57c92aa495aad2311438c545620",
"partnerId": "d48fc57c92aa495aad2311438c545620",
"lastFourDigits": "3417",
"bankName": "Citi"
}
400 Response
[
{
"name": "ifsc",
"error": "The ifsc field is required."
}
]
409 Response
{
"code": "020",
"message": "Pangea rejected"
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
201 | Created | The resource was successfully created. | DeliveryAccount |
400 | Bad Request | The request was poorly formed. | Inline |
409 | Conflict | The request encountered a conflict. | Error |
Response Schema
Status Code 400
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | [InvalidField] | false | none | none |
» name | string | false | none | The name of the invalid field. |
» error | string | false | none | The problem with the field's input. |
Query a delivery account
Code samples
GET https://api.pangeamoneytransfer.com/v1/delivery/accounts/{accountId} HTTP/1.1
Host: api.pangeamoneytransfer.com
Accept: application/json
# You can also use wget
curl -X GET https://api.pangeamoneytransfer.com/v1/delivery/accounts/{accountId} \
-H 'Accept: application/json' \
-H 'X-Pangea-Access-Key: API_KEY' \
-H 'X-Pangea-Secret-Key: API_KEY'
var headers = {
'Accept':'application/json',
'X-Pangea-Access-Key':'API_KEY',
'X-Pangea-Secret-Key':'API_KEY'
};
$.ajax({
url: 'https://api.pangeamoneytransfer.com/v1/delivery/accounts/{accountId}',
method: 'get',
headers: headers,
success: function(data) {
console.log(JSON.stringify(data));
}
})
import requests
headers = {
'Accept': 'application/json',
'X-Pangea-Access-Key': 'API_KEY',
'X-Pangea-Secret-Key': 'API_KEY'
}
r = requests.get('https://api.pangeamoneytransfer.com/v1/delivery/accounts/{accountId}', params={
}, headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-Pangea-Access-Key' => 'API_KEY',
'X-Pangea-Secret-Key' => 'API_KEY'
}
result = RestClient.get 'https://api.pangeamoneytransfer.com/v1/delivery/accounts/{accountId}',
params: {
}, headers: headers
p JSON.parse(result)
URL obj = new URL("https://api.pangeamoneytransfer.com/v1/delivery/accounts/{accountId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-Pangea-Access-Key": []string{"API_KEY"},
"X-Pangea-Secret-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.pangeamoneytransfer.com/v1/delivery/accounts/{accountId}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /delivery/accounts/{accountId}
Get a registered delivery account.
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
accountId | path | string(uuid) | true | The unique identifier associated with the delivery account you'd like to execute the request against. |
Example responses
200 Response
{
"id": "d48fc57c92aa495aad2311438c545620",
"receiverId": "d48fc57c92aa495aad2311438c545620",
"partnerId": "d48fc57c92aa495aad2311438c545620",
"lastFourDigits": "3417",
"bankName": "Citi"
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | The request was successful. | DeliveryAccount |
Senders
Resources related to senders of transfers.
Create a sender
Code samples
POST https://api.pangeamoneytransfer.com/v1/senders HTTP/1.1
Host: api.pangeamoneytransfer.com
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X POST https://api.pangeamoneytransfer.com/v1/senders \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'X-Pangea-Access-Key: API_KEY' \
-H 'X-Pangea-Secret-Key: API_KEY'
var headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'X-Pangea-Access-Key':'API_KEY',
'X-Pangea-Secret-Key':'API_KEY'
};
$.ajax({
url: 'https://api.pangeamoneytransfer.com/v1/senders',
method: 'post',
headers: headers,
success: function(data) {
console.log(JSON.stringify(data));
}
})
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'X-Pangea-Access-Key': 'API_KEY',
'X-Pangea-Secret-Key': 'API_KEY'
}
r = requests.post('https://api.pangeamoneytransfer.com/v1/senders', params={
}, headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'X-Pangea-Access-Key' => 'API_KEY',
'X-Pangea-Secret-Key' => 'API_KEY'
}
result = RestClient.post 'https://api.pangeamoneytransfer.com/v1/senders',
params: {
}, headers: headers
p JSON.parse(result)
URL obj = new URL("https://api.pangeamoneytransfer.com/v1/senders");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"X-Pangea-Access-Key": []string{"API_KEY"},
"X-Pangea-Secret-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api.pangeamoneytransfer.com/v1/senders", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /senders
Create a sender.
Body parameter
{
"referenceId": "AZ123809",
"fullName": "Isabelle Kober",
"email": "isabelle.kober@example.com",
"phone": "15707512999",
"dateOfBirth": "1986-01-22",
"countryOfBirth": "USA",
"nationality": "USA",
"occupation": "Engineer",
"address": {
"address1": "2659 Simons Hollow Rd.",
"address2": "Unit 300",
"city": "New York",
"stateOrProvince": "NY",
"postalCode": "10001",
"country": "USA"
},
"idNumber": "string",
"idType": "PASSPORT"
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
referenceId | body | ReferenceIdentifier | false | An internal reference identifier for your own tracking purposes. |
fullName | body | string | true | Space-delimited string representing the senders's full, legal name. |
body | string(email) | false | The sender's email address. | |
phone | body | string(phone) | true | The sender's phone number with country code included (must be a mobile phone number). |
dateOfBirth | body | string(date) | true | The sender's birthday. |
countryOfBirth | body | string(iso-alpha-3) | false | The sender's country of birth. |
nationality | body | string(iso-alpha-3) | false | The sender's nationality. |
occupation | body | string | false | The sender's occupation. |
address | body | SenderAddress | true | none |
» address1 | body | string | true | First line of the street address. |
» address2 | body | string | false | Second line of the street address. |
» city | body | string | true | City in which the address is located. |
» stateOrProvince | body | string | true | State or province in which the address is located. |
» postalCode | body | string | true | The postal code in which the address is located. |
» country | body | string(iso-alpha-3) | true | Country in which the address is located. |
idNumber | body | string | false | The sender's identification number |
idType | body | idType | false | none |
Enumerated Values
Parameter | Value |
---|---|
idType | PASSPORT |
idType | DRIVING_LICENSE |
idType | SOCIAL_SECURITY |
idType | TAX_ID |
idType | SENIOR_CITIZEN_ID |
idType | BIRTH_CERTIFICATE |
idType | VILLAGE_ELDER_ID |
idType | RESIDENT_CARD |
idType | ALIEN_REGISTRATION |
idType | PAN_CARD |
idType | VOTERS_ID |
idType | HEALTH_CARD |
idType | EMPLOYER_ID |
idType | OTHER |
Example responses
200 Response
{
"id": "d48fc57c92aa495aad2311438c545620",
"referenceId": "AZ123809",
"fullName": "Isabelle Kober",
"email": "isabelle.kober@example.com",
"phone": "15707512999",
"dateOfBirth": "1986-01-22",
"countryOfBirth": "USA",
"nationality": "USA",
"occupation": "Engineer",
"address": {
"address1": "2659 Simons Hollow Rd.",
"address2": "Unit 300",
"city": "New York",
"stateOrProvince": "NY",
"postalCode": "10001",
"country": "USA"
},
"idNumber": "n-42423-3292",
"idType": "PASSPORT"
}
400 Response
[
{
"name": "countryOfBirth",
"error": "Must be a valid ISO Alpha-3 code."
},
{
"name": "dateOfBirth",
"error": "Cannot be empty."
}
]
409 Response
{
"code": "707",
"message": "Sender state is unlicensed"
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | The request was successful. | Sender |
400 | Bad Request | The request was poorly formed. | Inline |
409 | Conflict | The request encountered a conflict. | Error |
Response Schema
Status Code 400
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | [InvalidField] | false | none | none |
» name | string | false | none | The name of the invalid field. |
» error | string | false | none | The problem with the field's input. |
Get a filtered list of senders by query string.
Code samples
GET https://api.pangeamoneytransfer.com/v1/senders HTTP/1.1
Host: api.pangeamoneytransfer.com
Accept: application/json
# You can also use wget
curl -X GET https://api.pangeamoneytransfer.com/v1/senders \
-H 'Accept: application/json' \
-H 'X-Pangea-Access-Key: API_KEY' \
-H 'X-Pangea-Secret-Key: API_KEY'
var headers = {
'Accept':'application/json',
'X-Pangea-Access-Key':'API_KEY',
'X-Pangea-Secret-Key':'API_KEY'
};
$.ajax({
url: 'https://api.pangeamoneytransfer.com/v1/senders',
method: 'get',
headers: headers,
success: function(data) {
console.log(JSON.stringify(data));
}
})
import requests
headers = {
'Accept': 'application/json',
'X-Pangea-Access-Key': 'API_KEY',
'X-Pangea-Secret-Key': 'API_KEY'
}
r = requests.get('https://api.pangeamoneytransfer.com/v1/senders', params={
}, headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-Pangea-Access-Key' => 'API_KEY',
'X-Pangea-Secret-Key' => 'API_KEY'
}
result = RestClient.get 'https://api.pangeamoneytransfer.com/v1/senders',
params: {
}, headers: headers
p JSON.parse(result)
URL obj = new URL("https://api.pangeamoneytransfer.com/v1/senders");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-Pangea-Access-Key": []string{"API_KEY"},
"X-Pangea-Secret-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.pangeamoneytransfer.com/v1/senders", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /senders
Get a filtered list of senders by query string.
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
phone | query | string | false | Filter by sender phone |
Example responses
200 Response
[
{
"id": "d48fc57c92aa495aad2311438c545620",
"referenceId": "AZ123809",
"fullName": "Isabelle Kober",
"email": "isabelle.kober@example.com",
"phone": "15707512999",
"dateOfBirth": "1986-01-22",
"countryOfBirth": "USA",
"nationality": "USA",
"occupation": "Engineer",
"address": {
"address1": "2659 Simons Hollow Rd.",
"address2": "Unit 300",
"city": "New York",
"stateOrProvince": "NY",
"postalCode": "10001",
"country": "USA"
},
"idNumber": "n-42423-3292",
"idType": "PASSPORT"
}
]
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | The request was successful. | Inline |
Response Schema
Status Code 200
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | [Sender] | false | none | none |
» id | Identifier(uuid) | true | read-only | Universally unique identifier of an API resource. |
» referenceId | ReferenceIdentifier | false | none | An internal reference identifier for your own tracking purposes. |
» fullName | string | true | none | Space-delimited string representing the senders's full, legal name. |
string(email) | false | none | The sender's email address. | |
» phone | string(phone) | true | none | The sender's phone number with country code included (must be a mobile phone number). |
» dateOfBirth | string(date) | true | none | The sender's birthday. Must be at least 18 years old. |
» countryOfBirth | string(iso-alpha-3) | false | none | The sender's country of birth. |
» nationality | string(iso-alpha-3) | false | none | The sender's nationality. |
» occupation | string | false | none | The sender's occupation. |
» address | SenderAddress | true | none | none |
»» address1 | string | true | none | First line of the street address. |
»» address2 | string | false | none | Second line of the street address. |
»» city | string | true | none | City in which the address is located. |
»» stateOrProvince | string | true | none | State or province in which the address is located. |
»» postalCode | string | true | none | The postal code in which the address is located. |
»» country | string(iso-alpha-3) | true | none | Country in which the address is located. |
» idNumber | string | false | none | The sender's identification number |
» idType | idType | false | none | none |
Enumerated Values
Property | Value |
---|---|
idType | PASSPORT |
idType | DRIVING_LICENSE |
idType | SOCIAL_SECURITY |
idType | TAX_ID |
idType | SENIOR_CITIZEN_ID |
idType | BIRTH_CERTIFICATE |
idType | VILLAGE_ELDER_ID |
idType | RESIDENT_CARD |
idType | ALIEN_REGISTRATION |
idType | PAN_CARD |
idType | VOTERS_ID |
idType | HEALTH_CARD |
idType | EMPLOYER_ID |
idType | OTHER |
Query a sender
Code samples
GET https://api.pangeamoneytransfer.com/v1/senders/{senderId} HTTP/1.1
Host: api.pangeamoneytransfer.com
Accept: application/json
# You can also use wget
curl -X GET https://api.pangeamoneytransfer.com/v1/senders/{senderId} \
-H 'Accept: application/json' \
-H 'X-Pangea-Access-Key: API_KEY' \
-H 'X-Pangea-Secret-Key: API_KEY'
var headers = {
'Accept':'application/json',
'X-Pangea-Access-Key':'API_KEY',
'X-Pangea-Secret-Key':'API_KEY'
};
$.ajax({
url: 'https://api.pangeamoneytransfer.com/v1/senders/{senderId}',
method: 'get',
headers: headers,
success: function(data) {
console.log(JSON.stringify(data));
}
})
import requests
headers = {
'Accept': 'application/json',
'X-Pangea-Access-Key': 'API_KEY',
'X-Pangea-Secret-Key': 'API_KEY'
}
r = requests.get('https://api.pangeamoneytransfer.com/v1/senders/{senderId}', params={
}, headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-Pangea-Access-Key' => 'API_KEY',
'X-Pangea-Secret-Key' => 'API_KEY'
}
result = RestClient.get 'https://api.pangeamoneytransfer.com/v1/senders/{senderId}',
params: {
}, headers: headers
p JSON.parse(result)
URL obj = new URL("https://api.pangeamoneytransfer.com/v1/senders/{senderId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-Pangea-Access-Key": []string{"API_KEY"},
"X-Pangea-Secret-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.pangeamoneytransfer.com/v1/senders/{senderId}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /senders/{senderId}
Get a sender.
This endpoint allows you to get the details of a sender.
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
senderId | path | string(uuid) | true | The unique identifier associated with the sender you're searching for. |
Example responses
200 Response
[
{
"id": "d48fc57c92aa495aad2311438c545620",
"referenceId": "AZ123809",
"fullName": "Isabelle Kober",
"email": "isabelle.kober@example.com",
"phone": "15707512999",
"dateOfBirth": "1986-01-22",
"countryOfBirth": "USA",
"nationality": "USA",
"occupation": "Engineer",
"address": {
"address1": "2659 Simons Hollow Rd.",
"address2": "Unit 300",
"city": "New York",
"stateOrProvince": "NY",
"postalCode": "10001",
"country": "USA"
},
"idNumber": "n-42423-3292",
"idType": "PASSPORT"
}
]
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | The request was successful. | Inline |
Response Schema
Status Code 200
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | [Sender] | false | none | none |
» id | Identifier(uuid) | true | read-only | Universally unique identifier of an API resource. |
» referenceId | ReferenceIdentifier | false | none | An internal reference identifier for your own tracking purposes. |
» fullName | string | true | none | Space-delimited string representing the senders's full, legal name. |
string(email) | false | none | The sender's email address. | |
» phone | string(phone) | true | none | The sender's phone number with country code included (must be a mobile phone number). |
» dateOfBirth | string(date) | true | none | The sender's birthday. Must be at least 18 years old. |
» countryOfBirth | string(iso-alpha-3) | false | none | The sender's country of birth. |
» nationality | string(iso-alpha-3) | false | none | The sender's nationality. |
» occupation | string | false | none | The sender's occupation. |
» address | SenderAddress | true | none | none |
»» address1 | string | true | none | First line of the street address. |
»» address2 | string | false | none | Second line of the street address. |
»» city | string | true | none | City in which the address is located. |
»» stateOrProvince | string | true | none | State or province in which the address is located. |
»» postalCode | string | true | none | The postal code in which the address is located. |
»» country | string(iso-alpha-3) | true | none | Country in which the address is located. |
» idNumber | string | false | none | The sender's identification number |
» idType | idType | false | none | none |
Enumerated Values
Property | Value |
---|---|
idType | PASSPORT |
idType | DRIVING_LICENSE |
idType | SOCIAL_SECURITY |
idType | TAX_ID |
idType | SENIOR_CITIZEN_ID |
idType | BIRTH_CERTIFICATE |
idType | VILLAGE_ELDER_ID |
idType | RESIDENT_CARD |
idType | ALIEN_REGISTRATION |
idType | PAN_CARD |
idType | VOTERS_ID |
idType | HEALTH_CARD |
idType | EMPLOYER_ID |
idType | OTHER |
Update a sender
Code samples
PATCH https://api.pangeamoneytransfer.com/v1/senders/{senderId} HTTP/1.1
Host: api.pangeamoneytransfer.com
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X PATCH https://api.pangeamoneytransfer.com/v1/senders/{senderId} \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'X-Pangea-Access-Key: API_KEY' \
-H 'X-Pangea-Secret-Key: API_KEY'
var headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'X-Pangea-Access-Key':'API_KEY',
'X-Pangea-Secret-Key':'API_KEY'
};
$.ajax({
url: 'https://api.pangeamoneytransfer.com/v1/senders/{senderId}',
method: 'patch',
headers: headers,
success: function(data) {
console.log(JSON.stringify(data));
}
})
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'X-Pangea-Access-Key': 'API_KEY',
'X-Pangea-Secret-Key': 'API_KEY'
}
r = requests.patch('https://api.pangeamoneytransfer.com/v1/senders/{senderId}', params={
}, headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'X-Pangea-Access-Key' => 'API_KEY',
'X-Pangea-Secret-Key' => 'API_KEY'
}
result = RestClient.patch 'https://api.pangeamoneytransfer.com/v1/senders/{senderId}',
params: {
}, headers: headers
p JSON.parse(result)
URL obj = new URL("https://api.pangeamoneytransfer.com/v1/senders/{senderId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PATCH");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"X-Pangea-Access-Key": []string{"API_KEY"},
"X-Pangea-Secret-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("PATCH", "https://api.pangeamoneytransfer.com/v1/senders/{senderId}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
PATCH /senders/{senderId}
Update a sender.
This endpoint allows you to update a sender's information. Although a request body is required, none of the specific fields themselves are required. You can choose to update any of the fields that appear in the PATCH schema below.
Please note that when updating the address, all required address fields are required.
Body parameter
{
"referenceId": "AZ123809",
"fullName": "Isabelle Kober",
"email": "isabelle.kober@example.com",
"phone": "15707512999",
"dateOfBirth": "1986-01-22",
"countryOfBirth": "USA",
"nationality": "USA",
"occupation": "Engineer",
"address": {
"address1": "2659 Simons Hollow Rd.",
"address2": "Unit 300",
"city": "New York",
"stateOrProvince": "NY",
"postalCode": "10001",
"country": "USA"
},
"idNumber": "string",
"idType": "PASSPORT"
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
senderId | path | string(uuid) | true | The unique identifier associated with the sender you're searching for. |
referenceId | body | ReferenceIdentifier | false | An internal reference identifier for your own tracking purposes. |
fullName | body | string | false | Space-delimited string representing the senders's full, legal name. |
body | string(email) | false | The sender's email address. | |
phone | body | string(phone) | false | The sender's phone number with country code included (must be a mobile phone number). |
dateOfBirth | body | string(date) | false | The sender's birthday. |
countryOfBirth | body | string(iso-alpha-3) | false | The sender's country of birth. |
nationality | body | string(iso-alpha-3) | false | The sender's nationality. |
occupation | body | string | false | The sender's occupation. |
address | body | object | false | none |
» address1 | body | string | false | First line of the street address. |
» address2 | body | string | false | Second line of the street address. |
» city | body | string | false | City in which the address is located. |
» stateOrProvince | body | string | false | State or province in which the address is located. |
» postalCode | body | string | false | The postal code in which the address is located. |
» country | body | string(iso-alpha-3) | false | Country in which the address is located. |
idNumber | body | string | false | The sender's identification number |
idType | body | idType | false | none |
Enumerated Values
Parameter | Value |
---|---|
idType | PASSPORT |
idType | DRIVING_LICENSE |
idType | SOCIAL_SECURITY |
idType | TAX_ID |
idType | SENIOR_CITIZEN_ID |
idType | BIRTH_CERTIFICATE |
idType | VILLAGE_ELDER_ID |
idType | RESIDENT_CARD |
idType | ALIEN_REGISTRATION |
idType | PAN_CARD |
idType | VOTERS_ID |
idType | HEALTH_CARD |
idType | EMPLOYER_ID |
idType | OTHER |
Example responses
200 Response
{
"id": "d48fc57c92aa495aad2311438c545620",
"referenceId": "AZ123809",
"fullName": "Isabelle Kober",
"email": "isabelle.kober@example.com",
"phone": "15707512999",
"dateOfBirth": "1986-01-22",
"countryOfBirth": "USA",
"nationality": "USA",
"occupation": "Engineer",
"address": {
"address1": "2659 Simons Hollow Rd.",
"address2": "Unit 300",
"city": "New York",
"stateOrProvince": "NY",
"postalCode": "10001",
"country": "USA"
},
"idNumber": "n-42423-3292",
"idType": "PASSPORT"
}
400 Response
[
{
"name": "dateOfBirth",
"error": "Cannot be empty."
},
{
"name": "stateOrProvince",
"error": "Must be an ISO Alpha-2 code."
}
]
409 Response
{
"code": "205",
"message": "Sender country must be in USA"
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | The request was successful. | Sender |
304 | Not Modified | No data was updated. | None |
400 | Bad Request | The request was poorly formed. | Inline |
409 | Conflict | The request encountered a conflict. | Error |
Response Schema
Status Code 400
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | [InvalidField] | false | none | none |
» name | string | false | none | The name of the invalid field. |
» error | string | false | none | The problem with the field's input. |
Receivers
Resources related to receivers of transfers.
Create a receiver
Code samples
POST https://api.pangeamoneytransfer.com/v1/senders/{senderId}/receivers HTTP/1.1
Host: api.pangeamoneytransfer.com
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X POST https://api.pangeamoneytransfer.com/v1/senders/{senderId}/receivers \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'X-Pangea-Access-Key: API_KEY' \
-H 'X-Pangea-Secret-Key: API_KEY'
var headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'X-Pangea-Access-Key':'API_KEY',
'X-Pangea-Secret-Key':'API_KEY'
};
$.ajax({
url: 'https://api.pangeamoneytransfer.com/v1/senders/{senderId}/receivers',
method: 'post',
headers: headers,
success: function(data) {
console.log(JSON.stringify(data));
}
})
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'X-Pangea-Access-Key': 'API_KEY',
'X-Pangea-Secret-Key': 'API_KEY'
}
r = requests.post('https://api.pangeamoneytransfer.com/v1/senders/{senderId}/receivers', params={
}, headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'X-Pangea-Access-Key' => 'API_KEY',
'X-Pangea-Secret-Key' => 'API_KEY'
}
result = RestClient.post 'https://api.pangeamoneytransfer.com/v1/senders/{senderId}/receivers',
params: {
}, headers: headers
p JSON.parse(result)
URL obj = new URL("https://api.pangeamoneytransfer.com/v1/senders/{senderId}/receivers");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"X-Pangea-Access-Key": []string{"API_KEY"},
"X-Pangea-Secret-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api.pangeamoneytransfer.com/v1/senders/{senderId}/receivers", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /senders/{senderId}/receivers
Create a receiver.
This endpoint allows you to create a receiver for a specific sender. Municipality is required for Mexico City, MEX.
Body parameter
{
"referenceId": "AZ123809",
"fullName": "Ambrosia Vasquez Gamboa",
"address": {
"address1": "2659 Simons Hollow Rd.",
"address2": "Unit 300",
"city": "Juárez",
"stateOrProvince": "CHH",
"stateOrProvinceType": "ISO31662",
"postalCode": "32250",
"country": "MEX",
"municipality": "Xochimilco"
},
"phone": "546667778888",
"dateOfBirth": "1986-01-22",
"nationality": "MEX",
"idNumber": "string",
"idType": "PASSPORT"
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
senderId | path | string(uuid) | true | The unique identifier associated with the sender you're searching for. |
referenceId | body | ReferenceIdentifier | false | An internal reference identifier for your own tracking purposes. |
fullName | body | string | true | Space-delimited string representing the receiver's full, legal name. |
address | body | ReceiverAddress | true | A schema defining a receiver's address. |
» address1 | body | string | false | First line of the street address. |
» address2 | body | string | false | Second line of the street address. |
» city | body | string | true | City in which the address is located. |
» stateOrProvince | body | string | true | State or province in which the address is located. |
» stateOrProvinceType | body | stateOrProvinceType | false | This describes how Pangea will validate the address stateOrProvince. The default is ISO3162. If ISO31662, then stateOrProvince value is expected to be 'JAL' to designate Jalisco. If LongName, the value is expected to be 'Jalisco' for example. |
» postalCode | body | string | false | The postal code in which the address is located. |
» country | body | string(iso-alpha-3) | true | Country in which the address is located. |
» municipality | body | string | false | Municipality of the city |
phone | body | string(phone) | false | The receiver's phone number with country code included. |
dateOfBirth | body | string(date) | false | The receiver's birthday. |
nationality | body | string(iso-alpha-3) | false | The receiver's nationality. |
idNumber | body | string | false | The receiver's identification number |
idType | body | idType | false | none |
Enumerated Values
Parameter | Value |
---|---|
» stateOrProvinceType | ISO31662 |
» stateOrProvinceType | LongName |
idType | PASSPORT |
idType | DRIVING_LICENSE |
idType | SOCIAL_SECURITY |
idType | TAX_ID |
idType | SENIOR_CITIZEN_ID |
idType | BIRTH_CERTIFICATE |
idType | VILLAGE_ELDER_ID |
idType | RESIDENT_CARD |
idType | ALIEN_REGISTRATION |
idType | PAN_CARD |
idType | VOTERS_ID |
idType | HEALTH_CARD |
idType | EMPLOYER_ID |
idType | OTHER |
Example responses
200 Response
{
"id": "d48fc57c92aa495aad2311438c545620",
"referenceId": "AZ123809",
"fullName": "Ambrosia Vasquez Gamboa",
"address": {
"address1": "2659 Simons Hollow Rd.",
"address2": "Unit 300",
"city": "Juárez",
"stateOrProvince": "CHH",
"stateOrProvinceType": "ISO31662",
"postalCode": "32250",
"country": "MEX",
"municipality": "Xochimilco"
},
"nationality": "MEX",
"phone": "543334445555",
"dateOfBirth": "1986-01-22",
"idNumber": "2322333444332d",
"idType": "PASSPORT"
}
400 Response
[
{
"name": "dateOfBirth",
"error": "Cannot be empty."
},
{
"name": "stateOrProvince",
"error": "Must be an ISO Alpha-2 code."
}
]
409 Response
{
"code": "210",
"message": "Country is not supported"
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | The request was successful. | Receiver |
400 | Bad Request | The request was poorly formed. | Inline |
409 | Conflict | The request encountered a conflict. | Error |
Response Schema
Status Code 400
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | [InvalidField] | false | none | none |
» name | string | false | none | The name of the invalid field. |
» error | string | false | none | The problem with the field's input. |
Query receivers
Code samples
GET https://api.pangeamoneytransfer.com/v1/senders/{senderId}/receivers HTTP/1.1
Host: api.pangeamoneytransfer.com
Accept: application/json
# You can also use wget
curl -X GET https://api.pangeamoneytransfer.com/v1/senders/{senderId}/receivers \
-H 'Accept: application/json' \
-H 'X-Pangea-Access-Key: API_KEY' \
-H 'X-Pangea-Secret-Key: API_KEY'
var headers = {
'Accept':'application/json',
'X-Pangea-Access-Key':'API_KEY',
'X-Pangea-Secret-Key':'API_KEY'
};
$.ajax({
url: 'https://api.pangeamoneytransfer.com/v1/senders/{senderId}/receivers',
method: 'get',
headers: headers,
success: function(data) {
console.log(JSON.stringify(data));
}
})
import requests
headers = {
'Accept': 'application/json',
'X-Pangea-Access-Key': 'API_KEY',
'X-Pangea-Secret-Key': 'API_KEY'
}
r = requests.get('https://api.pangeamoneytransfer.com/v1/senders/{senderId}/receivers', params={
}, headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-Pangea-Access-Key' => 'API_KEY',
'X-Pangea-Secret-Key' => 'API_KEY'
}
result = RestClient.get 'https://api.pangeamoneytransfer.com/v1/senders/{senderId}/receivers',
params: {
}, headers: headers
p JSON.parse(result)
URL obj = new URL("https://api.pangeamoneytransfer.com/v1/senders/{senderId}/receivers");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-Pangea-Access-Key": []string{"API_KEY"},
"X-Pangea-Secret-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.pangeamoneytransfer.com/v1/senders/{senderId}/receivers", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /senders/{senderId}/receivers
Retrieve receivers.
This endpoint allows you to get all receivers for a specific sender.
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
senderId | path | string(uuid) | true | The unique identifier associated with the sender you're searching for. |
Example responses
200 Response
[
{
"id": "d48fc57c92aa495aad2311438c545620",
"referenceId": "AZ123809",
"fullName": "Ambrosia Vasquez Gamboa",
"address": {
"address1": "2659 Simons Hollow Rd.",
"address2": "Unit 300",
"city": "Juárez",
"stateOrProvince": "CHH",
"stateOrProvinceType": "ISO31662",
"postalCode": "32250",
"country": "MEX",
"municipality": "Xochimilco"
},
"nationality": "MEX",
"phone": "543334445555",
"dateOfBirth": "1986-01-22",
"idNumber": "2322333444332d",
"idType": "PASSPORT"
}
]
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | The request was successful. | Inline |
Response Schema
Status Code 200
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | [Receiver] | false | none | [A schema defining a person capable of receiving a transfer.] |
» id | Identifier(uuid) | true | read-only | Universally unique identifier of an API resource. |
» referenceId | ReferenceIdentifier | false | none | An internal reference identifier for your own tracking purposes. |
» fullName | string | true | none | Space-delimited string representing the receiver's full, legal name. |
» address | ReceiverAddress | true | none | A schema defining a receiver's address. |
»» address1 | string | false | none | First line of the street address. |
»» address2 | string | false | none | Second line of the street address. |
»» city | string | true | none | City in which the address is located. |
»» stateOrProvince | string | true | none | State or province in which the address is located. |
»» stateOrProvinceType | stateOrProvinceType | false | none | This describes how Pangea will validate the address stateOrProvince. The default is ISO3162. If ISO31662, then stateOrProvince value is expected to be 'JAL' to designate Jalisco. If LongName, the value is expected to be 'Jalisco' for example. |
»» postalCode | string | false | none | The postal code in which the address is located. |
»» country | string(iso-alpha-3) | true | none | Country in which the address is located. |
»» municipality | string | false | none | Municipality of the city |
» nationality | string(iso-alpha-3) | false | none | The receiver's nationality |
» phone | string | false | none | The phone number |
» dateOfBirth | string(date) | false | none | The receiver's birthday. Must be at least 18 years old. |
» idNumber | string | false | none | The sender's identification number |
» idType | idType | false | none | none |
Enumerated Values
Property | Value |
---|---|
stateOrProvinceType | ISO31662 |
stateOrProvinceType | LongName |
idType | PASSPORT |
idType | DRIVING_LICENSE |
idType | SOCIAL_SECURITY |
idType | TAX_ID |
idType | SENIOR_CITIZEN_ID |
idType | BIRTH_CERTIFICATE |
idType | VILLAGE_ELDER_ID |
idType | RESIDENT_CARD |
idType | ALIEN_REGISTRATION |
idType | PAN_CARD |
idType | VOTERS_ID |
idType | HEALTH_CARD |
idType | EMPLOYER_ID |
idType | OTHER |
Query a receiver
Code samples
GET https://api.pangeamoneytransfer.com/v1/senders/{senderId}/receivers/{receiverId} HTTP/1.1
Host: api.pangeamoneytransfer.com
Accept: application/json
# You can also use wget
curl -X GET https://api.pangeamoneytransfer.com/v1/senders/{senderId}/receivers/{receiverId} \
-H 'Accept: application/json' \
-H 'X-Pangea-Access-Key: API_KEY' \
-H 'X-Pangea-Secret-Key: API_KEY'
var headers = {
'Accept':'application/json',
'X-Pangea-Access-Key':'API_KEY',
'X-Pangea-Secret-Key':'API_KEY'
};
$.ajax({
url: 'https://api.pangeamoneytransfer.com/v1/senders/{senderId}/receivers/{receiverId}',
method: 'get',
headers: headers,
success: function(data) {
console.log(JSON.stringify(data));
}
})
import requests
headers = {
'Accept': 'application/json',
'X-Pangea-Access-Key': 'API_KEY',
'X-Pangea-Secret-Key': 'API_KEY'
}
r = requests.get('https://api.pangeamoneytransfer.com/v1/senders/{senderId}/receivers/{receiverId}', params={
}, headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-Pangea-Access-Key' => 'API_KEY',
'X-Pangea-Secret-Key' => 'API_KEY'
}
result = RestClient.get 'https://api.pangeamoneytransfer.com/v1/senders/{senderId}/receivers/{receiverId}',
params: {
}, headers: headers
p JSON.parse(result)
URL obj = new URL("https://api.pangeamoneytransfer.com/v1/senders/{senderId}/receivers/{receiverId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-Pangea-Access-Key": []string{"API_KEY"},
"X-Pangea-Secret-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.pangeamoneytransfer.com/v1/senders/{senderId}/receivers/{receiverId}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /senders/{senderId}/receivers/{receiverId}
Retrieve a receiver.
This endpoint allows you to get a receiver for a specific sender.
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
senderId | path | string(uuid) | true | The unique identifier associated with the sender you're searching for. |
receiverId | path | string(uuid) | true | The unique identifier associated with the receiver you're searching for. |
Example responses
200 Response
{
"id": "d48fc57c92aa495aad2311438c545620",
"referenceId": "AZ123809",
"fullName": "Ambrosia Vasquez Gamboa",
"address": {
"address1": "2659 Simons Hollow Rd.",
"address2": "Unit 300",
"city": "Juárez",
"stateOrProvince": "CHH",
"stateOrProvinceType": "ISO31662",
"postalCode": "32250",
"country": "MEX",
"municipality": "Xochimilco"
},
"nationality": "MEX",
"phone": "543334445555",
"dateOfBirth": "1986-01-22",
"idNumber": "2322333444332d",
"idType": "PASSPORT"
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | The request was successful. | Receiver |
Update a receiver
Code samples
PATCH https://api.pangeamoneytransfer.com/v1/senders/{senderId}/receivers/{receiverId} HTTP/1.1
Host: api.pangeamoneytransfer.com
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X PATCH https://api.pangeamoneytransfer.com/v1/senders/{senderId}/receivers/{receiverId} \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'X-Pangea-Access-Key: API_KEY' \
-H 'X-Pangea-Secret-Key: API_KEY'
var headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'X-Pangea-Access-Key':'API_KEY',
'X-Pangea-Secret-Key':'API_KEY'
};
$.ajax({
url: 'https://api.pangeamoneytransfer.com/v1/senders/{senderId}/receivers/{receiverId}',
method: 'patch',
headers: headers,
success: function(data) {
console.log(JSON.stringify(data));
}
})
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'X-Pangea-Access-Key': 'API_KEY',
'X-Pangea-Secret-Key': 'API_KEY'
}
r = requests.patch('https://api.pangeamoneytransfer.com/v1/senders/{senderId}/receivers/{receiverId}', params={
}, headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'X-Pangea-Access-Key' => 'API_KEY',
'X-Pangea-Secret-Key' => 'API_KEY'
}
result = RestClient.patch 'https://api.pangeamoneytransfer.com/v1/senders/{senderId}/receivers/{receiverId}',
params: {
}, headers: headers
p JSON.parse(result)
URL obj = new URL("https://api.pangeamoneytransfer.com/v1/senders/{senderId}/receivers/{receiverId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PATCH");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"X-Pangea-Access-Key": []string{"API_KEY"},
"X-Pangea-Secret-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("PATCH", "https://api.pangeamoneytransfer.com/v1/senders/{senderId}/receivers/{receiverId}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
PATCH /senders/{senderId}/receivers/{receiverId}
Update a receiver.
This endpoint allows you to update a receiver's information. Although a request body is required, none of the specific fields themselves are required. You can choose to update any of the fields that appear in the PATCH schema below.
Please note that when updating the address, all required address fields are required.
Body parameter
{
"fullName": "Ambrosia Vasquez Gamboa",
"address": {
"address1": "2659 Simons Hollow Rd.",
"address2": "Unit 300",
"city": "Juárez",
"stateOrProvince": "CHH",
"stateOrProvinceType": "ISO31662",
"postalCode": "32250",
"country": "MEX",
"municipality": "Xochimilco"
},
"phone": "546665558888",
"dateOfBirth": "1986-01-22",
"nationality": "MEX",
"idNumber": "string",
"idType": "PASSPORT"
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
senderId | path | string(uuid) | true | The unique identifier associated with the sender you're searching for. |
receiverId | path | string(uuid) | true | The unique identifier associated with the receiver you're searching for. |
fullName | body | string | false | Space-delimited string representing the receiver's full, legal name. |
address | body | ReceiverAddress | false | A schema defining a receiver's address. |
» address1 | body | string | false | First line of the street address. |
» address2 | body | string | false | Second line of the street address. |
» city | body | string | true | City in which the address is located. |
» stateOrProvince | body | string | true | State or province in which the address is located. |
» stateOrProvinceType | body | stateOrProvinceType | false | This describes how Pangea will validate the address stateOrProvince. The default is ISO3162. If ISO31662, then stateOrProvince value is expected to be 'JAL' to designate Jalisco. If LongName, the value is expected to be 'Jalisco' for example. |
» postalCode | body | string | false | The postal code in which the address is located. |
» country | body | string(iso-alpha-3) | true | Country in which the address is located. |
» municipality | body | string | false | Municipality of the city |
phone | body | string(phone) | false | The receiver's phone number with country code included. |
dateOfBirth | body | string(date) | false | The receiver's birthday. |
nationality | body | string(iso-alpha-3) | false | The receiver's nationality. |
idNumber | body | string | false | The receiver's identification number |
idType | body | idType | false | none |
Enumerated Values
Parameter | Value |
---|---|
» stateOrProvinceType | ISO31662 |
» stateOrProvinceType | LongName |
idType | PASSPORT |
idType | DRIVING_LICENSE |
idType | SOCIAL_SECURITY |
idType | TAX_ID |
idType | SENIOR_CITIZEN_ID |
idType | BIRTH_CERTIFICATE |
idType | VILLAGE_ELDER_ID |
idType | RESIDENT_CARD |
idType | ALIEN_REGISTRATION |
idType | PAN_CARD |
idType | VOTERS_ID |
idType | HEALTH_CARD |
idType | EMPLOYER_ID |
idType | OTHER |
Example responses
200 Response
{
"id": "d48fc57c92aa495aad2311438c545620",
"referenceId": "AZ123809",
"fullName": "Ambrosia Vasquez Gamboa",
"address": {
"address1": "2659 Simons Hollow Rd.",
"address2": "Unit 300",
"city": "Juárez",
"stateOrProvince": "CHH",
"stateOrProvinceType": "ISO31662",
"postalCode": "32250",
"country": "MEX",
"municipality": "Xochimilco"
},
"nationality": "MEX",
"phone": "543334445555",
"dateOfBirth": "1986-01-22",
"idNumber": "2322333444332d",
"idType": "PASSPORT"
}
400 Response
[
{
"name": "stateOrProvince",
"error": "Must be an ISO Alpha-2 code."
}
]
409 Response
{
"code": "210",
"message": "Country is not supported"
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | The request was successful. | Receiver |
304 | Not Modified | No data was updated. | None |
400 | Bad Request | The request was poorly formed. | Inline |
409 | Conflict | The request encountered a conflict. | Error |
Response Schema
Status Code 400
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | [InvalidField] | false | none | none |
» name | string | false | none | The name of the invalid field. |
» error | string | false | none | The problem with the field's input. |
Quotes
Resources related to quotes.
Create a quote
Code samples
POST https://api.pangeamoneytransfer.com/v1/quote HTTP/1.1
Host: api.pangeamoneytransfer.com
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X POST https://api.pangeamoneytransfer.com/v1/quote \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'X-Pangea-Access-Key: API_KEY' \
-H 'X-Pangea-Secret-Key: API_KEY'
var headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'X-Pangea-Access-Key':'API_KEY',
'X-Pangea-Secret-Key':'API_KEY'
};
$.ajax({
url: 'https://api.pangeamoneytransfer.com/v1/quote',
method: 'post',
headers: headers,
success: function(data) {
console.log(JSON.stringify(data));
}
})
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'X-Pangea-Access-Key': 'API_KEY',
'X-Pangea-Secret-Key': 'API_KEY'
}
r = requests.post('https://api.pangeamoneytransfer.com/v1/quote', params={
}, headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'X-Pangea-Access-Key' => 'API_KEY',
'X-Pangea-Secret-Key' => 'API_KEY'
}
result = RestClient.post 'https://api.pangeamoneytransfer.com/v1/quote',
params: {
}, headers: headers
p JSON.parse(result)
URL obj = new URL("https://api.pangeamoneytransfer.com/v1/quote");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"X-Pangea-Access-Key": []string{"API_KEY"},
"X-Pangea-Secret-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api.pangeamoneytransfer.com/v1/quote", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /quote
Create a quote to be used for a transfer.
A quote used to establish the fee that Pangea will charge you to complete this transfer. This is not the fee that will be applied charged to your sender's funding method. You must use the latest available quote before creating each transfer. Some counties (Honduras and El Salvador) require that you use a specific FX rate when calculating the receiving amount. This is provided in the optional field 'requiredFxRate'.
Body parameter
{
"fundingAmount": {
"amount": 250.66,
"currency": "USD"
},
"partnerId": "d48fc57c92aa495aad2311438c545620"
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
fundingAmount | body | Money | true | none |
» amount | body | number(double) | true | The amount of money. |
» currency | body | string(iso-alpha-3) | true | The currency the money belongs to. |
partnerId | body | string | true | Identifier of the delivery partner |
Example responses
201 Response
{
"id": "d48fc57c92aa495aad2311438c545620",
"fee": {
"amount": 120,
"currency": "USD"
},
"quotationFxRate": 17.75,
"fxCurrency": "MXN",
"requiredFxRate": 17.75
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
201 | Created | The resource was successfully created. | Quote |
400 | Bad Request | The request was poorly formed. | Inline |
409 | Conflict | The request encountered a conflict. | Error |
Response Schema
Status Code 400
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | [InvalidField] | false | none | none |
» name | string | false | none | The name of the invalid field. |
» error | string | false | none | The problem with the field's input. |
Transfers
Resources that allow you to create, manage and execute international money transfers.
Create a transfer
Code samples
POST https://api.pangeamoneytransfer.com/v1/transfers HTTP/1.1
Host: api.pangeamoneytransfer.com
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X POST https://api.pangeamoneytransfer.com/v1/transfers \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'X-Pangea-Access-Key: API_KEY' \
-H 'X-Pangea-Secret-Key: API_KEY'
var headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'X-Pangea-Access-Key':'API_KEY',
'X-Pangea-Secret-Key':'API_KEY'
};
$.ajax({
url: 'https://api.pangeamoneytransfer.com/v1/transfers',
method: 'post',
headers: headers,
success: function(data) {
console.log(JSON.stringify(data));
}
})
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'X-Pangea-Access-Key': 'API_KEY',
'X-Pangea-Secret-Key': 'API_KEY'
}
r = requests.post('https://api.pangeamoneytransfer.com/v1/transfers', params={
}, headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'X-Pangea-Access-Key' => 'API_KEY',
'X-Pangea-Secret-Key' => 'API_KEY'
}
result = RestClient.post 'https://api.pangeamoneytransfer.com/v1/transfers',
params: {
}, headers: headers
p JSON.parse(result)
URL obj = new URL("https://api.pangeamoneytransfer.com/v1/transfers");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"X-Pangea-Access-Key": []string{"API_KEY"},
"X-Pangea-Secret-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api.pangeamoneytransfer.com/v1/transfers", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /transfers
Create a transfer.
This endpoint allows you to submit a request for an international money transfer on behalf of your customers. A successful response from this endpoint ensures that you have submitted all the required information and that your transfer has been created and is in process.
At each stage of the transfer's lifecycle, you will receive status updates at the callbackUrl
you provide in the body of this request.
Validations are done to ensure that the funding amount, fee, and exchange rate equals the correct delivery amount: funding.Amount * fxRate = delivery.Amount
The final delivery amount must be rounded to the countries' configured roundingAmountDigits.
The amount we charge your customer: funding.Amount + fee
The amount we give to the receiver: delivery.Amount
Body parameter
{
"referenceId": "AZ123809",
"delivery": {
"amount": {
"amount": 120,
"currency": "USD"
},
"partnerId": "d48fc57c92aa495aad2311438c545620",
"accountId": "d48fc57c92aa495aad2311438c545620",
"method": "direct-deposit"
},
"funding": {
"amount": {
"amount": 120,
"currency": "USD"
},
"cardId": "d48fc57c92aa495aad2311438c545620"
},
"fxRate": 19.09,
"fee": 3.5,
"callbackUrl": "https://your-company.com/callbacks",
"quoteId": "d48fc57c92aa495aad2311438c545620",
"clientSessionData": "eyJpcEFkZHJlc3MiOiIzLjEzLjEyMC4xNzciLCJzZXNzaW9uSWQiOiI0ODdjZGE1Yi1mMjc4LTRlOWYtODcyMi0yMzc2YzE2ZGFjZTYifQ=="
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
referenceId | body | string | true | An internal reference ID for your own tracking purposes. |
senderId | body | Identifier(uuid) | true | Universally unique identifier of an API resource. |
receiverId | body | Identifier(uuid) | true | Universally unique identifier of an API resource. |
delivery | body | Delivery | true | The delivery object allows you to specify how you would like your transfer delivered. |
» amount | body | Money | true | none |
»» amount | body | number(double) | true | The amount of money. |
»» currency | body | string(iso-alpha-3) | true | The currency the money belongs to. |
» partnerId | body | string(uuid) | true | The unique identifier of the designated delivery partner. |
» accountId | body | string(uuid)\ | null | false |
» method | body | DeliveryMethod | false | The method with which to receive transfer funds. |
funding | body | Funding | true | The funding object allows you to specify the manner with which you'd like to fund a transfer. |
» amount | body | Money | true | none |
» cardId | body | string(uuid)\ | null | true |
fxRate | body | number(double) | true | The FX rate that the customer is being charged for the transfer. This is seen on the receipt and is a factor in the amount sent to the receiver. |
fee | body | number(double) | true | The fee that the customer is charged for the transfer. |
callbackUrl | body | string(uri) | false | The URL where Pangea should send callbacks related to this transfer. |
quoteId | body | string(uuid) | true | The ID of the quote applied to this transfer. |
clientSessionData | body | string | false | The session data initialized and obtained via the Pangea.js library |
Detailed descriptions
delivery: The delivery object allows you to specify how you would like your transfer delivered.
Direct deposit transfers also require the accountId field.
The amount is the value that is sent to the receiver either by direct deposit or available for cash-pickup.
funding: The funding object allows you to specify the manner with which you'd like to fund a transfer.
Currently we only support debit card funding.
The amount is the value in the source currency (USD) which we are sending to the reciever.
Enumerated Values
Parameter | Value |
---|---|
» method | cash-pickup |
» method | direct-deposit |
» method | mobile-wallet |
Example responses
200 Response
{
"id": "d48fc57c92aa495aad2311438c545620",
"referenceId": "AZ123809",
"senderId": "d48fc57c92aa495aad2311438c545620",
"receiverId": "d48fc57c92aa495aad2311438c545620",
"status": {
"code": "Created",
"timestamp": "2019-07-16T13:30:00"
},
"callbackHistory": [
{
"code": "Completed",
"timestamp": "2019-07-16T12:50:21.001Z"
},
{
"code": "Created",
"timestamp": "2019-07-16T12:46:33.001Z"
}
],
"delivery": {
"amount": {
"amount": 120,
"currency": "USD"
},
"partnerId": "d48fc57c92aa495aad2311438c545620",
"accountId": "d48fc57c92aa495aad2311438c545620",
"method": "direct-deposit"
},
"funding": {
"amount": {
"amount": 120,
"currency": "USD"
},
"cardId": "d48fc57c92aa495aad2311438c545620"
},
"fxRate": 19.09,
"fee": 3.5,
"callbackUrl": "https://your-company.com/callbacks",
"quotation": {
"id": "d48fc57c92aa495aad2311438c545620",
"fee": {
"amount": 120,
"currency": "USD"
},
"quotationFxRate": 17.75,
"fxCurrency": "MXN",
"requiredFxRate": 17.75
},
"deliveryReferenceCode": 18021234430,
"cancellationReason": "Funding_Issue_CardDeclined"
}
400 Response
[
{
"name": "delivery.money.currency",
"error": "Not a valid ISO 4217 currency code"
}
]
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Request was successful. | Transfer |
400 | Bad Request | The request was poorly formed. | Inline |
409 | Conflict | The request encountered a conflict. | Error |
Response Schema
Status Code 400
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | [InvalidField] | false | none | none |
» name | string | false | none | The name of the invalid field. |
» error | string | false | none | The problem with the field's input. |
Query a transfer
Code samples
GET https://api.pangeamoneytransfer.com/v1/transfers/{transferId} HTTP/1.1
Host: api.pangeamoneytransfer.com
Accept: application/json
# You can also use wget
curl -X GET https://api.pangeamoneytransfer.com/v1/transfers/{transferId} \
-H 'Accept: application/json' \
-H 'X-Pangea-Access-Key: API_KEY' \
-H 'X-Pangea-Secret-Key: API_KEY'
var headers = {
'Accept':'application/json',
'X-Pangea-Access-Key':'API_KEY',
'X-Pangea-Secret-Key':'API_KEY'
};
$.ajax({
url: 'https://api.pangeamoneytransfer.com/v1/transfers/{transferId}',
method: 'get',
headers: headers,
success: function(data) {
console.log(JSON.stringify(data));
}
})
import requests
headers = {
'Accept': 'application/json',
'X-Pangea-Access-Key': 'API_KEY',
'X-Pangea-Secret-Key': 'API_KEY'
}
r = requests.get('https://api.pangeamoneytransfer.com/v1/transfers/{transferId}', params={
}, headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-Pangea-Access-Key' => 'API_KEY',
'X-Pangea-Secret-Key' => 'API_KEY'
}
result = RestClient.get 'https://api.pangeamoneytransfer.com/v1/transfers/{transferId}',
params: {
}, headers: headers
p JSON.parse(result)
URL obj = new URL("https://api.pangeamoneytransfer.com/v1/transfers/{transferId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-Pangea-Access-Key": []string{"API_KEY"},
"X-Pangea-Secret-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.pangeamoneytransfer.com/v1/transfers/{transferId}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /transfers/{transferId}
Retrieve a transfer.
This endpoint allows you to retrieve the details for a transfer you've submitted.
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
transferId | path | string(uuid) | true | The unique identifier associated with the transfer you're searching for. This can be either the id or the referenceId you provided on transfer creation. |
Example responses
200 Response
{
"id": "d48fc57c92aa495aad2311438c545620",
"referenceId": "AZ123809",
"senderId": "d48fc57c92aa495aad2311438c545620",
"receiverId": "d48fc57c92aa495aad2311438c545620",
"status": {
"code": "Created",
"timestamp": "2019-07-16T13:30:00"
},
"callbackHistory": [
{
"code": "Completed",
"timestamp": "2019-07-16T12:50:21.001Z"
},
{
"code": "Created",
"timestamp": "2019-07-16T12:46:33.001Z"
}
],
"delivery": {
"amount": {
"amount": 120,
"currency": "USD"
},
"partnerId": "d48fc57c92aa495aad2311438c545620",
"accountId": "d48fc57c92aa495aad2311438c545620",
"method": "direct-deposit"
},
"funding": {
"amount": {
"amount": 120,
"currency": "USD"
},
"cardId": "d48fc57c92aa495aad2311438c545620"
},
"fxRate": 19.09,
"fee": 3.5,
"callbackUrl": "https://your-company.com/callbacks",
"quotation": {
"id": "d48fc57c92aa495aad2311438c545620",
"fee": {
"amount": 120,
"currency": "USD"
},
"quotationFxRate": 17.75,
"fxCurrency": "MXN",
"requiredFxRate": 17.75
},
"deliveryReferenceCode": 18021234430,
"cancellationReason": "Funding_Issue_CardDeclined"
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | The request was successful. | Transfer |
Get list of transfers by query parameters
Code samples
GET https://api.pangeamoneytransfer.com/v1/transfers/byFilters?startDate=2020-01-01&endDate=2020-01-31 HTTP/1.1
Host: api.pangeamoneytransfer.com
Accept: application/json
X-Pangea-Paging-Page: 1
X-Pangea-Paging-PageSize: 200
# You can also use wget
curl -X GET https://api.pangeamoneytransfer.com/v1/transfers/byFilters?startDate=2020-01-01&endDate=2020-01-31 \
-H 'Accept: application/json' \
-H 'X-Pangea-Paging-Page: 1' \
-H 'X-Pangea-Paging-PageSize: 200' \
-H 'X-Pangea-Access-Key: API_KEY' \
-H 'X-Pangea-Secret-Key: API_KEY'
var headers = {
'Accept':'application/json',
'X-Pangea-Paging-Page':'1',
'X-Pangea-Paging-PageSize':'200',
'X-Pangea-Access-Key':'API_KEY',
'X-Pangea-Secret-Key':'API_KEY'
};
$.ajax({
url: 'https://api.pangeamoneytransfer.com/v1/transfers/byFilters',
method: 'get',
data: '?startDate=2020-01-01&endDate=2020-01-31',
headers: headers,
success: function(data) {
console.log(JSON.stringify(data));
}
})
import requests
headers = {
'Accept': 'application/json',
'X-Pangea-Paging-Page': '1',
'X-Pangea-Paging-PageSize': '200',
'X-Pangea-Access-Key': 'API_KEY',
'X-Pangea-Secret-Key': 'API_KEY'
}
r = requests.get('https://api.pangeamoneytransfer.com/v1/transfers/byFilters', params={
'startDate': '2020-01-01', 'endDate': '2020-01-31'
}, headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-Pangea-Paging-Page' => '1',
'X-Pangea-Paging-PageSize' => '200',
'X-Pangea-Access-Key' => 'API_KEY',
'X-Pangea-Secret-Key' => 'API_KEY'
}
result = RestClient.get 'https://api.pangeamoneytransfer.com/v1/transfers/byFilters',
params: {
'startDate' => 'string(date)',
'endDate' => 'string(date)'
}, headers: headers
p JSON.parse(result)
URL obj = new URL("https://api.pangeamoneytransfer.com/v1/transfers/byFilters?startDate=2020-01-01&endDate=2020-01-31");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-Pangea-Paging-Page": []string{"1"},
"X-Pangea-Paging-PageSize": []string{"200"},
"X-Pangea-Access-Key": []string{"API_KEY"},
"X-Pangea-Secret-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.pangeamoneytransfer.com/v1/transfers/byFilters", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /transfers/byFilters
Get list of transfers by query parameters
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
startDate | query | string(date) | true | Starting date created in UTC to filter on (inclusive). |
endDate | query | string(date) | true | Ending date created in UTC to filter on (exclusive). |
deliveryMethod | query | DeliveryMethod | false | Optional delivery method to filter on. |
statusFilter | query | StatusFilter | false | Optional status to filter on. Note that these values are slightly different than the transfers status code enum. |
X-Pangea-Paging-Page | header | integer | false | The page you are requesting. Default is 1. |
X-Pangea-Paging-PageSize | header | integer | false | The size of the page you request. Default is 10. Max is 250. |
Enumerated Values
Parameter | Value |
---|---|
deliveryMethod | cash-pickup |
deliveryMethod | direct-deposit |
deliveryMethod | mobile-wallet |
statusFilter | Created |
statusFilter | FundedOrAvailable |
statusFilter | Completed |
statusFilter | CancelInProgress |
statusFilter | Cancelled |
statusFilter | Refunded |
Example responses
200 Response
[
{
"id": "d48fc57c92aa495aad2311438c545620",
"referenceId": "AZ123809",
"senderId": "d48fc57c92aa495aad2311438c545620",
"receiverId": "d48fc57c92aa495aad2311438c545620",
"status": {
"code": "Created",
"timestamp": "2019-07-16T13:30:00"
},
"callbackHistory": [
{
"code": "Completed",
"timestamp": "2019-07-16T12:50:21.001Z"
},
{
"code": "Created",
"timestamp": "2019-07-16T12:46:33.001Z"
}
],
"delivery": {
"amount": {
"amount": 120,
"currency": "USD"
},
"partnerId": "d48fc57c92aa495aad2311438c545620",
"accountId": "d48fc57c92aa495aad2311438c545620",
"method": "direct-deposit"
},
"funding": {
"amount": {
"amount": 120,
"currency": "USD"
},
"cardId": "d48fc57c92aa495aad2311438c545620"
},
"fxRate": 19.09,
"fee": 3.5,
"callbackUrl": "https://your-company.com/callbacks",
"quotation": {
"id": "d48fc57c92aa495aad2311438c545620",
"fee": {
"amount": 120,
"currency": "USD"
},
"quotationFxRate": 17.75,
"fxCurrency": "MXN",
"requiredFxRate": 17.75
},
"deliveryReferenceCode": 18021234430,
"cancellationReason": "Funding_Issue_CardDeclined"
}
]
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | The request was successful. | Inline |
Response Schema
Status Code 200
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | [Transfer] | false | none | none |
» id | Identifier(uuid) | true | read-only | Universally unique identifier of an API resource. |
» referenceId | ReferenceIdentifier | true | none | An internal reference identifier for your own tracking purposes. |
» senderId | Identifier(uuid) | true | read-only | Universally unique identifier of an API resource. |
» receiverId | Identifier(uuid) | true | read-only | Universally unique identifier of an API resource. |
» status | TransferStatus | true | none | none |
»» code | string | false | read-only | The status of the transfer. |
»» timestamp | string(datetime) | false | read-only | The timestamp of the transfer's status. |
» callbackHistory | [TransferStatus] | true | read-only | The history of callbacks sent. |
» delivery | Delivery | true | none | The delivery object allows you to specify how you would like your transfer delivered. Direct deposit transfers also require the accountId field. The amount is the value that is sent to the receiver either by direct deposit or available for cash-pickup. |
»» amount | Money | true | none | none |
»»» amount | number(double) | true | none | The amount of money. |
»»» currency | string(iso-alpha-3) | true | none | The currency the money belongs to. |
»» partnerId | string(uuid) | true | none | The unique identifier of the designated delivery partner. |
»» accountId | string(uuid)\ | null | false | none |
»» method | DeliveryMethod | false | none | The method with which to receive transfer funds. |
» funding | Funding | true | none | The funding object allows you to specify the manner with which you'd like to fund a transfer. Currently we only support debit card funding. The amount is the value in the source currency (USD) which we are sending to the reciever. |
»» amount | Money | true | none | none |
»» cardId | string(uuid)\ | null | true | none |
» fxRate | number(double) | true | none | The FX Rate you're providing for the transfer. |
» fee | number(double) | true | none | The fee you're charging for the transfer. |
» callbackUrl | string(uri) | false | none | The URL where Pangea should send callbacks related to this transfer. |
» quotation | Quote | false | none | The quotation given for a transfer. Includes the Fee and Fx rate that Pangea charge you. |
»» id | Identifier(uuid) | true | read-only | Universally unique identifier of an API resource. |
»» fee | Money | true | none | none |
»» quotationFxRate | number | true | none | none |
»» fxCurrency | string | true | none | none |
»» requiredFxRate | number | false | none | If provided, this must the fx rate used when calculating the transfer receiver amount. Includes Honduras and El Salvador. |
» deliveryReferenceCode | string | false | none | The code that a receiver needs to obtain the funds |
» cancellationReason | string | false | none | The reason the transfer was cancelled or refunded |
Enumerated Values
Property | Value |
---|---|
code | Created |
code | Funded |
code | Available |
code | Completed |
code | Cancelled |
code | CancelInProgress |
code | RefundInProgress |
code | Refunded |
code | Reversed |
method | cash-pickup |
method | direct-deposit |
method | mobile-wallet |
Response Headers
Status | Header | Type | Format | Description |
---|---|---|---|---|
200 | X-Pangea-Paging-Page | integer | The page returned. | |
200 | X-Pangea-Paging-PageSize | integer | The size of the page you request. | |
200 | X-Pangea-Paging-PageCount | integer | The count of pages that are available for the query. | |
200 | X-Pangea-Paging-TotalCount | integer | The total count of records for the query. |
Cancel a transfer
Code samples
POST https://api.pangeamoneytransfer.com/v1/transfers/{transferId}/cancel HTTP/1.1
Host: api.pangeamoneytransfer.com
Accept: application/json
# You can also use wget
curl -X POST https://api.pangeamoneytransfer.com/v1/transfers/{transferId}/cancel \
-H 'Accept: application/json' \
-H 'X-Pangea-Access-Key: API_KEY' \
-H 'X-Pangea-Secret-Key: API_KEY'
var headers = {
'Accept':'application/json',
'X-Pangea-Access-Key':'API_KEY',
'X-Pangea-Secret-Key':'API_KEY'
};
$.ajax({
url: 'https://api.pangeamoneytransfer.com/v1/transfers/{transferId}/cancel',
method: 'post',
headers: headers,
success: function(data) {
console.log(JSON.stringify(data));
}
})
import requests
headers = {
'Accept': 'application/json',
'X-Pangea-Access-Key': 'API_KEY',
'X-Pangea-Secret-Key': 'API_KEY'
}
r = requests.post('https://api.pangeamoneytransfer.com/v1/transfers/{transferId}/cancel', params={
}, headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-Pangea-Access-Key' => 'API_KEY',
'X-Pangea-Secret-Key' => 'API_KEY'
}
result = RestClient.post 'https://api.pangeamoneytransfer.com/v1/transfers/{transferId}/cancel',
params: {
}, headers: headers
p JSON.parse(result)
URL obj = new URL("https://api.pangeamoneytransfer.com/v1/transfers/{transferId}/cancel");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-Pangea-Access-Key": []string{"API_KEY"},
"X-Pangea-Secret-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api.pangeamoneytransfer.com/v1/transfers/{transferId}/cancel", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /transfers/{transferId}/cancel
Cancel a transfer.
Cancel a transfer which has not been completed. If the transfer has not yet been Funded, it'll become Cancelled and a callback will be sent. If the transfer has been funded, Pangea needs to wait for the delivery partner to confirm cancellation. Upon confirmation, pangea will refund the funding method and issue a Refunded
callback.
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
transferId | path | string(uuid) | true | The unique identifier associated with the transfer you're searching for. This can be either the id or the referenceId you provided on transfer creation. |
Example responses
200 Response
{
"id": "d48fc57c92aa495aad2311438c545620",
"referenceId": "AZ123809",
"senderId": "d48fc57c92aa495aad2311438c545620",
"receiverId": "d48fc57c92aa495aad2311438c545620",
"status": {
"code": "Created",
"timestamp": "2019-07-16T13:30:00"
},
"callbackHistory": [
{
"code": "Completed",
"timestamp": "2019-07-16T12:50:21.001Z"
},
{
"code": "Created",
"timestamp": "2019-07-16T12:46:33.001Z"
}
],
"delivery": {
"amount": {
"amount": 120,
"currency": "USD"
},
"partnerId": "d48fc57c92aa495aad2311438c545620",
"accountId": "d48fc57c92aa495aad2311438c545620",
"method": "direct-deposit"
},
"funding": {
"amount": {
"amount": 120,
"currency": "USD"
},
"cardId": "d48fc57c92aa495aad2311438c545620"
},
"fxRate": 19.09,
"fee": 3.5,
"callbackUrl": "https://your-company.com/callbacks",
"quotation": {
"id": "d48fc57c92aa495aad2311438c545620",
"fee": {
"amount": 120,
"currency": "USD"
},
"quotationFxRate": 17.75,
"fxCurrency": "MXN",
"requiredFxRate": 17.75
},
"deliveryReferenceCode": 18021234430,
"cancellationReason": "Funding_Issue_CardDeclined"
}
409 Response
{
"code": "700",
"message": "Unable to cancel due to current status"
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | The request was successful. | Transfer |
409 | Conflict | The request encountered a conflict. | Error |
Receipts
Resource that allows you to retrieve a compliant receipt for your customer.
Retrieve a receipt
Code samples
GET https://api.pangeamoneytransfer.com/v1/receipts/{transferId} HTTP/1.1
Host: api.pangeamoneytransfer.com
Accept: text/html
# You can also use wget
curl -X GET https://api.pangeamoneytransfer.com/v1/receipts/{transferId} \
-H 'Accept: text/html' \
-H 'X-Pangea-Access-Key: API_KEY' \
-H 'X-Pangea-Secret-Key: API_KEY'
var headers = {
'Accept':'text/html',
'X-Pangea-Access-Key':'API_KEY',
'X-Pangea-Secret-Key':'API_KEY'
};
$.ajax({
url: 'https://api.pangeamoneytransfer.com/v1/receipts/{transferId}',
method: 'get',
headers: headers,
success: function(data) {
console.log(JSON.stringify(data));
}
})
import requests
headers = {
'Accept': 'text/html',
'X-Pangea-Access-Key': 'API_KEY',
'X-Pangea-Secret-Key': 'API_KEY'
}
r = requests.get('https://api.pangeamoneytransfer.com/v1/receipts/{transferId}', params={
}, headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Accept' => 'text/html',
'X-Pangea-Access-Key' => 'API_KEY',
'X-Pangea-Secret-Key' => 'API_KEY'
}
result = RestClient.get 'https://api.pangeamoneytransfer.com/v1/receipts/{transferId}',
params: {
}, headers: headers
p JSON.parse(result)
URL obj = new URL("https://api.pangeamoneytransfer.com/v1/receipts/{transferId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"text/html"},
"X-Pangea-Access-Key": []string{"API_KEY"},
"X-Pangea-Secret-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.pangeamoneytransfer.com/v1/receipts/{transferId}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /receipts/{transferId}
Returns a full HTML Receipt.
This endpoint must be used to retrieve the receipt that will be shown to your customers. A receipt is available when a transfer is successfully created and the receipt does not subsequently change based on the transfer completion status. If an unsupported language is provided then an English receipt will be returned.
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
transferId | path | string(uuid) | true | The unique identifier associated with the transfer you're searching for. This can be either the id or the referenceId you provided on transfer creation. |
language | query | string | false | The language you want the response in. |
Example responses
200 Response
409 Response
[
{
"code": "200"
},
{
"message": "Invalid language"
}
]
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | The request was successful. | None |
409 | Conflict | The request encountered a conflict. | Error |
Response Schema
Validation
Validate sender fields
Code samples
POST https://api.pangeamoneytransfer.com/v1/validation/sender HTTP/1.1
Host: api.pangeamoneytransfer.com
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X POST https://api.pangeamoneytransfer.com/v1/validation/sender \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'X-Pangea-Access-Key: API_KEY' \
-H 'X-Pangea-Secret-Key: API_KEY'
var headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'X-Pangea-Access-Key':'API_KEY',
'X-Pangea-Secret-Key':'API_KEY'
};
$.ajax({
url: 'https://api.pangeamoneytransfer.com/v1/validation/sender',
method: 'post',
headers: headers,
success: function(data) {
console.log(JSON.stringify(data));
}
})
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'X-Pangea-Access-Key': 'API_KEY',
'X-Pangea-Secret-Key': 'API_KEY'
}
r = requests.post('https://api.pangeamoneytransfer.com/v1/validation/sender', params={
}, headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'X-Pangea-Access-Key' => 'API_KEY',
'X-Pangea-Secret-Key' => 'API_KEY'
}
result = RestClient.post 'https://api.pangeamoneytransfer.com/v1/validation/sender',
params: {
}, headers: headers
p JSON.parse(result)
URL obj = new URL("https://api.pangeamoneytransfer.com/v1/validation/sender");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"X-Pangea-Access-Key": []string{"API_KEY"},
"X-Pangea-Secret-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api.pangeamoneytransfer.com/v1/validation/sender", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /validation/sender
Validate sender fields prior to saving a sender.
Use this endpoint to validate any individual fields of a Sender. For example- this would be useful to also verify that a phone number is valid in our system prior to accepting it into your system.
Body parameter
{
"referenceId": "AZ123809",
"fullName": "Isabelle Kober",
"email": "isabelle.kober@example.com",
"phone": "15707512999",
"dateOfBirth": "1986-01-22",
"countryOfBirth": "USA",
"nationality": "USA",
"occupation": "Engineer",
"address": {
"address1": "2659 Simons Hollow Rd.",
"address2": "Unit 300",
"city": "New York",
"stateOrProvince": "NY",
"postalCode": "10001",
"country": "USA"
},
"idNumber": "string",
"idType": "PASSPORT"
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
referenceId | body | ReferenceIdentifier | false | An internal reference identifier for your own tracking purposes. |
fullName | body | string | false | Space-delimited string representing the senders's full, legal name. |
body | string(email) | false | The sender's email address. | |
phone | body | string(phone) | false | The sender's phone number with country code included (must be a mobile phone number). |
dateOfBirth | body | string(date) | false | The sender's birthday. |
countryOfBirth | body | string(iso-alpha-3) | false | The sender's country of birth. |
nationality | body | string(iso-alpha-3) | false | The sender's nationality. |
occupation | body | string | false | The sender's occupation. |
address | body | object | false | none |
» address1 | body | string | false | First line of the street address. |
» address2 | body | string | false | Second line of the street address. |
» city | body | string | false | City in which the address is located. |
» stateOrProvince | body | string | false | State or province in which the address is located. |
» postalCode | body | string | false | The postal code in which the address is located. |
» country | body | string(iso-alpha-3) | false | Country in which the address is located. |
idNumber | body | string | false | The sender's identification number |
idType | body | idType | false | none |
Enumerated Values
Parameter | Value |
---|---|
idType | PASSPORT |
idType | DRIVING_LICENSE |
idType | SOCIAL_SECURITY |
idType | TAX_ID |
idType | SENIOR_CITIZEN_ID |
idType | BIRTH_CERTIFICATE |
idType | VILLAGE_ELDER_ID |
idType | RESIDENT_CARD |
idType | ALIEN_REGISTRATION |
idType | PAN_CARD |
idType | VOTERS_ID |
idType | HEALTH_CARD |
idType | EMPLOYER_ID |
idType | OTHER |
Example responses
400 Response
[
{
"name": "countryOfBirth",
"error": "Must be a valid ISO Alpha-3 code."
},
{
"name": "dateOfBirth",
"error": "Cannot be empty."
}
]
409 Response
{
"code": "707",
"message": "Sender state is unlicensed"
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | All provided in fields were validated without error. | None |
400 | Bad Request | The request was poorly formed. | Inline |
409 | Conflict | The request encountered a conflict. | Error |
Response Schema
Status Code 400
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | [InvalidField] | false | none | none |
» name | string | false | none | The name of the invalid field. |
» error | string | false | none | The problem with the field's input. |
Schemas
Country
{
"id": "MEX",
"currency": "MXN",
"roundingAmountDigits": 2,
"methods": [
"cash-pickup",
"direct-deposit"
]
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
id | string(iso-alpha-3) | true | none | The country's ISO Alpha-3 code. |
currency | string(iso-alpha-3) | true | none | The currency the money belongs to. |
roundingAmountDigits | number | true | none | The count of decimals the delivery amount must be rounded to. |
methods | [DeliveryMethod] | true | none | The country's available delivery methods. |
StateConfiguration
{
"id": "USA-IL",
"deliveryRequirements": {
"deliveryAccountRequirements": [
"accountNumber"
],
"senderRequirements": [
"address1"
],
"recieverRequirements": [
"address1"
]
}
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
id | string(ISO 3166-2) | true | none | The state's ISO 3166-2 code. |
deliveryRequirements | DeliveryRequirements | false | none | none |
FundingCard
{
"id": "d48fc57c92aa495aad2311438c545620",
"senderId": "d48fc57c92aa495aad2311438c545620",
"nameOnCard": "Cristoball Nelson",
"brand": "Visa",
"lastFourDigits": 3107,
"expiration": "01-20",
"iin": 475056
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
id | Identifier | true | none | Universally unique identifier of an API resource. |
senderId | Identifier | true | none | Universally unique identifier of an API resource. |
nameOnCard | string | true | none | Space-delimited string representing the card-holder's name as it appears on the card. |
brand | string | true | none | The brand of the debit card. |
lastFourDigits | string | true | none | The last four digits of the debit card number. |
expiration | string(mm-yy) | true | none | The debit card's expiration date. |
iin | string | true | none | The debit card's Issuer Identification Number. |
Delivery
{
"amount": {
"amount": 120,
"currency": "USD"
},
"partnerId": "d48fc57c92aa495aad2311438c545620",
"accountId": "d48fc57c92aa495aad2311438c545620",
"method": "direct-deposit"
}
*The delivery object allows you to specify how you would like your transfer delivered.
Direct deposit transfers also require the accountId field.
The amount is the value that is sent to the receiver either by direct deposit or available for cash-pickup.*
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
amount | Money | true | none | none |
partnerId | string(uuid) | true | none | The unique identifier of the designated delivery partner. |
accountId | string(uuid)\ | null | false | none |
method | DeliveryMethod | false | none | The method with which to receive transfer funds. |
DeliveryAccount
{
"id": "d48fc57c92aa495aad2311438c545620",
"receiverId": "d48fc57c92aa495aad2311438c545620",
"partnerId": "d48fc57c92aa495aad2311438c545620",
"lastFourDigits": "3417",
"bankName": "Citi"
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
id | Identifier | true | none | Universally unique identifier of an API resource. |
receiverId | Identifier | true | none | Universally unique identifier of an API resource. |
partnerId | Identifier | true | none | Universally unique identifier of an API resource. |
lastFourDigits | string | true | none | The last four digits of the account number. |
bankName | string | false | none | The name of the bank that issued the account. |
DeliveryMethod
"direct-deposit"
The method with which to receive transfer funds.
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | none | The method with which to receive transfer funds. |
Enumerated Values
Property | Value |
---|---|
anonymous | cash-pickup |
anonymous | direct-deposit |
anonymous | mobile-wallet |
DeliveryPartner
{
"id": "d48fc57c92aa495aad2311438c545620",
"name": "Elektra",
"method": "cash-pickup",
"logoUrl": "https://api.pangeamoneytransfer.com/assets/elektra.png",
"country": "string",
"deliveryRequirements": {
"deliveryAccountRequirements": [
"accountNumber"
],
"senderRequirements": [
"address1"
],
"recieverRequirements": [
"address1"
]
}
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
id | Identifier | true | none | Universally unique identifier of an API resource. |
name | string | true | none | The name of the partner responsible for paying out the transfer. |
method | string | true | none | The delivery method this partner supports. |
logoUrl | string(uri) | false | none | A public image URL of the delivery partner's logo. |
country | string(iso-alpha-3) | true | none | The country in which the delivery partner operates. |
deliveryRequirements | DeliveryRequirements | false | none | none |
Enumerated Values
Property | Value |
---|---|
method | cash-pickup |
method | direct-deposit |
method | mobile-wallet |
DeliveryPartnerEntity
{
"id": 150336,
"name": "Zeway Branch",
"location": "Addis Ababa"
}
This is a related and required entity to a delivery account. This is usually a specific branch for a given bank (delivery partner)
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
id | string | true | none | Identifier of the entity. Use as input when adding a delivery account for the deliveryPartnerEntityId |
name | string | true | none | The name of the entity. Usually a branch name for the delivery partner bank. |
location | string | true | none | Addis Ababa |
DeliveryRequirements
{
"deliveryAccountRequirements": [
"accountNumber"
],
"senderRequirements": [
"address1"
],
"recieverRequirements": [
"address1"
]
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
deliveryAccountRequirements | [DeliveryAccountRequirements] | false | none | none |
senderRequirements | [PersonRequirements] | false | none | none |
recieverRequirements | [PersonRequirements] | false | none | none |
DeliveryAccountRequirements
"accountNumber"
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | none | none |
Enumerated Values
Property | Value |
---|---|
anonymous | accountNumber |
anonymous | iban |
anonymous | cbu |
anonymous | clabe |
anonymous | |
anonymous | msisdn |
anonymous | ifsc |
anonymous | branchNumber |
anonymous | swiftBic |
anonymous | accountType |
anonymous | deliveryPartnerEntityId |
PersonRequirements
"address1"
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | none | none |
Enumerated Values
Property | Value |
---|---|
anonymous | address1 |
anonymous | postalCode |
anonymous | phone |
anonymous | idNumber |
anonymous | idType |
anonymous | nationality |
anonymous | countryOfBirth |
anonymous | dateOfBirth |
anonymous | occupation |
Error
{
"code": "string",
"message": "string",
"additionalData": "string"
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
code | string | false | read-only | Immutable code assigned to this error |
message | string | true | read-only | The error message. |
additionalData | string | false | none | An additional piece of information such as the transfer Id in the case of a duplicate transfer error. |
Funding
{
"amount": {
"amount": 120,
"currency": "USD"
},
"cardId": "d48fc57c92aa495aad2311438c545620"
}
*The funding object allows you to specify the manner with which you'd like to fund a transfer.
Currently we only support debit card funding.
The amount is the value in the source currency (USD) which we are sending to the reciever.*
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
amount | Money | true | none | none |
cardId | string(uuid)\ | null | true | none |
Identifier
"d48fc57c92aa495aad2311438c545620"
Universally unique identifier of an API resource.
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string(uuid) | false | read-only | Universally unique identifier of an API resource. |
InvalidField
{
"name": "countryOfBirth",
"error": "Must be an ISO Alpha-3 code."
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
name | string | false | none | The name of the invalid field. |
error | string | false | none | The problem with the field's input. |
Money
{
"amount": 120,
"currency": "USD"
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
amount | number(double) | true | none | The amount of money. |
currency | string(iso-alpha-3) | true | none | The currency the money belongs to. |
Quote
{
"id": "d48fc57c92aa495aad2311438c545620",
"fee": {
"amount": 120,
"currency": "USD"
},
"quotationFxRate": 17.75,
"fxCurrency": "MXN",
"requiredFxRate": 17.75
}
The quotation given for a transfer. Includes the Fee and Fx rate that Pangea charge you.
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
id | Identifier | true | none | Universally unique identifier of an API resource. |
fee | Money | true | none | none |
quotationFxRate | number | true | none | none |
fxCurrency | string | true | none | none |
requiredFxRate | number | false | none | If provided, this must the fx rate used when calculating the transfer receiver amount. Includes Honduras and El Salvador. |
Receiver
{
"id": "d48fc57c92aa495aad2311438c545620",
"referenceId": "AZ123809",
"fullName": "Ambrosia Vasquez Gamboa",
"address": {
"address1": "2659 Simons Hollow Rd.",
"address2": "Unit 300",
"city": "Juárez",
"stateOrProvince": "CHH",
"stateOrProvinceType": "ISO31662",
"postalCode": "32250",
"country": "MEX",
"municipality": "Xochimilco"
},
"nationality": "MEX",
"phone": "543334445555",
"dateOfBirth": "1986-01-22",
"idNumber": "2322333444332d",
"idType": "PASSPORT"
}
A schema defining a person capable of receiving a transfer.
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
id | Identifier | true | none | Universally unique identifier of an API resource. |
referenceId | ReferenceIdentifier | false | none | An internal reference identifier for your own tracking purposes. |
fullName | string | true | none | Space-delimited string representing the receiver's full, legal name. |
address | ReceiverAddress | true | none | A schema defining a receiver's address. |
nationality | string(iso-alpha-3) | false | none | The receiver's nationality |
phone | string | false | none | The phone number |
dateOfBirth | string(date) | false | none | The receiver's birthday. Must be at least 18 years old. |
idNumber | string | false | none | The sender's identification number |
idType | idType | false | none | none |
ReceiverAddress
{
"address1": "2659 Simons Hollow Rd.",
"address2": "Unit 300",
"city": "Juárez",
"stateOrProvince": "CHH",
"stateOrProvinceType": "ISO31662",
"postalCode": "32250",
"country": "MEX",
"municipality": "Xochimilco"
}
A schema defining a receiver's address.
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
address1 | string | false | none | First line of the street address. |
address2 | string | false | none | Second line of the street address. |
city | string | true | none | City in which the address is located. |
stateOrProvince | string | true | none | State or province in which the address is located. |
stateOrProvinceType | stateOrProvinceType | false | none | This describes how Pangea will validate the address stateOrProvince. The default is ISO3162. If ISO31662, then stateOrProvince value is expected to be 'JAL' to designate Jalisco. If LongName, the value is expected to be 'Jalisco' for example. |
postalCode | string | false | none | The postal code in which the address is located. |
country | string(iso-alpha-3) | true | none | Country in which the address is located. |
municipality | string | false | none | Municipality of the city |
ReferenceIdentifier
"AZ123809"
An internal reference identifier for your own tracking purposes.
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | none | An internal reference identifier for your own tracking purposes. |
Sender
{
"id": "d48fc57c92aa495aad2311438c545620",
"referenceId": "AZ123809",
"fullName": "Isabelle Kober",
"email": "isabelle.kober@example.com",
"phone": "15707512999",
"dateOfBirth": "1986-01-22",
"countryOfBirth": "USA",
"nationality": "USA",
"occupation": "Engineer",
"address": {
"address1": "2659 Simons Hollow Rd.",
"address2": "Unit 300",
"city": "New York",
"stateOrProvince": "NY",
"postalCode": "10001",
"country": "USA"
},
"idNumber": "n-42423-3292",
"idType": "PASSPORT"
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
id | Identifier | true | none | Universally unique identifier of an API resource. |
referenceId | ReferenceIdentifier | false | none | An internal reference identifier for your own tracking purposes. |
fullName | string | true | none | Space-delimited string representing the senders's full, legal name. |
string(email) | false | none | The sender's email address. | |
phone | string(phone) | true | none | The sender's phone number with country code included (must be a mobile phone number). |
dateOfBirth | string(date) | true | none | The sender's birthday. Must be at least 18 years old. |
countryOfBirth | string(iso-alpha-3) | false | none | The sender's country of birth. |
nationality | string(iso-alpha-3) | false | none | The sender's nationality. |
occupation | string | false | none | The sender's occupation. |
address | SenderAddress | true | none | none |
idNumber | string | false | none | The sender's identification number |
idType | idType | false | none | none |
SenderAddress
{
"address1": "2659 Simons Hollow Rd.",
"address2": "Unit 300",
"city": "New York",
"stateOrProvince": "NY",
"postalCode": "10001",
"country": "USA"
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
address1 | string | true | none | First line of the street address. |
address2 | string | false | none | Second line of the street address. |
city | string | true | none | City in which the address is located. |
stateOrProvince | string | true | none | State or province in which the address is located. |
postalCode | string | true | none | The postal code in which the address is located. |
country | string(iso-alpha-3) | true | none | Country in which the address is located. |
Transfer
{
"id": "d48fc57c92aa495aad2311438c545620",
"referenceId": "AZ123809",
"senderId": "d48fc57c92aa495aad2311438c545620",
"receiverId": "d48fc57c92aa495aad2311438c545620",
"status": {
"code": "Created",
"timestamp": "2019-07-16T13:30:00"
},
"callbackHistory": [
{
"code": "Completed",
"timestamp": "2019-07-16T12:50:21.001Z"
},
{
"code": "Created",
"timestamp": "2019-07-16T12:46:33.001Z"
}
],
"delivery": {
"amount": {
"amount": 120,
"currency": "USD"
},
"partnerId": "d48fc57c92aa495aad2311438c545620",
"accountId": "d48fc57c92aa495aad2311438c545620",
"method": "direct-deposit"
},
"funding": {
"amount": {
"amount": 120,
"currency": "USD"
},
"cardId": "d48fc57c92aa495aad2311438c545620"
},
"fxRate": 19.09,
"fee": 3.5,
"callbackUrl": "https://your-company.com/callbacks",
"quotation": {
"id": "d48fc57c92aa495aad2311438c545620",
"fee": {
"amount": 120,
"currency": "USD"
},
"quotationFxRate": 17.75,
"fxCurrency": "MXN",
"requiredFxRate": 17.75
},
"deliveryReferenceCode": 18021234430,
"cancellationReason": "Funding_Issue_CardDeclined"
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
id | Identifier | true | none | Universally unique identifier of an API resource. |
referenceId | ReferenceIdentifier | true | none | An internal reference identifier for your own tracking purposes. |
senderId | Identifier | true | none | Universally unique identifier of an API resource. |
receiverId | Identifier | true | none | Universally unique identifier of an API resource. |
status | TransferStatus | true | none | none |
callbackHistory | [TransferStatus] | true | read-only | The history of callbacks sent. |
delivery | Delivery | true | none | The delivery object allows you to specify how you would like your transfer delivered. Direct deposit transfers also require the accountId field. The amount is the value that is sent to the receiver either by direct deposit or available for cash-pickup. |
funding | Funding | true | none | The funding object allows you to specify the manner with which you'd like to fund a transfer. Currently we only support debit card funding. The amount is the value in the source currency (USD) which we are sending to the reciever. |
fxRate | number(double) | true | none | The FX Rate you're providing for the transfer. |
fee | number(double) | true | none | The fee you're charging for the transfer. |
callbackUrl | string(uri) | false | none | The URL where Pangea should send callbacks related to this transfer. |
quotation | Quote | false | none | The quotation given for a transfer. Includes the Fee and Fx rate that Pangea charge you. |
deliveryReferenceCode | string | false | none | The code that a receiver needs to obtain the funds |
cancellationReason | string | false | none | The reason the transfer was cancelled or refunded |
idType
"PASSPORT"
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | none | none |
Enumerated Values
Property | Value |
---|---|
anonymous | PASSPORT |
anonymous | DRIVING_LICENSE |
anonymous | SOCIAL_SECURITY |
anonymous | TAX_ID |
anonymous | SENIOR_CITIZEN_ID |
anonymous | BIRTH_CERTIFICATE |
anonymous | VILLAGE_ELDER_ID |
anonymous | RESIDENT_CARD |
anonymous | ALIEN_REGISTRATION |
anonymous | PAN_CARD |
anonymous | VOTERS_ID |
anonymous | HEALTH_CARD |
anonymous | EMPLOYER_ID |
anonymous | OTHER |
stateOrProvinceType
"ISO31662"
This describes how Pangea will validate the address stateOrProvince. The default is ISO3162. If ISO31662, then stateOrProvince value is expected to be 'JAL' to designate Jalisco. If LongName, the value is expected to be 'Jalisco' for example.
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | none | This describes how Pangea will validate the address stateOrProvince. The default is ISO3162. If ISO31662, then stateOrProvince value is expected to be 'JAL' to designate Jalisco. If LongName, the value is expected to be 'Jalisco' for example. |
Enumerated Values
Property | Value |
---|---|
anonymous | ISO31662 |
anonymous | LongName |
TransferStatus
{
"code": "Created",
"timestamp": "2019-07-16T13:30:00"
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
code | string | false | read-only | The status of the transfer. |
timestamp | string(datetime) | false | read-only | The timestamp of the transfer's status. |
Enumerated Values
Property | Value |
---|---|
code | Created |
code | Funded |
code | Available |
code | Completed |
code | Cancelled |
code | CancelInProgress |
code | RefundInProgress |
code | Refunded |
code | Reversed |
StatusFilter
"Completed"
A status enum that you can filter transfers on.
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | none | A status enum that you can filter transfers on. |
Enumerated Values
Property | Value |
---|---|
anonymous | Created |
anonymous | FundedOrAvailable |
anonymous | Completed |
anonymous | CancelInProgress |
anonymous | Cancelled |
anonymous | Refunded |
TransferStatusCallback
{
"transferId": "d48fc57c92aa495aad2311438c545620",
"referenceId": "d48fc57c92aa495aad2311438c545620",
"status": {
"code": "Created",
"timestamp": "2019-07-16T13:30:00"
},
"deliveryReferenceCode": "string",
"canceallationReason": "string"
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
transferId | Identifier | false | none | Universally unique identifier of an API resource. |
referenceId | Identifier | false | none | Universally unique identifier of an API resource. |
status | TransferStatus | false | none | none |
deliveryReferenceCode | string | false | none | The code a receiver uses to pick up the funds. |
canceallationReason | string | false | none | The reason the transfer was cancelled or refunded. |