Introduction
Welcome to the Transfer API reference.
This API serves as the primary gateway to facilitate money transfers’ platform.
The Transfer API is organized according to REST principles and provides the following functionalities:
- Process and retrieve transaction detail
- Account management services
- Discovery services
Environments
This API is available in 2 environments: production and pre-production, reachable via IPSec VPN or HTTPS.
Specific details relating to the endpoints will be provided upon account creation.
Authentication
Access to all endpoints of the API requires authentication using your account's API Key, through HTTP Basic Auth. We will give you the API Key once you register for an account with us during the onboarding process, or you can get it from your Transfez Dashboard in Developer Tools.
Your API key is the authorization key to our service, please do keep it securely. To keep it safe, avoid storing the API key directly in your code without encryption. Putting the key in your environment variables or using an API secret management service is among the safest ways to store it.
To access our API, you will need to attach the API Key to the HEADER of every request made to the Transfez API service.
Header Parameters
Field | Required | Type | Description |
---|---|---|---|
Content-Type |
YES | String | Indicates the format of sent data. Please use application/json as the value of this field |
Authorization |
YES | String | Your API key |
Connectivity
GET /ping HTTP/1.1
200 OK{
"status": "up"
}
Query API status.
Output
Field | Type | Description |
---|---|---|
status
|
String | API status |
Expected value of status
should be "up".
Account
My Account
Retrieve the details information of your account.
// Response Example
{
"status": 200,
"user": {
"id": 7,
"email": "[email protected]",
"created_at": "2020-07-30T13:22:28.476+07:00",
"updated_at": "2021-05-28T12:19:54.789+07:00",
"partner_id": 6,
"is_api_user": true,
"my_roles": [
"partner",
"partner_developer"
],
"balances": [
{
"id": 1,
"currency": "IDR",
"balance": 7372300,
"is_active": true,
"user_id": 2,
"created_at": "2020-05-04T21:33:11.232+07:00",
"updated_at": "2024-07-19T17:32:01.219+07:00",
"partner_id": 1,
"name": "MAIN_WALLET",
"avail_balance": 7372300
}
,
{
"id": 2185,
"currency": "IDR",
"balance": 1564901961,
"is_active": true,
"user_id": 2,
"created_at": "2020-05-04T21:33:11.232+07:00",
"updated_at": "2024-07-03T14:10:52.578+07:00",
"partner_id": 1,
"name": "FACILITATOR_WALLET",
"avail_balance": 1564901961
}
],
"partner": {
"id": 6,
"name": "Company Name",
"address": "Tebet",
"phone": "+628123123123",
"email_pic": "[email protected]",
"api_user_id": 7,
"created_at": "2020-07-30T13:22:28.477+07:00",
"updated_at": "2021-12-21T17:05:06.270+07:00
}
}
}
Response Parameter
Field | Type | Description |
---|---|---|
status |
Integer | API status |
user |
Object | |
user[id] |
Integer | User account ID |
user[email] |
String | User account email |
user[created_at] |
Timestamp | Creation date in HTTP format |
user[updated_at] |
Timestamp | Last updated date in HTTP format |
user[partner_id] |
Integer | Your company index number |
user[is_api_user] |
Boolean | When the value is true, it's the partner's main API user |
user[my_roles] |
Array | List of roles assigned to the user |
user[balances] |
Object | Refer to Balance object |
user[partner] |
Object | Refer to Partner object |
My Balance
Retrieve information for your account balance.
// Response Example
{
"status": 200,
"data": {
"total": 2,
"balances": [
{
"id": 1,
"currency": "IDR",
"balance": 7372300,
"is_active": true,
"user_id": 2,
"created_at": "2020-05-04T21:33:11.232+07:00",
"updated_at": "2024-07-19T17:32:01.219+07:00",
"partner_id": 1,
"name": "MAIN_WALLET",
"avail_balance": 7372300
},
{
"id": 2185,
"currency": "IDR",
"balance": 1564901961,
"is_active": true,
"user_id": 2,
"created_at": "2020-05-04T21:33:11.232+07:00",
"updated_at": "2024-07-03T14:10:52.578+07:00",
"partner_id": 1,
"name": "FACILITATOR_WALLET",
"avail_balance": 1564901961
}
]
},
"message": "Succesfully get my balances"
}
Response Parameter
Field | Type | Description |
---|---|---|
status |
Integer | API Status |
data |
Object | Response object |
[data][total] |
Integer | Total queried data |
[data][balances] |
Object | Refer to Balance object |
message |
String | Additional information of the response |
Local Transfer
As of now, basically the local transfer API and international transfer API shared some services such as get transaction
, create transaction
and confirm transaction
.
For local transfer, payer
will refer to the destination bank whilst for international transfer, payer
will refer to the destination country.
Get All Transaction
//Request Example
{
"page": 1,
"per_page": 10
}
Request Parameter
Field | Required | Type | Description |
---|---|---|---|
page |
No | Integer | Page number |
per_page |
No | Integer | Number of results per page (default 10, max 30) |
q[from] |
No | Text | Filter start date of the range |
q[to] |
No | Text | Filter end date of the range |
{
"status": 200,
"page": 1,
"per_page": 10,
"total_page": 235,
"data": {
"id": 6248,
"reference_id": "LOCAL-TRX-REFERENCE-001",
"callback_url": "https://your.business.com/webhook/endpoint",
"payer_id": 4,
"mode": "DESTINATION",
"sender": {
"firstname": "John Doe",
"country_iso_code": "IDN"
},
"source": {
"currency": "IDR",
"country_iso_code": "IDN"
},
"destination": {
"amount": "20000.0",
"currency": "IDR",
"country_iso_code": "IDN"
},
"beneficiary": {
"firstname": "BRI Simulator A",
"country_iso_code": "IDN",
"account": "111112222233333",
"bank": "BRI"
},
"compliance": {},
"created_at": "2022-06-30T11:19:01.729+07:00",
"updated_at": "2022-06-30T11:21:08.318+07:00",
"user_id": 7,
"state": "confirmed",
"amount": 20000,
"paid_at": "2022-06-30T11:19:04.000+07:00",
"rate": "1.0",
"fee": "2500.0",
"partner_id": 6,
"completion_date": null,
"sent_amount": "20000.0",
"state_id": 2,
"error_code": 9,
"error_message": "Your error message",
"notes": "",
"transaction_type": "C2C",
"user_email": "[email protected]",
"payer_name": "PT. BANK RAKYAT INDONESIA (PERSERO)"
}
}
Response Parameter
Field | Type | Description |
---|---|---|
page |
Integer | Page number |
per_page |
Integer | Number of results per page (default 10, max 30) |
total_page |
Integer | Total page fetched from the server |
|
Integer | API Status |
data |
Object | |
id |
Integer | Transaction ID |
reference_id |
String | Identifier of the transaction in your system (must be unique) |
callback_url |
String | Your callback URL. Refer to here |
payer_id |
Integer | Index number of the payer |
mode |
String | Mode of quotation, enumerations of DESTINATION or SOURCE |
sender |
Object | Refer to sender object |
source |
Object | Content of the object is related to the source currency and source country iso code |
destination |
Object | Content of the object is related to the destination currency, destination amount, and destination country iso code |
beneficiary |
Object | Refer to beneficiary object |
compliance |
Object | |
beneficiary_relationship |
String | Refer to beneficiary relationship list |
source_of_funds |
String | Refer to source of funds list |
purpose_of_remittance |
String | Refer to Purpose of remittance list |
created_at |
Timestamp | Creation date in HTTP format |
updated_at |
Timestamp | Last updated date in HTTP format |
user_id |
Integer | Index number of the user |
state |
String | Status class of the transaction. Refer to transaction states |
amount |
Decimal | Destination amount |
paid_at |
Timestamp | Time when the transaction payment has been confirmed. Will only shown after the state of transaction changed to confirmed or submitted |
rate |
Decimal | Rate of transaction (destination /source ) |
fee |
Decimal | Fee of transaction in IDR |
partner_id |
Integer | Your company index number |
completion_date |
Timestamp | Time when the transaction has been completed. Will only shown after the state of transaction changed to completed |
sent_amount |
Decimal | Source amount |
state_id |
Integer | Transaction status. Refer to transaction states |
error_code |
String | API Error Code. Refer to here |
error_message |
String | API Error message. Refer to here |
notes |
String | Notes of the transaction (max. 90 characters) |
transaction_type |
String | Refer to transaction type |
payment_channel |
String | Fee for the transaction in IDR. Can contains local , sha , our |
user_email |
String | E-mail of the user |
payer_name |
String | Name of the payer |
Get Transaction
Path parameter | Description |
---|---|
:transaction_id |
Index number of the transaction |
{
"status": 200,
"data": {
"id": 6248,
"reference_id": "LOCAL-TRX-REFERENCE-001",
"callback_url": "https://your.business.com/webhook/endpoint",
"payer_id": 4,
"mode": "DESTINATION",
"sender": {
"firstname": "John Doe",
"country_iso_code": "IDN"
},
"source": {
"currency": "IDR",
"country_iso_code": "IDN"
},
"destination": {
"amount": "20000.0",
"currency": "IDR",
"country_iso_code": "IDN"
},
"beneficiary": {
"firstname": "BRI Simulator A",
"country_iso_code": "IDN",
"account": "111112222233333",
"bank": "BRI"
},
"compliance": {},
"created_at": "2022-06-30T11:19:01.729+07:00",
"updated_at": "2022-06-30T11:21:08.318+07:00",
"user_id": 7,
"state": "confirmed",
"amount": 20000,
"paid_at": "2022-06-30T11:19:04.000+07:00",
"rate": "1.0",
"fee": "2500.0",
"partner_id": 6,
"completion_date": null,
"sent_amount": "20000.0",
"state_id": 2,
"error_code": 9,
"error_message": "Your error message",
"notes": "",
"transaction_type": "C2C",
"user_email": "[email protected]",
"payer_name": "PT. BANK RAKYAT INDONESIA (PERSERO)"
}
}
Response Parameter
Field | Type | Description |
---|---|---|
|
Integer | API Status |
data |
Object | |
id |
Integer | Transaction ID |
reference_id |
String | Identifier of the transaction in your system (must be unique) |
callback_url |
String | Your callback URL. Refer to here |
payer_id |
Integer | Index number of the payer |
mode |
String | Mode of quotation, enumerations of DESTINATION or SOURCE |
sender |
Object | Refer to sender object |
source |
Object | Content of the object is related to the source currency and source country iso code |
destination |
Object | Content of the object is related to the destination currency, destination amount, and destination country iso code |
beneficiary |
Object | Refer to beneficiary object |
compliance |
Object | |
beneficiary_relationship |
String | Refer to beneficiary relationship list |
source_of_funds |
String | Refer to source of funds list |
purpose_of_remittance |
String | Refer to Purpose of remittance list |
created_at |
Timestamp | Creation date in HTTP format |
updated_at |
Timestamp | Last updated date in HTTP format |
user_id |
Integer | Index number of the user |
state |
String | Status class of the transaction. Refer to transaction states |
amount |
Decimal | Destination amount |
paid_at |
Timestamp | Time when the transaction payment has been confirmed. Will only shown after the state of transaction changed to confirmed or submitted |
rate |
Decimal | Rate of transaction (destination /source ) |
fee |
Decimal | Fee of transaction in IDR |
partner_id |
Integer | Your company index number |
completion_date |
Timestamp | Time when the transaction has been completed. Will only shown after the state of transaction changed to completed |
sent_amount |
Decimal | Source amount |
state_id |
Integer | Transaction status. Refer to transaction states |
error_code |
String | API Error Code. Refer to here |
error_message |
String | API Error message. Refer to here |
notes |
String | Notes of the transaction (max. 90 characters) |
transaction_type |
String | Refer to transaction type |
payment_channel |
String | Fee for the transaction in IDR. Can contains local , sha , our |
user_email |
String | E-mail of the user |
payer_name |
String | Name of the payer |
Get Transaction by Reference ID
Path parameter | Description |
---|---|
:reference_id |
Reference id of the transaction |
{
"status": 200,
"data": {
"id": 28951,
"reference_id": "t686417594_23",
"callback_url": "https://callback_url",
"payer_id": 5,
"mode": "DESTINATION",
"sender": {
"firstname": "PT",
"lastname": "Hogwarts Inc",
"country_iso_code": "IDN"
},
"source": {
"currency": "IDR",
"country_iso_code": "IDN"
},
"destination": {
"amount": "38000",
"currency": "IDR",
"country_iso_code": "IDN"
},
"beneficiary": {
"firstname": "Harry",
"lastname": "Potter",
"country_iso_code": "IDN",
"account": "222233334444"
},
"compliance": {
"source_of_funds": "OTHER",
"beneficiary_relationship": "CUSTOMER",
"purpose_of_remittance": "PERSONAL_TRANSFER"
},
"created_at": "2023-05-26T15:56:52.390+07:00",
"updated_at": "2023-05-26T15:56:52.824+07:00",
"user_id": 7,
"state": "created",
"amount": 38000,
"paid_at": null,
"rate": "1.0",
"fee": "2500.0",
"partner_id": 6,
"completion_date": null,
"sent_amount": "38000.0",
"state_id": null,
"error_code": null,
"error_message": null,
"notes": null,
"transaction_type": "C2C",
"balance_id": 7,
"payment_channel": null,
"is_regenerated": false,
"receipt_url": null
}
}
Response Parameter
Field | Type | Description |
---|---|---|
|
Integer | API Status |
data |
Object | |
id |
Integer | Transaction ID |
reference_id |
String | Identifier of the transaction in your system (must be unique) |
callback_url |
String | Your callback URL. Refer to here |
payer_id |
Integer | Index number of the payer |
mode |
String | Mode of quotation, enumerations of DESTINATION or SOURCE |
sender |
Object | Refer to sender object |
source |
Object | Content of the object is related to the source currency and source country iso code |
destination |
Object | Content of the object is related to the destination currency, destination amount, and destination country iso code |
beneficiary |
Object | Refer to beneficiary object |
compliance |
Object | |
beneficiary_relationship |
String | Refer to beneficiary relationship list |
source_of_funds |
String | Refer to source of funds list |
purpose_of_remittance |
String | Refer to Purpose of remittance list |
created_at |
Timestamp | Creation date in HTTP format |
updated_at |
Timestamp | Last updated date in HTTP format |
user_id |
Integer | Index number of the user |
state |
String | Status class of the transaction. Refer to transaction states |
amount |
Decimal | Destination amount |
paid_at |
Timestamp | Time when the transaction payment has been confirmed. Will only shown after the state of transaction changed to confirmed or submitted |
rate |
Decimal | Rate of transaction (destination /source ) |
fee |
Decimal | Fee of transaction in IDR |
partner_id |
Integer | Your company index number |
completion_date |
Timestamp | Time when the transaction has been completed. Will only shown after the state of transaction changed to completed |
sent_amount |
Decimal | Source amount |
state_id |
Integer | Transaction status. Refer to transaction states |
error_code |
String | API Error Code. Refer to here |
error_message |
String | API Error message. Refer to here |
notes |
String | Notes of the transaction (max. 90 characters) |
transaction_type |
String | Refer to transaction type |
payment_channel |
String | Fee for the transaction in IDR. Can contains local , sha , our |
user_email |
String | E-mail of the user |
payer_name |
String | Name of the payer |
Create Transaction
To create a transaction there are some points needed to be taken. It is essential to consider specific prerequisites, you may refer to the section on potential errors in the transaction creation process by clicking here. Every destination country should have different requirement than the others based on:
- Sender form
- Beneficiary form
You can find the required field for each destination country here
{
"reference_id": "LOCAL-TRX-REFERENCE-001",
"callback_url": "https://your.business.com/webhook/endpoint",
"payer_id": 4,
"mode": "DESTINATION",
"sender": {
"firstname": "John",
"lastname": "Doe",
"country_iso_code": "IDN"
},
"source": {
"currency": "IDR",
"country_iso_code": "IDN"
},
"destination": {
"amount": "20000",
"currency": "IDR",
"country_iso_code": "IDN"
},
"beneficiary": {
"firstname": "BRI",
"lastname": "Simulator A",
"country_iso_code": "IDN",
"account": "111112222233333"
},
"compliance": {
"source_of_funds": "CASH",
"beneficiary_relationship": "SIBLING_BROTHER_SISTER",
"purpose_of_remittance": "BUSINESS"
},
"notes": "Allowance for January"
}
Request Parameter
Field | Required | Type | Description |
---|---|---|---|
reference_id |
YES | String | Identifier of the transaction in your system (must be unique) |
callback_url |
NO | String | Your callback URL. Refer to here |
payer_id |
YES | String | Index number of destination bank |
mode |
YES | String | Choose between DESTINATION or SOURCE . Affects where the amount field is required |
sender |
YES | Object | Content of the object is depending on the payers required attribute |
source |
YES | Object | |
source[amount] |
NO | Decimal | Required if the mode is SOURCE |
source[currency] |
YES | String | Source currency ISO code. Using the standard of ISO 4217 |
source[country_iso_code] |
YES | String | Source country ISO-3 code. Using the standard of ISO 3116 country code |
destination |
YES | Object | |
destination[amount] |
NO | Decimal | Required if the mode is DESTINATION |
destination[currency] |
YES | String | Destination currency ISO code. Using the standard of ISO 4217 |
destination[country_iso_code] |
YES | String | Source country ISO-3 code. Using the standard of ISO 3116 country code |
beneficiary |
YES | Object | Content of the object is depending on the payers required attribute |
compliance |
NO | Object | Content of the object is depending on the payers required attribute |
compliance[source_of_funds] |
NO | String | Refer to source of funds list |
compliance[beneficiary_relationship] |
NO | String | Refer to beneficiary relationships list |
compliance[purpose_of_remittance] |
YES | String | Refer to purpose of remittance list |
{
"reference_id": "LOCAL-TRX-REFERENCE-001",
"callback_url": "https://your.business.com/webhook/endpoint",
"payer_id": 4,
"balance_id": 2185,
"mode": "DESTINATION",
"sender": {
"firstname": "John",
"lastname": "Doe",
"country_iso_code": "IDN"
},
"source": {
"currency": "IDR",
"country_iso_code": "IDN",
"transfer_service_code": 1
},
"destination": {
"amount": "20000",
"currency": "IDR",
"country_iso_code": "IDN"
},
"beneficiary": {
"firstname": "BRI",
"lastname": "Simulator A",
"country_iso_code": "IDN",
"account": "111112222233333"
},
"compliance": {
"source_of_funds": "CASH",
"beneficiary_relationship": "SIBLING_BROTHER_SISTER",
"purpose_of_remittance": "FAMILY_SUPPORT"
},
"notes": "Allowance for January"
}
Additional Request Parameter for Facilitator Bank
Field | Required | Type | Description |
---|---|---|---|
balance_id |
NO | Integer | A unique identifier that corresponds to a particular balance record within the account. Default: MAIN_WALLET |
MAIN_WALLET: A deposit-based fund source for disbursement. You can add money to this wallet by topping up through the available Virtual Account. | |||
FACILITATOR_BANK: A fund source for disbursement that is connected to your bank account, integrated with JACK’s system. | |||
source[transfer_service_code] |
NO | Integer | The type of transfer service for a transaction. Default: 1 |
The transfer_service_code must be an integer and can only take one of the following values: | |||
1. BI-FAST : A real-time payment service that enables quick and seamless domestic fund transfers at a lower cost, making it ideal for time-sensitive and cost-efficient transactions. | |||
2. SKN : A national clearing system used for batch processing of domestic payments, with transfers typically completed within a few hours or by the end of the business day. | |||
3. RTGS : A system for high-value transactions, providing immediate, secure transfers processed individually in real-time. | |||
4. Smart Route : An automated solution that optimally selects between BI-Fast and non-BI Fast routes (via Jack Route), ensuring the fastest and most cost-effective transfer method without manual intervention. |
{
"status": 200,
"data": {
"id": 28855,
"reference_id": "LOCAL-TRX-REFERENCE-001",
"callback_url": "https://your.business.com/webhook/endpoint",
"payer_id": 4,
"mode": "DESTINATION",
"sender": {
"firstname": "John",
"lastname": "Doe",
"country_iso_code": "IDN"
},
"source": {
"currency": "IDR",
"country_iso_code": "IDN",
"transfer_service_code": 1
},
"destination": {
"amount": "20000",
"currency": "IDR",
"country_iso_code": "IDN"
},
"beneficiary": {
"firstname": "BRI",
"lastname": "Simulator A",
"country_iso_code": "IDN",
"account": "111112222233333"
},
"compliance": {
"source_of_funds": "CASH",
"beneficiary_relationship": "SIBLING_BROTHER_SISTER",
"purpose_of_remittance": "FAMILY_SUPPORT"
},
"created_at": "2023-03-03T16:10:49.812+07:00",
"updated_at": "2023-03-03T16:10:49.936+07:00",
"user_id": 7,
"state": "created",
"amount": 20000,
"paid_at": null,
"rate": "1.0",
"fee": "3000.0",
"partner_id": 6,
"completion_date": null,
"sent_amount": "20000.0",
"state_id": null,
"error_code": null,
"error_message": null,
"notes": "Allowance for January",
"transaction_type": "C2C",
"balance_id": 7,
"payment_channel": null,
"is_regenerated": false,
"receipt_url": null
}
}
Response Parameter
Field | Type | Description |
---|---|---|
|
Integer | API Status |
data |
Object | |
id |
Integer | Transaction ID |
reference_id |
String | Identifier of the transaction in your system (must be unique) |
callback_url |
String | Your callback URL. Refer to here |
payer_id |
Integer | Index number of the payer |
mode |
String | Mode of quotation, enumerations of DESTINATION or SOURCE |
sender |
Object | Refer to sender object |
source |
Object | Content of the object is related to the source currency and source country iso code |
destination |
Object | Content of the object is related to the destination currency, destination amount, and destination country iso code |
beneficiary |
Object | Refer to beneficiary object |
compliance |
Object | |
beneficiary_relationship |
String | Refer to beneficiary relationship list |
source_of_funds |
String | Refer to source of funds list |
purpose_of_remittance |
String | Refer to Purpose of remittance list |
created_at |
Timestamp | Creation date in HTTP format |
updated_at |
Timestamp | Last updated date in HTTP format |
user_id |
Integer | Index number of the user |
state |
String | Status class of the transaction. Refer to transaction states |
amount |
Decimal | Destination amount |
paid_at |
Timestamp | Time when the transaction payment has been confirmed. Will only shown after the state of transaction changed to confirmed or submitted |
rate |
Decimal | Rate of transaction (destination /source ) |
fee |
Decimal | Fee of transaction in IDR |
partner_id |
Integer | Your company index number |
completion_date |
Timestamp | Time when the transaction has been completed. Will only shown after the state of transaction changed to completed |
sent_amount |
Decimal | Source amount |
state_id |
Integer | Transaction status. Refer to transaction states |
error_code |
String | API Error Code. Refer to here |
error_message |
String | API Error message. Refer to here |
notes |
String | Notes of the transaction (max. 90 characters) |
transaction_type |
String | Refer to transaction type |
payment_channel |
String | Fee for the transaction in IDR. Can contains local , sha , our |
user_email |
String | E-mail of the user |
payer_name |
String | Name of the payer |
Confirm Transaction
After a transaction is created, you will need to confirm the transaction to process it. It is essential to consider specific prerequisites, you may refer to the section on potential errors in the transaction confirmation process by clicking here.
The state of transaction should be confirmed
after you hit this endpoint.
Path parameter | Description |
---|---|
:transaction_id |
Index number of the transaction |
{
"status": 200,
"data": {
"id": 6248,
"reference_id": "LOCAL-TRX-REFERENCE-001",
"callback_url": "https://your.business.com/webhook/endpoint",
"payer_id": 4,
"mode": "DESTINATION",
"sender": {
"firstname": "John Doe",
"country_iso_code": "IDN"
},
"source": {
"currency": "IDR",
"country_iso_code": "IDN"
},
"destination": {
"amount": "20000.0",
"currency": "IDR",
"country_iso_code": "IDN"
},
"beneficiary": {
"firstname": "BRI Simulator A",
"country_iso_code": "IDN",
"account": "111112222233333",
"bank": "BRI"
},
"compliance": {},
"created_at": "2022-06-30T11:19:01.729+07:00",
"updated_at": "2022-06-30T11:21:08.318+07:00",
"user_id": 7,
"state": "confirmed",
"amount": 20000,
"paid_at": "2022-06-30T11:19:04.000+07:00",
"rate": "1.0",
"fee": "2500.0",
"partner_id": 6,
"completion_date": null,
"sent_amount": "20000.0",
"state_id": 2,
"error_code": 9,
"error_message": "Your error message",
"notes": "",
"transaction_type": "C2C"
}
}
Cancel Transaction
After a transaction is created, you can cancel a transaction before confirming it.
The state of transaction should be canceled
after you hit this endpoint.
Path parameter | Description |
---|---|
:transaction_id |
Index number of the transaction |
// Response example
{
"status": 200,
"data": {
"user_id": 7,
"state": "canceled",
"id": 28854,
"payer_id": 5,
"reference_id": "LOCAL-TRX-REFERENCE-0011",
"notes": null,
"callback_url": "https://your.business.com/webhook/endpoint",
"mode": "DESTINATION",
"sender": {
"firstname": "PT",
"lastname": "Hogwarts Souvenirs",
"country_iso_code": "IDN"
},
"source": {
"currency": "IDR",
"country_iso_code": "IDN"
},
"destination": {
"amount": "38000",
"currency": "IDR",
"country_iso_code": "IDN"
},
"beneficiary": {
"firstname": "CIMB",
"lastname": "Simulator",
"country_iso_code": "IDN",
"account": "222233334444"
},
"compliance": {
"source_of_funds": "OTHER",
"beneficiary_relationship": "CUSTOMER",
"purpose_of_remittance": "PERSONAL_TRANSFER"
},
"created_at": "2023-03-03T16:10:14.730+07:00",
"updated_at": "2023-03-03T16:10:30.109+07:00",
"amount": 38000,
"paid_at": null,
"rate": "1.0",
"fee": "3000.0",
"partner_id": 6,
"completion_date": null,
"sent_amount": "38000.0",
"state_id": 4,
"error_code": null,
"error_message": null,
"transaction_type": "C2C",
"balance_id": 7,
"payment_channel": null,
"is_regenerated": false,
"receipt_url": null
}
}
Get Supported Local Banks
Retrieve information for all payers available for a given account, optionally filtered based on specified parameters. You can also find the specific Bank by ID while adding a :payer_id
parameter such as /payers/:payer_id
// Request Example
{
"page": 1,
"per_page": 10000
}
Request Parameter
Field | Required | Type | Description |
---|---|---|---|
page |
No | Integer | Page number |
per_page |
No | Integer | Number of results per page (ensure to max it out to get the whole list of banks) |
Path parameter | Description |
---|---|
:payer_id |
Index number of the local bank |
//Response Example
{
"status": 200,
"page": 1,
"per_page": 10000,
"total_page": 1,
"data": [
{
"id": 154,
"name": "bsi",
"full_name": "PT. BANK SYARIAH INDONESIA, TBK.",
"precision": "2",
"country_iso_code": "IDN",
"currency": "IDR",
"minimum_amount": 10000.0,
"maximum_amount": 50000000.0,
"alias": "Bank Syariah Indonesia",
"required_sender_fields": [
"firstname",
"lastname",
"nationality",
"date_of_birth",
"country_of_birth",
"gender",
"address",
"zipcode",
"city",
"country_iso_code",
"country_iso",
"email",
"id_type",
"id_country_iso_code",
"id_number"
],
"required_beneficiary_fields": [
"firstname",
"lastname",
"nationality",
"date_of_birth",
"country_of_birth",
"gender",
"address",
"zipcode",
"city",
"country_iso_code",
"country_iso",
"email",
"id_type",
"id_country_iso_code",
"id_number",
"bank",
"account"
]
},
{...}
]
}
Response Parameter
Field | Type | Description |
---|---|---|
page |
Integer | Page number |
per_page |
Integer | Number of results per page (default 50, max 100) |
total_page |
Integer | Total page fetched from the server |
data |
Object | List of banks |
id |
Integer | Index number of the country |
name |
String | Country name |
full_name |
String | Country full name |
precision |
Integer | Number of digits after decimal point |
country_iso_code |
String | Country ISO-3 code. Using the standard of ISO 3116 country code |
currency |
String | Currency ISO code. Using the standard of ISO 4217 |
minimum_amount |
Decimal | Minimum transfer amount |
maximum_amount |
Decimal | Maximum transfer amount |
alias |
String | Alias name of the current bank |
required_sender_fields |
Array | Array of sender fields required for the transaction. The whole list provided in the sample response (which is just an example value) is a list of fields that are possible to be required and used in the sender object of a transaction |
required_beneficiary_fields |
Array | Array of beneficiary fields required for the transaction. The whole list provided in the sample response (which is just an example value) is a list of fields that are possible to be required and used in the beneficiary object of a transaction |
Supported Local Banks
List of banks supported in Transfez.
ID | Code | Bank Name |
---|---|---|
1 | bni | PT. BANK NEGARA INDONESIA (PERSERO) |
2 | mandiri | PT. BANK MANDIRI (PERSERO) TBK. |
3 | bca | PT. BANK CENTRAL ASIA TBK. |
4 | bri | PT. BANK RAKYAT INDONESIA (PERSERO) |
5 | cimb | PT. BANK CIMB NIAGA TBK. |
6 | permata | PT. BANK PERMATA TBK. |
7 | danamon | PT. BANK DANAMON INDONESIA TBK. |
8 | aceh | PT. BANK ACEH |
9 | aceh_syar | PT. BPD ISTIMEWA ACEH SYARIAH |
11 | agroniaga | PT. BANK RAKYAT INDONESIA AGRONIAGA TBK. |
12 | amar | PT. BANK AMAR INDONESIA |
13 | andara | PT. BANK ANDARA |
15 | antar_daerah | PT. BANK ANTAR DAERAH |
16 | anz | PT. BANK ANZ INDONESIA |
17 | artajasa | PT. ARTAJASA PEMBAYARAN ELEKTRONIK |
18 | artha | PT. BANK ARTHA GRAHA INTERNASIONAL TBK. |
20 | bali | PT. BANK PEMBANGUNAN DAERAH BALI |
21 | bangkok | BANGKOK BANK PUBLIC CO.LTD |
22 | banten | PT. BANK BANTEN |
23 | barclays | PT BANK BARCLAYS INDONESIA |
24 | bca_syar | PT. BANK BCA SYARIAH |
25 | bengkulu | PT. BPD BENGKULU |
26 | bisnis | PT. BANK BISNIS INTERNASIONAL |
27 | bjb | PT. BANK PEMBANGUNAN DAERAH JABAR DAN BANTEN |
28 | bjb_syar | PT. BANK JABAR BANTEN SYARIAH |
31 | bnp_paribas | PT. BANK BNP PARIBAS INDONESIA |
32 | boa | BANK OF AMERICA NA |
34 | btn | PT. BANK TABUNGAN NEGARA (PERSERO) |
35 | btn_syar | PT. BANK TABUNGAN NEGARA (PERSERO) UNIT USAHA SYARIAH |
36 | btpn | PT. BANK TABUNGAN PENSIUNAN NASIONAL |
37 | btpn_syar | PT. BANK TABUNGAN PENSIUNAN NASIONAL SYARIAH |
38 | bukopin | PT BANK KB BUKOPIN TBK. |
39 | bukopin_syar | PT. BANK SYARIAH BUKOPIN |
40 | bumi_artha | PT. BANK BUMI ARTA |
42 | capital | PT. BANK CAPITAL INDONESIA |
44 | chase | KC JPMORGAN CHASE BANK, N.A. |
45 | china | KC BANK OF CHINA LIMITED |
46 | china_cons | PT. BANK CHINA CONSTRUCTION BANK INDONESIA, TBK. |
47 | chinatrust | PT. BANK CTBC INDONESIA |
48 | cimb_rekening_ponsel | PT. BANK CIMB NIAGA TBK. - REKENING PONSEL |
49 | cimb_syar | PT. BANK CIMB NIAGA TBK. - UNIT USAHA SYARIAH |
50 | citibank | CITIBANK |
51 | commonwealth | PT. BANK COMMONWEALTH |
52 | danamon_syar | PT. BANK DANAMON INDONESIA UNIT USAHA SYARIAH |
53 | dbs | PT. BANK DBS INDONESIA |
54 | deutsche | DEUTSCHE BANK AG. |
56 | diy | PT. BANK PEMBANGUNAN DAERAH DIY |
57 | diy_syar | PT. BANK PEMBANGUNAN DAERAH DIY UNIT USAHA SYARIAH |
58 | dki | PT. BANK DKI |
59 | dki_syar | PT. BANK DKI UNIT USAHA SYARIAH |
61 | fama | PT. BANK FAMA INTERNATIONAL |
62 | ganesha | PT. BANK GANESHA |
63 | hana | PT. BANK KEB HANA INDONESIA |
64 | harda | PT. Allo Bank Indonesia (Ex-Bank Harda International) |
66 | hsbc | PT. BANK HSBC INDONESIA |
67 | icbc | PT. BANK ICBC INDONESIA |
68 | ina_perdana | PT. BANK INA PERDANA |
69 | index_selindo | PT. BANK INDEX SELINDO |
70 | india | PT. BANK OF INDIA INDONESIA TBK. |
71 | jambi | PT. BANK PEMBANGUNAN DAERAH JAMBI |
72 | jasa_jakarta | PT. BANK JASA JAKARTA |
73 | jateng | PT. BANK PEMBANGUNAN DAERAH JAWA TENGAH |
74 | jateng_syar | PT. BPD JAWA TENGAH UNIT USAHA SYARIAH |
75 | jatim | PT. BANK PEMBANGUNAN DAERAH JATIM |
76 | jatim_syar | PT. BANK PEMBANGUNAN DAERAH JATIM - UNIT USAHA SYARIAH |
77 | jtrust | PT. BANK JTRUST INDONESIA TBK. |
78 | kalbar | PT. BANK PEMBANGUNAN DAERAH KALBAR |
79 | kalbar_syar | PT. BANK PEMBANGUNAN DAERAH KALBAR - UNIT USAHA SYARIAH |
80 | kalsel | PT. BANK PEMBANGUNAN DAERAH KALSEL |
81 | kalsel_syar | PT. BANK PEMBANGUNAN DAERAH KALSEL - UNIT USAHA SYARIAH |
82 | kalteng | PT. BPD KALIMANTAN TENGAH |
83 | kaltim_syar | PT. BANK PEMBANGUNAN DAERAH KALTIM |
84 | kaltim | PT. BANK PEMBANGUNAN DAERAH KALTIM - UNIT USAHA SYARIAH |
86 | lampung | PT. BANK PEMBANGUNAN DAERAH LAMPUNG |
87 | maluku | PT. BANK PEMBANGUNAN DAERAH MALUKU |
90 | maspion | PT. BANK MASPION INDONESIA |
91 | mayapada | PT. BANK MAYAPADA INTERNASIONAL, TBK |
92 | maybank | PT. BANK MAYBANK INDONESIA TBK. |
93 | maybank_syar | PT. BANK MAYBANK SYARIAH INDONESIA |
95 | mayora | PT. BANK MAYORA |
96 | mega_syar | PT. BANK MEGA SYARIAH |
97 | mega_tbk | PT. BANK MEGA TBK. |
98 | mestika | PT. BANK MESTIKA DHARMA |
100 | mitraniaga | PT. BANK MITRANIAGA |
101 | mitsubishi | MUFG Bank, Ltd. |
102 | mizuho | PT. BANK MIZUHO INDONESIA |
103 | mnc | PT. BANK MNC INTERNASIONAL TBK. |
104 | muamalat | PT. BANK MUAMALAT INDONESIA |
105 | multiarta | PT. BANK MULTI ARTA SENTOSA |
109 | nobu | PT. BANK NATIONALNOBU |
110 | ntb | PT. BANK PEMBANGUNAN DAERAH NTB |
111 | ntt | PT. BANK PEMBANGUNAN DAERAH NTT |
112 | ocbc | PT. BANK OCBC NISP TBK. |
113 | ocbc_syar | PT. BANK OCBC NISP TBK. - UNIT USAHA SYARIAH |
114 | panin | PT. PANIN BANK TBK. |
115 | panin_syar | PT. BANK PANIN SYARIAH |
116 | papua | PT. BANK PEMBANGUNAN DAERAH PAPUA |
117 | permata_syar | PT. BANK PERMATA TBK. UNIT USAHA SYARIAH |
118 | prima_master | PT. PRIMA MASTER BANK |
121 | qnb | PT. BANK QNB INDONESIA TBK. |
124 | resona | PT. BANK RESONA PERDANIA |
125 | riau | PT. BANK PEMBANGUNAN DAERAH RIAU KEPRI |
126 | bcad | PT. BANK DIGITAL BCA |
127 | sampoerna | PT. BANK SAHABAT SAMPOERNA |
128 | sbi | PT. BANK SBI INDONESIA |
129 | shinhan | PT. BANK SHINHAN INDONESIA |
130 | sinarmas | PT. BANK SINARMAS |
131 | sinarmas_syar | PT. BANK SINARMAS UNIT USAHA SYARIAH |
132 | stanchard | STANDARD CHARTERED BANK |
133 | sulselbar | PT. BANK SULSELBAR |
134 | sulselbar_syar | PT. BPD SULAWESI SELATAN DAN SULAWESI BARAT UNIT USAHA SYARIAH |
135 | sulteng | PT. BPD SULAWESI TENGAH |
136 | sultenggara | PT. BPD SULAWESI TENGGARA |
137 | sulut | PT. BANK SULUT |
138 | sumbar | PT. BPD SUMATERA BARAT |
140 | sumsel_babel | PT. BPD SUMSEL DAN BABEL |
141 | sumsel_babel_syar | PT. BPD SUMSEL DAN BABEL UNIT USAHA SYARIAH |
142 | sumut | PT. BANK PEMBANGUNAN DAERAH SUMUT |
143 | sumut_syar | PT. BANK PEMBANGUNAN DAERAH SUMUT UUS |
144 | uob | PT. BANK UOB INDONESIA |
145 | victoria | PT. BANK VICTORIA INTERNATIONAL |
146 | victoria_syar | PT. BANK VICTORIA SYARIAH |
147 | woori | PT. BANK WOORI SAUDARA INDONESIA 1906 TBK. |
148 | yudha_bhakti | PT. BANK YUDHA BHAKTI/Bank Neo Commerce |
149 | bank_indonesia | BANK INDONESIA |
150 | ovo | OVO |
151 | riau_syar | PT. BANK PEMBANGUNAN DAERAH RIAU KEPRI SYARIAH |
152 | ok | PT. BANK OKE INDONESIA |
153 | jago | PT. BANK JAGO TBK. |
154 | bsi | PT. BANK SYARIAH INDONESIA, TBK. |
162 | mantap | Bank Mantap |
163 | bprks | BPR KS |
164 | ibk | IBK |
165 | linkaja | Link Aja |
166 | dana | Dana |
173 | gopay | GO-PAY |
229 | seabank | PT. BANK KESEJAHTERAAN EKONOMI |
236 | shopeepay | SHOPEE PAY |
243 | jago_syariah | Bank Jago Syariah |
247 | va_mandiri | Virtual Account Bank Mandiri |
248 | va_bri | Virtual Account Bank BRI |
249 | va_cimb | Virtual Account Bank CIMB |
250 | va_permata | Virtual Account Bank Permata |
254 | aladin_syar | PT Bank Aladin Syariah Tbk |
Bank Account Validation
Check if an account is valid, if the bank account is valid, we will return the account information.
GET
/validation_bank_account?bank_name=bni&account_number=00010000
Request Parameters
Parameter | Description |
---|---|
bank_name |
Bank code |
account_number |
Account number |
//Response Example
//Success Response
{
status 200,
"data": {
"id": "dca6236720f04b39b38ccd22920760f6",
"account_no": "1111222233333",
"bank_name": "mandiri",
"account_name": "Mandiri Simulator A"
}
}
//Success Response for DANA
{
"status": 200,
"data": {
"id": "1708660835",
"account_no": "621234567890",
"bank_name": "DANA",
"account_name": "harry potter",
"max_amount": "777459.00"
}
}
//Error Response
{
"status": 422,
"message": {
"error_message": "An error occured when doing account validation",
"errors": {
"account": [
"Account does not exist"
]
}
}
}
Response Parameters
Parameter | Description |
---|---|
bank_name |
Bank name of partner's bank account |
account_name |
Account name of partner's bank account |
account_no |
Account number of partner's bank account |
max_amount |
Maximum amount of partner’s bank account (only for DANA) |
It is essential to consider specific prerequisites, you may refer to the section on potential errors in the transaction creation process by clicking here.
International Transfer
As of now, basically the local transfer API and international transfer API shared some services such as get transaction
, create transaction
and confirm transaction
.
For local transfer, payer
will refer to the destination bank whilst for international transfer, payer
will refer to the destination country.
Get All International Transaction
//Request Example
{
"page": 1,
"per_page": 10
}
Request Parameter
Field | Required | Type | Description |
---|---|---|---|
page |
No | Integer | Page number |
per_page |
No | Integer | Number of results per page (default 50, max 100) |
{
"status": 200,
"page": 1,
"per_page": 10,
"total_page": 235,
"data": [
{
"id": 6306,
"reference_id": "TRX-REFERENCE-001",
"callback_url": "https://your.business.com/webhook/endpoint",
"payer_id": 172,
"mode": "DESTINATION",
"sender": {
"firstname": "John",
"lastname": "Doe",
"middlename": "",
"registered_name": "John Doe",
"date_of_birth": "1997-05-10",
"nationality_iso_code": "ALB",
"country_of_birth_iso_code": "DZA",
"gender": "MALE",
"msisdn": "+62123123123",
"id_type": "PASSPORT",
"id_number": "32134723",
"occupation": "self_employed",
"id_country_iso_code": "IDN",
"country_iso_code": "IDN",
"address": "Address of John Doe",
"address_country_iso_code": "IDN",
"postal_code": "321",
"city_id": "1",
"province_id": "1",
"msisdn_code": "+62",
"bank_account_number": "7777777",
"bank_id": "3",
"city": "Singapore",
"province_state": "Cdsa"
},
"source": {
"currency": "IDR",
"country_iso_code": "IDN"
},
"destination": {
"currency": "GBP",
"country_iso_code": "GBR",
"amount": "10000"
},
"beneficiary": {
"firstname": "Zofia",
"lastname": "Middleton",
"middlename": "Cope",
"nationality_iso_code": "GBR",
"city": "Manchester",
"country_iso_code": "GBR",
"id_type": "NATIONAL_ID",
"id_number": "3440",
"address": "29 Richmond Road",
"bank_id": "1976",
"bank_account_number": "1117994",
"bsb_number": "732732",
"swift_bic_code": "NLAMNL21",
"iban": "NL91ABNA0417164300",
"sort_code": "",
"bank_account_holder_name": "Zofia Middleton Cope",
"aba_routing_number": "111222333",
"msisdn": "+628727271809",
"gender": "female",
"province_state": "Manchester",
"postal_code": "321",
"msisdn_code": "+62",
"bank_code": "8601",
"clabe": "646180224409608448"
},
"compliance": {
"source_of_funds": "SALARY_INCOME",
"purpose_of_remittance": "FAMILY_SUPPORT"
},
"created_at": "2022-07-06T16:31:53.697+07:00",
"updated_at": "2022-07-06T16:47:31.688+07:00",
"user_id": 7,
"state": "confirmed",
"amount": 166585311,
"paid_at": "2022-07-06T16:47:15.000+07:00",
"rate": "16658.531169",
"fee": "0.0",
"partner_id": 6,
"completion_date": null,
"sent_amount": "10000.0",
"state_id": 2,
"error_code": null,
"error_message": null,
"notes": "Lorem ipsum dolor sit amet",
"transaction_type": "C2C",
"payment_channel": "local",
"user_email": "[email protected]",
"payer_name": null
}
]
}
Response Parameter
Field | Type | Description |
---|---|---|
page |
Integer | Page number |
per_page |
Integer | Number of results per page (default 50, max 100) |
total_page |
Integer | Total page fetched from the server |
|
Integer | API Status |
data |
Object | |
id |
Integer | Transaction ID |
reference_id |
String | Identifier of the transaction in your system (must be unique) |
callback_url |
String | Your callback URL. Refer to here |
payer_id |
Integer | Index number of the payer |
mode |
String | Mode of quotation, enumerations of DESTINATION or SOURCE |
sender |
Object | Refer to sender object |
source |
Object | Content of the object is related to the source currency and source country iso code |
destination |
Object | Content of the object is related to the destination currency, destination amount, and destination country iso code |
beneficiary |
Object | Refer to beneficiary object |
compliance |
Object | |
beneficiary_relationship |
String | Refer to beneficiary relationship list |
source_of_funds |
String | Refer to source of funds list |
purpose_of_remittance |
String | Refer to Purpose of remittance list |
created_at |
Timestamp | Creation date in HTTP format |
updated_at |
Timestamp | Last updated date in HTTP format |
user_id |
Integer | Index number of the user |
state |
String | Status class of the transaction. Refer to transaction states |
amount |
Decimal | Destination amount |
paid_at |
Timestamp | Time when the transaction payment has been confirmed. Will only shown after the state of transaction changed to confirmed or submitted |
rate |
Decimal | Rate of transaction (destination /source ) |
fee |
Decimal | Fee of transaction in IDR |
partner_id |
Integer | Your company index number |
completion_date |
Timestamp | Time when the transaction has been completed. Will only shown after the state of transaction changed to completed |
sent_amount |
Decimal | Source amount |
state_id |
Integer | Transaction status. Refer to transaction states |
error_code |
String | API Error Code. Refer to here |
error_message |
String | API Error message. Refer to here |
notes |
String | Notes of the transaction (max. 90 characters) |
transaction_type |
String | Refer to transaction type |
payment_channel |
String | Fee for the transaction in IDR. Can contains local , sha , our |
user_email |
String | E-mail of the user |
payer_name |
String | Name of the payer |
Get International Transaction
Path parameter | Description |
---|---|
:transaction_id |
Index number of the transaction |
{
"status": 200,
"data":
{
"id": 6306,
"reference_id": "TRX-REFERENCE-001",
"callback_url": "https://your.business.com/webhook/endpoint",
"payer_id": 172,
"mode": "DESTINATION",
"sender": {
"firstname": "John",
"lastname": "Doe",
"middlename": "",
"registered_name": "John Doe",
"date_of_birth": "1997-05-10",
"nationality_iso_code": "ALB",
"country_of_birth_iso_code": "DZA",
"gender": "MALE",
"msisdn": "+62123123123",
"id_type": "PASSPORT",
"id_number": "32134723",
"occupation": "self_employed",
"id_country_iso_code": "IDN",
"country_iso_code": "IDN",
"address": "Address of John Doe",
"address_country_iso_code": "IDN",
"postal_code": "321",
"city_id": "1",
"province_id": "1",
"msisdn_code": "+62",
"bank_account_number": "7777777",
"bank_id": "3",
"city": "Singapore",
"province_state": "Cdsa"
},
"source": {
"currency": "IDR",
"country_iso_code": "IDN"
},
"destination": {
"currency": "GBP",
"country_iso_code": "GBR",
"amount": "10000"
},
"beneficiary": {
"firstname": "Zofia",
"lastname": "Middleton",
"middlename": "Cope",
"nationality_iso_code": "GBR",
"city": "Manchester",
"country_iso_code": "GBR",
"id_type": "NATIONAL_ID",
"id_number": "3440",
"address": "29 Richmond Road",
"bank_id": "1976",
"bank_account_number": "1117994",
"bsb_number": "732732",
"swift_bic_code": "NLAMNL21",
"iban": "NL91ABNA0417164300",
"sort_code": "",
"bank_account_holder_name": "Zofia Middleton Cope",
"aba_routing_number": "111222333",
"msisdn": "+628727271809",
"gender": "female",
"province_state": "Manchester",
"postal_code": "321",
"msisdn_code": "+62",
"bank_code": "8601",
"clabe": "646180224409608448"
},
"compliance": {
"source_of_funds": "SALARY_INCOME",
"purpose_of_remittance": "FAMILY_SUPPORT"
},
"created_at": "2022-07-06T16:31:53.697+07:00",
"updated_at": "2022-07-06T16:47:31.688+07:00",
"user_id": 7,
"state": "confirmed",
"amount": 166585311,
"paid_at": "2022-07-06T16:47:15.000+07:00",
"rate": "16658.531169",
"fee": "0.0",
"partner_id": 6,
"completion_date": null,
"sent_amount": "10000.0",
"state_id": 2,
"error_code": null,
"error_message": null,
"notes": "Lorem ipsum dolor sit amet",
"transaction_type": "C2C",
"payment_channel": "local",
"user_email": "[email protected]",
"payer_name": null
}
}
Response Parameter
Field | Type | Description |
---|---|---|
|
Integer | API Status |
data |
Object | |
id |
Integer | Transaction ID |
reference_id |
String | Identifier of the transaction in your system (must be unique) |
callback_url |
String | Your callback URL. Refer to here |
payer_id |
Integer | Index number of the payer |
mode |
String | Mode of quotation, enumerations of DESTINATION or SOURCE |
sender |
Object | Refer to sender object |
source |
Object | Content of the object is related to the source currency and source country iso code |
destination |
Object | Content of the object is related to the destination currency, destination amount, and destination country iso code |
beneficiary |
Object | Refer to beneficiary object |
compliance |
Object | |
beneficiary_relationship |
String | Refer to beneficiary relationship list |
source_of_funds |
String | Refer to source of funds list |
purpose_of_remittance |
String | Refer to Purpose of remittance list |
created_at |
Timestamp | Creation date in HTTP format |
updated_at |
Timestamp | Last updated date in HTTP format |
user_id |
Integer | Index number of the user |
state |
String | Status class of the transaction. Refer to transaction states |
amount |
Decimal | Destination amount |
paid_at |
Timestamp | Time when the transaction payment has been confirmed. Will only shown after the state of transaction changed to confirmed or submitted |
rate |
Decimal | Rate of transaction (destination /source ) |
fee |
Decimal | Fee of transaction in IDR |
partner_id |
Integer | Your company index number |
completion_date |
Timestamp | Time when the transaction has been completed. Will only shown after the state of transaction changed to completed |
sent_amount |
Decimal | Source amount |
state_id |
Integer | Transaction status. Refer to transaction states |
error_code |
String | API Error Code. Refer to here |
error_message |
String | API Error message. Refer to here |
notes |
String | Notes of the transaction (max. 90 characters) |
transaction_type |
String | Refer to transaction type |
payment_channel |
String | Fee for the transaction in IDR. Can contains local , sha , our |
user_email |
String | E-mail of the user |
payer_name |
String | Name of the payer |
Get International Transaction by Reference ID
Path parameter | Description |
---|---|
:reference_id |
Reference id of the transaction |
{
"status": 200,
"data": {
"id": 28940,
"reference_id": "TRX-TEST-KOR-1",
"callback_url": "",
"payer_id": 232,
"mode": "DESTINATION",
"sender": {
"firstname": "Harry",
"lastname": "Potter",
"middlename": "James",
"date_of_birth": "1980-07-31",
"nationality_iso_code": "ALB",
"country_of_birth_iso_code": "DZA",
"gender": "MALE",
"msisdn": "+6281234567890",
"id_type": "PASSPORT",
"id_number": "3213",
"occupation": "self_employed",
"id_country_iso_code": "IDN",
"country_iso_code": "IDN",
"address": "4 Privet Drive, Little Whinging, Surrey",
"postal_code": "321",
"sender_city": "1",
"sender_province": "1",
"msisdn_code": "+62",
"bank_account_number": "7777777",
"local_bank": "3"
},
"source": {
"currency": "IDR",
"country_iso_code": "IDN"
},
"destination": {
"currency": "USD",
"country_iso_code": "CHN",
"amount": "10000"
},
"beneficiary": {
"city": "Seoul",
"address": "205, Gangdong-daero, Gangdong-gu, Seoul",
"firstname": "Jae",
"lastname": "Park",
"swift_bic_code": "BOKRKRST",
"bankAccountHolderName": "Jae Park",
"bank_account_number": "212938100",
"country_iso_code": "KOR",
"nationality_iso_code": "KR"
},
"compliance": {
"source_of_funds": "SALARY_INCOME",
"purpose_of_remittance": "FAMILY_SUPPORT",
"beneficiary_relationship": "MYSELF"
},
"created_at": "2023-04-26T07:29:16.991+07:00",
"updated_at": "2023-03-10T11:35:31.647+07:00",
"user_id": 7,
"state": "created",
"amount": 158730768,
"paid_at": null,
"rate": "15873.0768",
"fee": "50000.0",
"partner_id": 6,
"completion_date": null,
"sent_amount": "10000.0",
"state_id": null,
"error_code": null,
"error_message": null,
"notes": "punya lanny buat cobain",
"transaction_type": "C2C",
"balance_id": 51,
"payment_channel": "local",
"is_regenerated": false,
"receipt_url": null
}
}
Response Parameter
Field | Type | Description |
---|---|---|
|
Integer | API Status |
data |
Object | |
id |
Integer | Transaction ID |
reference_id |
String | Identifier of the transaction in your system (must be unique) |
callback_url |
String | Your callback URL. Refer to here |
payer_id |
Integer | Index number of the payer |
mode |
String | Mode of quotation, enumerations of DESTINATION or SOURCE |
sender |
Object | Refer to sender object |
source |
Object | Content of the object is related to the source currency and source country iso code |
destination |
Object | Content of the object is related to the destination currency, destination amount, and destination country iso code |
beneficiary |
Object | Refer to beneficiary object |
compliance |
Object | |
beneficiary_relationship |
String | Refer to beneficiary relationship list |
source_of_funds |
String | Refer to source of funds list |
purpose_of_remittance |
String | Refer to Purpose of remittance list |
created_at |
Timestamp | Creation date in HTTP format |
updated_at |
Timestamp | Last updated date in HTTP format |
user_id |
Integer | Index number of the user |
state |
String | Status class of the transaction. Refer to transaction states |
amount |
Decimal | Destination amount |
paid_at |
Timestamp | Time when the transaction payment has been confirmed. Will only shown after the state of transaction changed to confirmed or submitted |
rate |
Decimal | Rate of transaction (destination /source ) |
fee |
Decimal | Fee of transaction in IDR |
partner_id |
Integer | Your company index number |
completion_date |
Timestamp | Time when the transaction has been completed. Will only shown after the state of transaction changed to completed |
sent_amount |
Decimal | Source amount |
state_id |
Integer | Transaction status. Refer to transaction states |
error_code |
String | API Error Code. Refer to here |
error_message |
String | API Error message. Refer to here |
notes |
String | Notes of the transaction (max. 90 characters) |
transaction_type |
String | Refer to transaction type |
payment_channel |
String | Fee for the transaction in IDR. Can contains local , sha , our |
user_email |
String | E-mail of the user |
payer_name |
String | Name of the payer |
Create International Transaction
To create a transaction there are some points needed to be taken. Every destination country should have different requirement than the others based on:
- Sender form
- Beneficiary form
You can find the required field for each destination country here
// Request payload for successful transaction
{
"reference_id": "TRX-TEST",
"callback_url": "your-company.com",
"payer_id": 232,
"mode": "DESTINATION",
"sender": {
"firstname": "Harry",
"lastname": "James",
"middlename": "Potter",
"date_of_birth": "1997-05-10",
"nationality_iso_code": "ALB",
"country_of_birth_iso_code": "DZA",
"gender": "MALE",
"msisdn": "+628889977766",
"id_type": "PASSPORT",
"id_number": "3213",
"occupation": "self_employed",
"id_country_iso_code": "IDN",
"country_iso_code": "IDN",
"address": "id type di enum",
"postal_code": "321",
"sender_city": "1",
"sender_province": "1",
"msisdn_code": "+62",
"bank_account_number": "7777777",
"local_bank": "3"
},
"source": {
"currency": "IDR",
"country_iso_code": "IDN"
},
"destination": {
"currency": "USD",
"country_iso_code": "CHN",
"amount": "10000"
},
"beneficiary": {
"city": "Mong Kok",
"address": "Cheng Hing building 72 Nathan Road",
"firstname": "Jae",
"lastname": "Park",
"swift_bic_code": "BKCHCNBJ",
"bankAccountHolderName": "Jae Park",
"bank_account_number": "212938100",
"country_iso_code": "CHN",
"nationality_iso_code": "IDN"
},
"compliance": {
"source_of_funds": "SALARY_INCOME",
"purpose_of_remittance": "FAMILY_SUPPORT",
"beneficiary_relationship": "MYSELF"
},
"notes": "Magic and music show performance fee",
"transaction_type": "C2C",
"payment_channel": "local"
}
Request Parameter
Field | Required | Type | Description | ||||
---|---|---|---|---|---|---|---|
reference_id |
YES | String | Identifier of the transaction in your system (must be unique) | ||||
callback_url |
NO | String | Your callback URL. Refer to [here](#callback) | ||||
payer_id |
YES | String | Index number of destination country | ||||
mode |
YES | String | Choose between DESTINATION or SOURCE . Affects where the amount field is required |
||||
transaction_type/code> |
NO | String | Type of transaction, enumerations of C2C C2B B2C or B2B (default C2C ) |
||||
payment_channel |
NO | String | Type of fee, enumerations of local sha or our (default local ) |
||||
sender |
YES | Object | Content of the object is depending on the payers required attribute | ||||
source |
YES | Object | |||||
source[amount] |
NO | Decimal | Required if the mode is SOURCE |
||||
source[currency] |
YES | String | Source currency ISO code. Using the standard of ISO 4217! | ||||
source[country_iso_code] |
YES | String | Source country ISO-3 code. Using the standard of ISO 3116 country code | ||||
destination |
YES | Object | |||||
destination[amount] |
NO | Decimal | Required if the mode is DESTINATION |
||||
destination[currency] |
YES | String | Destination currency ISO code. Using the standard of ISO 4217 | ||||
destination[country_iso_code] |
YES | String | Source country ISO-3 code. Using the standard of ISO 3116 country code | ||||
beneficiary |
YES | Object |
Content of the object is depending on the payers required attribute
|
||||
compliance |
YES | Object | Content of the object is depending on the payers required attribute | ||||
compliance[source_of_funds] |
YES | String | Refer to [source of funds](#source-of-funds) list | ||||
compliance[beneficiary_relationship] |
YES | String | Refer to beneficiary relationships list | ||||
compliance[purpose_of_remittance] |
YES | String | Refer to purpose of remittance list |
// Response payload for failed create transaction request
{
"status": 422,
"message": {
"sender": [
"firstname required"
],
"message": []
}
}
// Response payload for successful create transaction request
{
"status": 200,
"data": {
"id": 28841,
"reference_id": "TRX-TEST-DOCS",
"callback_url": "https://your.business.com/webhook/endpoint",
"payer_id": 232,
"mode": "DESTINATION",
"sender": {
"firstname": "Harry",
"lastname": "James",
"middlename": "Potter",
"date_of_birth": "1997-05-10",
"nationality_iso_code": "ALB",
"country_of_birth_iso_code": "DZA",
"gender": "MALE",
"msisdn": "+628889977766",
"id_type": "PASSPORT",
"id_number": "3213",
"occupation": "self_employed",
"id_country_iso_code": "IDN",
"country_iso_code": "IDN",
"address": "id type di enum",
"postal_code": "321",
"sender_city": "1",
"sender_province": "1",
"msisdn_code": "+62",
"bank_account_number": "7777777",
"local_bank": "3"
},
"source": {
"currency": "IDR",
"country_iso_code": "IDN"
},
"destination": {
"currency": "USD",
"country_iso_code": "CHN",
"amount": "10000"
},
"beneficiary": {
"city": "Mong Kok",
"address": "Cheng Hing building 72 Nathan Road",
"firstname": "Jae",
"lastname": "Park",
"swift_bic_code": "BKCHCNBJ",
"bankAccountHolderName": "Jae Park",
"bank_account_number": "212938100",
"country_iso_code": "CHN",
"nationality_iso_code": "IDN"
},
"compliance": {
"source_of_funds": "SALARY_INCOME",
"purpose_of_remittance": "FAMILY_SUPPORT",
"beneficiary_relationship": "MYSELF"
},
"created_at": "2023-03-03T15:42:10.015+07:00",
"updated_at": "2023-03-03T15:42:10.325+07:00",
"user_id": 7,
"state": "created",
"amount": 158730768,
"paid_at": null,
"rate": "15873.0768",
"fee": "50000.0",
"partner_id": 6,
"completion_date": null,
"sent_amount": "10000.0",
"state_id": null,
"error_code": null,
"error_message": null,
"notes": "Magic and music show performance fee",
"transaction_type": "C2C",
"balance_id": 51,
"payment_channel": "local",
"is_regenerated": false,
"receipt_url": null
}
}
Response Parameter
Field | Type | Description |
---|---|---|
|
Integer | API Status |
data |
Object | |
id |
Integer | Transaction ID |
reference_id |
String | Identifier of the transaction in your system (must be unique) |
callback_url |
String | Your callback URL. Refer to here |
payer_id |
Integer | Index number of the payer |
mode |
String | Mode of quotation, enumerations of DESTINATION or SOURCE |
sender |
Object | Refer to sender object |
source |
Object | Content of the object is related to the source currency and source country iso code |
destination |
Object | Content of the object is related to the destination currency, destination amount, and destination country iso code |
beneficiary |
Object | Refer to beneficiary object |
compliance |
Object | |
beneficiary_relationship |
String | Refer to beneficiary relationship list |
source_of_funds |
String | Refer to source of funds list |
purpose_of_remittance |
String | Refer to Purpose of remittance list |
created_at |
Timestamp | Creation date in HTTP format |
updated_at |
Timestamp | Last updated date in HTTP format |
user_id |
Integer | Index number of the user |
state |
String | Status class of the transaction. Refer to transaction states |
amount |
Decimal | Destination amount |
paid_at |
Timestamp | Time when the transaction payment has been confirmed. Will only shown after the state of transaction changed to confirmed or submitted |
rate |
Decimal | Rate of transaction (destination /source ) |
fee |
Decimal | Fee of transaction in IDR |
partner_id |
Integer | Your company index number |
completion_date |
Timestamp | Time when the transaction has been completed. Will only shown after the state of transaction changed to completed |
sent_amount |
Decimal | Source amount |
state_id |
Integer | Transaction status. Refer to transaction states |
error_code |
String | API Error Code. Refer to here |
error_message |
String | API Error message. Refer to here |
notes |
String | Notes of the transaction (max. 90 characters) |
transaction_type |
String | Refer to transaction type |
payment_channel |
String | Fee for the transaction in IDR. Can contains local , sha , our |
user_email |
String | E-mail of the user |
payer_name |
String | Name of the payer |
Confirm International Transaction
After a transaction is created, you will need to confirm the transaction to process it.
The state of transaction should be confirmed
after you hit this endpoint.
Path parameter | Description |
---|---|
:transaction_id |
Index number of the transaction |
{
"status": 200,
"data": {
"id": 28778,
"state": "confirmed",
"user_id": 7,
"payer_id": 232,
"reference_id": "TRX-TEST-KOR",
"notes": "Magic and music show performance fee",
"callback_url": "",
"mode": "DESTINATION",
"sender": {
"firstname": "Harry",
"lastname": "Potter",
"middlename": "James",
"date_of_birth": "1980-07-31",
"nationality_iso_code": "ALB",
"country_of_birth_iso_code": "DZA",
"gender": "MALE",
"msisdn": "+6281234567890",
"id_type": "PASSPORT",
"id_number": "3213",
"occupation": "self_employed",
"id_country_iso_code": "IDN",
"country_iso_code": "IDN",
"address": "4 Privet Drive, Little Whinging, Surrey",
"postal_code": "321",
"sender_city": "1",
"sender_province": "1",
"msisdn_code": "+62",
"bank_account_number": "7777777",
"local_bank": "3"
},
"source": {
"currency": "IDR",
"country_iso_code": "IDN"
},
"destination": {
"currency": "USD",
"country_iso_code": "CHN",
"amount": "10000"
},
"beneficiary": {
"city": "Seoul",
"address": "205, Gangdong-daero, Gangdong-gu, Seoul",
"firstname": "Jae",
"lastname": "Park",
"swift_bic_code": "BOKRKRST",
"bankAccountHolderName": "Jae Park",
"bank_account_number": "212938100",
"country_iso_code": "KOR",
"nationality_iso_code": "KR"
},
"compliance": {
"source_of_funds": "SALARY_INCOME",
"purpose_of_remittance": "FAMILY_SUPPORT",
"beneficiary_relationship": "MYSELF"
},
"created_at": "2023-03-02T17:30:43.010+07:00",
"updated_at": "2023-03-02T17:31:20.237+07:00",
"amount": 158730768,
"paid_at": null,
"rate": "15873.0768",
"fee": "50000.0",
"partner_id": 6,
"completion_date": null,
"sent_amount": "10000.0",
"state_id": 2,
"error_code": null,
"error_message": null,
"transaction_type": "C2C",
"balance_id": 51,
"payment_channel": "local",
"is_regenerated": false,
"receipt_url": null
}
}
Response Parameter
Field | Type | Description |
---|---|---|
|
Integer | API Status |
data |
Object | |
id |
Integer | Transaction ID |
reference_id |
String | Identifier of the transaction in your system (must be unique) |
callback_url |
String | Your callback URL. Refer to here |
payer_id |
Integer | Index number of the payer |
mode |
String | Mode of quotation, enumerations of DESTINATION or SOURCE |
sender |
Object | Refer to sender object |
source |
Object | Content of the object is related to the source currency and source country iso code |
destination |
Object | Content of the object is related to the destination currency, destination amount, and destination country iso code |
beneficiary |
Object | Refer to beneficiary object |
compliance |
Object | |
beneficiary_relationship |
String | Refer to beneficiary relationship list |
source_of_funds |
String | Refer to source of funds list |
purpose_of_remittance |
String | Refer to Purpose of remittance list |
created_at |
Timestamp | Creation date in HTTP format |
updated_at |
Timestamp | Last updated date in HTTP format |
user_id |
Integer | Index number of the user |
state |
String | Status class of the transaction. Refer to transaction states |
amount |
Decimal | Destination amount |
paid_at |
Timestamp | Time when the transaction payment has been confirmed. Will only shown after the state of transaction changed to confirmed or submitted |
rate |
Decimal | Rate of transaction (destination /source ) |
fee |
Decimal | Fee of transaction in IDR |
partner_id |
Integer | Your company index number |
completion_date |
Timestamp | Time when the transaction has been completed. Will only shown after the state of transaction changed to completed |
sent_amount |
Decimal | Source amount |
state_id |
Integer | Transaction status. Refer to transaction states |
error_code |
String | API Error Code. Refer to here |
error_message |
String | API Error message. Refer to here |
notes |
String | Notes of the transaction (max. 90 characters) |
transaction_type |
String | Refer to transaction type |
payment_channel |
String | Fee for the transaction in IDR. Can contains local , sha , our |
user_email |
String | E-mail of the user |
payer_name |
String | Name of the payer |
Get List of Supported Country
//Request Example
{
"page": 1,
"per_page": 10000
}
Request Parameter
Field | Required | Type | Description |
---|---|---|---|
page |
No | Integer | Page number |
per_page |
No | Integer | Number of results per page (ensure to max it out to get the whole list of countries) |
//Response Example
{
"status": 200,
"page": 1,
"per_page": 10000,
"total_page": 1,
"data": [
{
"id": 157,
"name": "USA",
"full_name": null,
"precision": "2",
"country_iso_code": "USA",
"currency": "USD",
"minimum_amount": 30.0,
"maximum_amount": 25000.0
},
{...}
]
}
Response Parameter
Field | Type | Description |
---|---|---|
page |
Integer | Page number |
per_page |
Integer | Number of results per page (default 50, max 100) |
total_page |
Integer | Total page fetched from the server |
data |
Object | List of country |
id |
Integer | Index number of the country |
name |
String | Country name |
full_name |
String | Country full name |
precision |
Integer | Number of digits after decimal point |
country_iso_code |
String | Country ISO-3 code. Using the standard of ISO 3116 country code |
currency |
String | Currency ISO code. Using the standard of ISO 4217 |
minimum_amount |
Decimal | Minimum transfer amount |
maximum_amount |
Decimal | Maximum transfer amount |
Get Rates of a Country
Retrieve rates for a given destination country. The :payer_id
must be supplied in the URI path.
Path parameter | Description |
---|---|
:payer_id |
Index number of the country |
{
"status": 200,
"data": {
"source_country": "IDN",
"source_currency": "IDR",
"destination_country": "USA",
"destination_currency": "USD",
"data_by_type": [
{
"C2C": {
"rate": "0.000068927973617359",
"inverse_rate": "14507.8978464",
"last_updated_at": "2022-08-04T16:11:37.000+07:00",
"available_fees": {
"local": 50000,
"sha": 100000,
"our": 150000
}
}
},
{
"B2B": {
"rate": "0.000067927973617359",
"inverse_rate": "14721.4755092",
"last_updated_at": "2022-08-04T16:11:37.000+07:00",
"available_fees": {
"local": 50000,
"sha": 100000,
"our": 150000
}
}
},
{
"B2C": {
"rate": "0.000067927973617359",
"inverse_rate": "14721.4755092",
"last_updated_at": "2022-08-04T16:11:37.000+07:00",
"available_fees": {
"local": 50000,
"sha": 100000,
"our": 150000
}
}
},
{
"C2B": {
"rate": "0.000067927973617359",
"inverse_rate": "14721.4755092",
"last_updated_at": "2022-08-04T16:11:37.000+07:00",
"available_fees": {
"local": 50000,
"sha": 100000,
"our": 150000
}
}
}
],
"last_updated_at": "2022-08-04T16:11:37.000+07:00"
}
}
Response Parameter
Field | Type | Description |
---|---|---|
|
Integer | API Status |
data |
Object | List of rates for the particular country |
source_country |
String | Source country ISO-3 code. Using the standard of ISO 3116 country code |
source_currency |
String | Source currency ISO code. Using the standard of ISO 4217 |
destination_country |
String | Destination country ISO-3 code. Using the standard of ISO 3116 country code |
destination_currency |
String | Destination currency ISO code. Using the standard of ISO 4217 |
data_by_type |
Array | Contains data for B2B , B2C C2C or C2B rates. If any of those value is not included in the response, then you cannot create a transaction for that particular method |
data_by_type[rate] |
Decimal | Conversion rate between source and destination currency i.e. how much destination currency for one unit of source currency |
data_by_type[inverse_rate] |
Decimal | Inverse conversion rate == 1/rate |
data_by_type[last_updated_at] |
Timestamp | Timestamp for when the rate is last updated |
data_by_type[available_fees] |
Object | Fee for the transaction in IDR. Can contains local , sha , our . If any of those value is not included in the response, then you cannot create a transaction for that particular method |
Get Bank List of a Country
Path parameter | Description |
---|---|
:payer_id |
Index number of the country |
//Response Example
{
{
"status": 200,
"page": 1,
"per_page": 1000,
"total_page": 1,
"data": [
{
"id": 4036,
"name": "MBSB BANK BERHAD",
"country_iso_3": "MYS",
"additional_required_fields": {}
},
{
"id": 4035,
"name": "BANGKOK BANK BERHAD",
"country_iso_3": "MYS",
"additional_required_fields": {}
},
{...}
]
}
Response Parameter
Field | Type | Description |
---|---|---|
page |
Integer | Page number |
per_page |
Integer | Number of results per page (default 50, max 100) |
total_page |
Integer | Total page fetched from the server |
data |
Object | List of banks for the country |
id |
Integer | Index number of a bank |
name |
String | Bank name |
country_iso_3 |
String | Country code where the bank is located |
additional_required_fields |
Object | Required fields for that particular payer |
Swift Code for Banks in Indonesia
//Response Example
{
"status": 200,
"data": [
{
"id": 1,
"full_name": "PT. BANK NEGARA INDONESIA (PERSERO)",
"swift": "BNINIDJA"
},
{
"id": 2,
"full_name": "PT. BANK MANDIRI (PERSERO) TBK.",
"swift": "BMRIIDJA"
},
{
"id": 3,
"full_name": "PT. BANK CENTRAL ASIA TBK.",
"swift": "CENAIDJA"
},
....
]
}
Response Parameter
Field | Type | Description |
---|---|---|
full_name |
String | Full Name |
swift |
String | Swift code for bank |
Get Required Fields for a Destination Country
Path parameter | Description |
---|---|
:payer_id |
Index number of the destination country |
//Response Example
{
"status": 200,
"data": {
"id": 9,
"currency": "HKD",
"attr": {
"sender": {
"personal": {
"details": [
"firstname",
"lastname",
"date_of_birth",
"id_type",
"id_number",
"id_country_iso_code",
"msisdn_code",
"msisdn",
"nationality_iso_code",
"country_of_birth_iso_code",
"local_bank",
"bank_account_number",
"gender",
"occupation",
"country_iso_code",
"sender_province",
"sender_city",
"address",
"postal_code"
],
"compliance": [
"source_of_funds",
"purpose_of_remittance",
"beneficiary_relationship"
]
},
"business": {
"details": [
"registered_name",
"incorporation_date",
"business_activity",
"registration_number",
"msisdn_code",
"nationality_iso_code",
"bank_account_number",
"local_bank",
"msisdn",
"address",
"postal_code",
"country_iso_code",
"sender_city",
"sender_province"
],
"compliance": [
"source_of_funds",
"purpose_of_remittance",
"beneficiary_relationship"
]
}
},
"recipient": {
"personal": {
"details": [
"firstname",
"lastname",
"address",
"msisdn"
],
"bank": [
"bank_id",
"bank_account_number"
]
},
"business": {
"details": [
"registered_name",
"address",
"msisdn"
],
"bank": [
"bank_id",
"bank_account_number"
]
}
}
},
"country_iso_code": null
}
}
Response Parameter
Field | Type | Description | ||||
---|---|---|---|---|---|---|
id |
Integer | Index number of destination country | ||||
currency |
String | Currency ISO code. Using the standard of ISO 4217 | ||||
attr |
Object | |||||
attr[sender] |
Object |
Required fields on sender object. Use personal if the sender is an individual, or use business if the sender is a business. Parameters detail can be seen here
|
||||
attr[recipient] |
Object |
Required fields on beneficiary object. Use personal if the beneficiary is an individual, or use business if the beneficiary is a business. Parameters detail can be seen here
|
Get Sender Provinces
//Response Example
{
"status": 200,
"data": [
{
"id": 1,
"name": "ACEH"
},
{
"id": 2,
"name": "SUMATERA UTARA"
},
{
"id": 3,
"name": "SUMATERA BARAT"
},
.......
]
}
Response Parameter
Field | Type | Description |
---|---|---|
id |
Integer | Index number of sender province |
name |
String | Name of the sender province |
Get Sender Cities
//Response Example
{
"status": 200,
"data": [
{
"id": 1,
"name": "KAB. ACEH SELATAN",
"province_id": 1
},
{
"id": 2,
"name": "KAB. ACEH TENGGARA",
"province_id": 1
},
{
"id": 3,
"name": "KAB. ACEH TIMUR",
"province_id": 1
},
....
]
}
Response Parameter
Field | Type | Description |
---|---|---|
id |
Integer | Index number of sender city |
name |
String | Name of the sender city |
province_id |
Integer | Index number of the sender province. Refer to the sender province |
Swift Code Validation
//Response Example for existing swift_code
{
"id": "10",
"title": "Kode SWIFT / BIC Bank ABN AMRO BANK N.V. UNITED ARAB EMIRATES BRANCH",
"country_code": "AE",
"country": "United Arab Emirates",
"city": "DUBAI",
"bank": "ABN AMRO BANK N.V. UNITED ARAB EMIRATES BRANCH",
"branch": "(INTERNATIONAL PRIVATE CLIENTS DEPARTMENT)",
"swift_code": "ABNAAEAAIPC"
}
//Response Example for non-existing swift_code
{
"error": "Swift code not found"
}
Response Parameter
Field | Type | Description |
---|---|---|
id |
Integer | Index number of the swift code |
title |
String | Name of the swift code |
country_code |
String | Country code of the swift code |
country |
String | Country of the swift code |
city |
String | City of the swift code |
bank |
String | Bank of the swiftcode |
branch |
String | Branch of the swiftc ode |
swift_code |
String | The SWIFT code |
Transaction states
During the course of a transfer, a transaction will undergo various status changes as illustrated.
Conditions marked as "Upon request to customer care team" pertains to reversal and/or cancellation, which must be requested through and performed by customer care team.
As changes in transaction status occur, updates will be sent in real-time when a callback URL is provided. In conjunction, transaction status can be queried through one of two means: via the returned id
or a provided external_id
.
The latter serves as a unique reference in the perspective of the sending partner and functions to retrieve transaction details when exceptions occur, such as when the supposed response was not received, as an example.
The numerical values within each of the illustrated states correspond to the transaction status, while the labels correspond to that of the transaction status class message.
Virtual Accounts Collections
Create VA
//Payload
{
"partner_user_id":"testing-va",
"bank_code": "013",
"amount": 10000,
"is_open": false,
"is_single_use" : true,
"is_lifetime": false,
"expiration_time": 50000,
"trx_expiration_time" : 100,
"username_display": "Transfez testing",
"partner_trx_id": "TRX0001",
"virtual_account": "746100000000007",
"callback_url" : "https://staging.api.com/callback"
}
Request Parameter
Field | Required | Type | Description |
---|---|---|---|
partner_user_id |
Yes | string | Partner unique ID for specific user |
bank_code |
Yes | string | bank code based on list |
amount |
Yes | integer | va amount, if is_open is true the amount has to be 0 (zero) |
is_open |
Yes | boolean | true = open amount, false = closed amount |
is_single_use |
Yes | boolean | true = single use, false = multiple use |
is_lifetime |
Yes | boolean | true = static VA, false = dynamic VA |
expiration_time |
Yes | integer | VA expiration time in minutes. If is_lifetime is true, this parameter will be ignored |
trx_expiration_time |
No | integer | Transaction expiration time in minutes, must be lower than expiration_time. If not set, this params will copy the expiration_time |
username_display |
Yes | string | Va name |
partner_trx_id |
No | string | Partner unique identifier for VA |
virtual_account |
No | string | (string - 15 chars): Custom VA number only for selected banks. If not set, the number will be randomly generated |
• Format: 74610000000007 | |||
• 7461 = Bank Prefix (4-5 digits) |
|||
• 0000 = Client Prefix (4 digits) |
|||
• 000007 = Customized Number (6 Digits) |
|||
callback_url |
Yes | string | Partner URL for callbacks |
//Response
{
"status": 200,
"data": {
"id": 81225270,
"va_status": "WAITING_PAYMENT",
"va_number": "895280066160239",
"partner_user_id": "test-va-bri-0029",
"bank_code": "008",
"amount": 10000,
"is_open": false,
"is_single_use": true,
"expiration_time": 1,
"is_lifetime": false,
"username_display": "va name",
"trx_expiration_time": 1,
"partner_trx_id": "TRX-test-0029",
"created_at": "2023-08-11T15:58:56.095+07:00",
"updated_at": "2023-08-11T15:58:56.189+07:00",
"counter_incoming_payment": 0,
"callback_url": "https://staging.api.com/callback",
"amount_detected": 0,
"balance": {
"currency": "IDR",
"balance": 20490000,
"name": "MAIN_WALLET"
}
}
}
Response Parameter
Field | Description |
---|---|
id |
unique ID from transfez |
va_status |
status of VA |
partner_id |
id of partner |
counter_incoming_payment |
Count total incoming payment of VA |
balance |
Balance data |
Update VA
//Payload
{
"username_display": "testing_1",
"amount": 100000,
"expiration_time": 1000,
"trx_expiration_time": 900,
"callback_url": "https://production.api.com/callback"
}
Request Parameter
All parameters are optional.
Field | Type | Description |
---|---|---|
Username_display |
string | Partner unique ID for specific user |
Amount |
integer | Change amount |
Expiration_time |
integer | The expiration time will be modified to the desired minutes, counted from the moment it changed. Can be set to 0 (zero) for immediate expiration |
Trx_expiration_time |
integer | the expiration time will be modified to the desired minutes, counted from the moment it changed. Can be set to 0 (zero) for immediate expiration |
Callback_url |
string | change callback url |
VA types
1) Single payment, open amount, no expiration (One time payment with open amount)
//Payload example
{
"partner_user_id":"testing-va",
"bank_code": "013",
"amount": 10000,
"is_open": true,
"is_single_use" : true,
"is_lifetime": true,
"expiration_time": 50000,
"trx_expiration_time" : 100,
"username_display": "Transfez testing",
"partner_trx_id": "TRX0001",
"virtual_account": "746100000000007",
"callback_url" : "https://staging.api.com/callback"
}
Expiration Behavior:
- Create: NOT APPLICABLE
- Update: NOT APPLICABLE
Transaction Expiration Behavior:
Create:
- Can be set to expire the transaction only, but can be reactivated
- The transaction will remain active for a lifetime if set to -1
Update:
- If the status is "WAITING_PAYMENT": Will extend the trx expiration time
- If the status is "STATIC_TRX_EXPIRED": Will reset the trx expiration time to the desired amount
- If the status is "COMPLETE": Not applicable
2) Single payment, open amount, with expiration ( One time payment with open amount)
//Payload example
{
"partner_user_id":"testing-va",
"bank_code": "013",
"amount": 10000,
"is_open": true,
"is_single_use" : true,
"is_lifetime": false,
"expiration_time": 50000,
"trx_expiration_time" : 100,
"username_display": "Transfez testing",
"partner_trx_id": "TRX0001",
"virtual_account": "746100000000007",
"callback_url" : "https://staging.api.com/callback"
}
Expiration Behavior:
- Create: Can be set to expire the whole VA and cannot be reactivated
- Update:
- If the status is "WAITING_PAYMENT" OR "STATIC_TRX_EXPIRED": Will change the expiration time from now to a desirable minute
- If the status is "COMPLETE" OR "EXPIRED": Not applicable
Transaction Expiration Behavior:
- Create
- Can be set to expire the transaction only, but can be reactivated
- Will copy the expiration_time if not set
- Update
- If the status is "WAITING_PAYMENT": Will extend the trx expiration time
- If the status is "STATIC_TRX_EXPIRED": Will reset the trx expiration time to desired amount
- If the status is "COMPLETE" or “EXPIRED”: not applicable
3) Multiple payment, open amount, no expiration (multiple payment with open amount)
// Payload example
{
"partner_user_id":"testing-va",
"bank_code": "013",
"amount": 10000,
"is_open": true,
"is_single_use" : false,
"is_lifetime": true,
"expiration_time": 50000,
"trx_expiration_time" : 100,
"username_display": "Transfez testing",
"partner_trx_id": "TRX0001",
"virtual_account": "746100000000007",
"callback_url" : "https://staging.api.com/callback"
}
Expiration Behavior:
- Create: NOT APPLICABLE
- Update: NOT APPLICABLE
Transaction Expiration Behavior:
- Create
- Can be set to expire the transaction only, but can be reactivated
- The transaction will remain active for lifetime is set to -1
- Update
- If the status is "WAITING_PAYMENT" OR "PAYMENT_DETECTED": Will extend the trx expiration time
- If the status is "STATIC_TRX_EXPIRED": Will reset the trx expiration time to desired amount
4) Multiple payment, open amount, with expiration (multiple payment with open amount)
// Payload example
{
"partner_user_id":"testing-va",
"bank_code": "013",
"amount": 10000,
"is_open": true,
"is_single_use" : false,
"is_lifetime": false,
"expiration_time": 50000,
"trx_expiration_time" : 100,
"username_display": "Transfez testing",
"partner_trx_id": "TRX0001",
"virtual_account": "746100000000007",
"callback_url" : "https://staging.api.com/callback"
}
Expiration Behavior
- Create: Can be set to expire the whole VA and cannot be reactivated
- Update:
- If the status is "WAITING_PAYMENT" OR "STATIC_TRX_EXPIRED" OR "PAYMENT_DETECTED": Will Will change the expiration time from now to desirable minute
- If the status is "EXPIRED": Not applicable
Transaction Expiration Behavior:
- Create
- Can be set to expire the transaction only, but can be reactivated
- Will copy the expiration_time if not set
- Update
- If the status is "WAITING_PAYMENT" OR "PAYMENT_DETECTED": Will extend the trx expiration time,
- if the status is "STATIC_TRX_EXPIRED": Will reset the trx expiration time to desired amount
5) Multiple payment, fixed amount, no expiration (muliple payment with fixed amount)
// Payload example
{
"partner_user_id":"testing-va",
"bank_code": "013",
"amount": 10000,
"is_open": false,
"is_single_use" : false,
"is_lifetime": true,
"expiration_time": 50000,
"trx_expiration_time" : 100,
"username_display": "Transfez testing",
"partner_trx_id": "TRX0001",
"virtual_account": "746100000000007",
"callback_url" : "https://staging.api.com/callback"
}
Expiration Behavior
- Create: NOT APPLICABLE
- Update: NOT APPLICABLE
Transaction Expiration Behavior:
- Create
- Can be set to expire the transaction only, but can be reactivated
- The transaction will remain active for lifetime is set to -1
- Update
- If the status is "WAITING_PAYMENT" OR "PAYMENT_DETECTED": Will extend the trx expiration time ,
- if the status is "STATIC_TRX_EXPIRED": Will reset the trx expiration time to desired amount
6) Multiple payment, fixed amount, with expiration (muliple payment with fixed amount)
// Payload example
{
"partner_user_id":"testing-va",
"bank_code": "013",
"amount": 10000,
"is_open": false,
"is_single_use" : false,
"is_lifetime": false,
"expiration_time": 50000,
"trx_expiration_time" : 100,
"username_display": "Transfez testing",
"partner_trx_id": "TRX0001",
"virtual_account": "746100000000007",
"callback_url" : "https://staging.api.com/callback"
}
Expiration Behavior
- Create:
- Can be set to expire the whole VA and cannot be reactivated
- Update:
- If the status is "WAITING_PAYMENT" OR "STATIC_TRX_EXPIRED" OR "PAYMENT_DETECTED": Will change the expiration time from now to desirable minute
- If the status is "EXPIRED": Not applicable
Transaction Expiration Behavior:
- Create
- Can be set to expire the transaction only, but can be reactivated
- Will copy the expiration_time if not set
- Update
- If the status is "WAITING_PAYMENT" OR "PAYMENT_DETECTED": Will extend the trx expiration time,
- if the status is "STATIC_TRX_EXPIRED": Will reset the trx expiration time to desired amount
7) Single payment, fixed amount, no expiration (One time payment with fixed amount)
// Payload example
{
"partner_user_id":"testing-va",
"bank_code": "013",
"amount": 10000,
"is_open": false,
"is_single_use" : true,
"is_lifetime": true,
"expiration_time": 50000,
"trx_expiration_time" : 100,
"username_display": "Transfez testing",
"partner_trx_id": "TRX0001",
"virtual_account": "746100000000007",
"callback_url" : "https://staging.api.com/callback"
}
Expiration Behavior
- Create: NOT APPLICABLE
- Update: NOT APPLICABLE
Transaction Expiration Behavior:
- Create
- Can be set to expire the transaction only, but can be reactivated
- The transaction will remain active for lifetime is set to -1
- Update
- If the status is "WAITING_PAYMENT": Will extend the trx expiration time ,
- If the status is "STATIC_TRX_EXPIRED": Will reset the trx expiration time to desired amount
- If the status is "COMPLETE": not applicable
8) Single payment, fixed amount, with expiration (One time payment with fixed amount)
// Payload example
{
"partner_user_id":"testing-va",
"bank_code": "013",
"amount": 10000,
"is_open": false,
"is_single_use" : true,
"is_lifetime": false,
"expiration_time": 50000,
"trx_expiration_time" : 100,
"username_display": "Transfez testing",
"partner_trx_id": "TRX0001",
"virtual_account": "746100000000007",
"callback_url" : "https://staging.api.com/callback"
}
Expiration Behavior
- Create:
- can be set to expire the whole VA and cannot be reactivated
- Update:
- If the status is "WAITING_PAYMENT" OR "STATIC_TRX_EXPIRED": Will Will change the expiration time from now to desirable minute
- If the status is "COMPLETE" OR "EXPIRED": Not applicable
Transaction Expiration Behavior:
- Create
- Can be set to expire the transaction only, but can be reactivated
- Will copy the expiration_time if not set
- Update
- If the status is "WAITING_PAYMENT": Will extend the trx expiration time ,
- If the status is "STATIC_TRX_EXPIRED": Will reset the trx expiration time to desired amount
- If the status is "COMPLETE" OR "EXPIRED": not applicable
Payment Simulation
//Payload
{
"amount": 10000
}
- If is_open is true, can input any amount in the allowed range
- If is_open is false, must be the same as created amount
VA Status
State | Description |
---|---|
WAITING_PAYMENT | Initial State, waiting for payment |
STATIC_TRX_EXPIRED | VA payment time has ended and can be reactivated |
EXPIRED | The whole VA time has ended, cannot be reactivated |
COMPLETE | Payment has been received (for single use) |
PAYMENT_DETECTED | Payment has been received (for multiple use) |
VA Banks
Bank | Bank Code | Open Prefix | Closed Prefix | Note |
---|---|---|---|---|
BNI | 009 | Not Applicable | Not Applicable | Doesn't accept closed multiple payment |
BRI | 002 | Not Applicable | 14316 | |
Permata | 013 | 7461 | 7444 | |
CIMB Niaga | 022 | 9319 | 9319 | |
Mandiri | 008 | 88254023 | 88253023 | Custom Number Not Applicable |
BTPN | 213 | Not Applicable | Not Applicable | Custom Number Not Applicable |
Danamon | 011 | 7763 | 7763 | |
BSI | 451 | Not Applicable | Applicable | BSI Virtual Account are not automatically activated. Simply request assistance from Jack support team to activate your Virtual Account. |
BCA | 014 | Applicable | Applicable | BCA Virtual Account are not automatically activated. Simply request assistance from Jack support team to activate your Virtual Account. |
Callbacks
Will be sent when EXPIRED, STATIC_TRX_EXPIRED, COMPLETE, PAYMENT_DETECTED
// EXPIRED & STATIC_TRX_EXPIRED
{
"id": 81225270,
"va_status": "EXPIRED",
"va_number": "895280066160239",
"partner_user_id": "test-va-0029",
"bank_code": "008",
"amount": 10000,
"is_open": false,
"is_single_use": true,
"expiration_time": 1,
"is_lifetime": false,
"username_display": "va name",
"trx_expiration_time": 1,
"partner_trx_id": "TRX-test-0029",
"created_at": "2023-08-11T15:58:56.095+07:00",
"updated_at": "2023-08-11T15:58:56.189+07:00",
"counter_incoming_payment": 0,
"callback_url": "https://staging.com/api/callback",
"amount_detected": 0
}
// COMPLETE & PAYMENT_DETECTED
{
"id": 1,
"va_number_id": "81225270",
"amount": 10000,
"success": true,
"tx_date": "2023-08-11T15:58:56.095+07:00",
"va_data": {
"id": 81225270,
"va_status": "COMPLETE",
"va_number": "895280066160239",
"partner_user_id": "test-va-0029",
"bank_code": "008",
"amount": 10000,
"is_open": false,
"is_single_use": true,
"expiration_time": 1,
"is_lifetime": false,
"username_display": "va name",
"trx_expiration_time": 1,
"partner_trx_id": "TRX-test-0029",
"created_at": "2023-08-11T15:58:56.095+07:00",
"updated_at": "2023-08-11T15:58:56.189+07:00",
"counter_incoming_payment": 1,
"callback_url": "https://staging.com/callback",
"amount_detected": 10000
}
}
Response Parameter
Field | Description |
---|---|
data | VA Number data |
id | unique ID from transfe |
va_status | Status of the VA Number |
va_number | VA Number |
bank_code | Bank code associated with the VA Number |
amount | VA Transaction Amount |
is_open | Indicates if the VA Number is open |
is_single_use | Indicates if the VA Number is for single use |
is_lifetime | Indicates if the VA Number is for lifetime use |
expiration_time | Expiration time of the VA Number |
trx_expiration_time | Transaction expiration time |
partner_trx_id | Partner transaction ID associated with the VA Number |
created_at | Creation date and time |
counter_incoming_payment | Number of incoming payments to this VA |
callback_url | Callback URL associated with the VA Number |
amount_detected | Cumulative amount that has been paid to this VA |
bank_name | Name of the bank associated with the VA Number |
username_display | Display name or username |
Error Message
//Payload
{
"status": 422,
"message": {
"invalid_parameter": [
"partner_user_id still active",
"partner_trx_id still active",
"Amount has to be 0"
]
}
}
Message:
Method | Validation | Error Message |
---|---|---|
Invalid parameter | Wrong Prefix | Prefix not recognized |
Invalid parameter | Amount out of range | Invalid Amount |
Invalid parameter | Duplicate partner_user_id | Partner_user_id still active |
Invalid parameter | Duplicate partner_trx_id | Partner_trx_id still active |
Invalid parameter | Amount more than 0 (is_open true only) | Amount has to be 0 |
Invalid parameter | Trx_expiration_time more than expiration_time | Trx_expiration_time invalid value |
Invalid parameter | Wrong bank code | bank not available |
Invalid parameter | Other invalid params | Invalid Parameter |
Invalid parameter | Wrong format | VA Number invalid |
Invalid parameter | Wrong format | Invalid username_display |
Invalid parameter | Duplicate va_number | VA Number still active |
Internal Problem | General error | General error |
Internal Problem | Failed to create | Failed to create |
Internal Problem | Failed to update | Failed to update |
//Payload
{
"status": 422,
"message": {
"internal_problem": [
"failed to create",
]
}
}
Get All VA
// Response
{
"status": 200,
"page": 1,
"per_page": 3,
"total_page": 2,
"data": [
{
"id": 3658,
"va_status": "WAITING_PAYMENT",
"va_number": "143170066857682",
"partner_user_id": "TEST-mandirii-05",
"bank_code": "002",
"amount": 0,
"is_open": true,
"is_single_use": false,
"expiration_time": -1,
"is_lifetime": true,
"username_display": "Testing multiple BNI 5",
"trx_expiration_time": -1,
"partner_trx_id": "hahaha06",
"created_at": "2023-08-30T14:16:25.033+07:00",
"counter_incoming_payment": 0,
"callback_url": "https://staging.api.com/callback",
"amount_detected": 0,
"bank_name": "Bank BRI"
}
]
}
Response Parameter
Field | Description |
---|---|
id |
unique ID from transfez |
va_status |
status of VA |
partner_id |
id of partner |
counter_incoming_payment |
Count total incoming payment of VA |
balance |
Balance data |
partner_user_id |
Partner unique ID for specific user |
bank_code |
Bank code based on list |
amount |
VA amount, if is_open is true, the amount has to be 0 (zero) |
is_open |
True = open amount, false = closed amount |
is_single_use |
True = single use, false = multiple use |
is_lifetime |
True = static VA, false = dynamic VA |
expiration_time |
VA expiration time in minutes. If is_lifetime is true, this parameter will be ignored |
trx_expiration_time |
Transaction expiration time in minutes, must be lower than expiration_time . If not set, this parameter will copy the expiration_time |
username_display |
VA name |
partner_trx_id |
Partner unique identifier for VA |
va_number |
Custom VA number only for selected banks. If not set, the number will be randomly generated. Format: 74610000000007 |
callback_url |
Partner URL for callbacks |
Show VA
//Response
{
"status": 200,
"data": {
"id": 3658,
"va_status": "WAITING_PAYMENT",
"va_number": "143170066857682",
"partner_user_id": "TEST-mandirii-05",
"bank_code": "002",
"amount": 0,
"is_open": true,
"is_single_use": false,
"expiration_time": -1,
"is_lifetime": true,
"username_display": "Testing multiple BNI 5",
"trx_expiration_time": -1,
"partner_trx_id": "hahaha06",
"created_at": "2023-08-30T14:16:25.033+07:00",
"counter_incoming_payment": 0,
"callback_url": "https://staging.api.com/callback",
"amount_detected": 0,
"bank_name": "Bank BRI",
"balance": {
"currency": "IDR",
"balance": 20000000,
"name": "MAIN_WALLET"
}
}
}
Response Parameter
Field | Description |
---|---|
data | VA Number data |
id | unique ID from transfe |
va_status | Status of the VA Number |
va_number | VA Number |
bank_code | Bank code associated with the VA Number |
amount | VA Transaction Amount |
is_open | Indicates if the VA Number is open |
is_single_use | Indicates if the VA Number is for single use |
is_lifetime | Indicates if the VA Number is for lifetime use |
expiration_time | Expiration time of the VA Number |
trx_expiration_time | Transaction expiration time |
partner_trx_id | Partner transaction ID associated with the VA Number |
created_at | Creation date and time |
counter_incoming_payment | Number of incoming payments to this VA |
callback_url | Callback URL associated with the VA Number |
amount_detected | Cumulative amount that has been paid to this VA |
bank_name | Name of the bank associated with the VA Number |
username_display | Display name or username |
Get All VA Transactions
//Response
{
"status": 200,
"page": 1,
"per_page": 10,
"total_page": 1,
"incoming_payment_data": {
"total_incoming_money": 10000,
"total_payment": 1
},
"data": [
{
"id": 986,
"va_number_id": "3659",
"amount": 10000,
"success": true,
"tx_date": "2023-08-25T11:00:12.000+07:00",
"trx_id": "50f5d046-8640-4c5b-94f1-49840a9c6906",
"va_number": {
"id": 3659,
"va_status": "WAITING_PAYMENT",
"va_number": "143160066092958",
"partner_user_id": "TEST-closed-05",
"bank_code": "002",
"amount": 100000,
"is_open": false,
"is_single_use": true,
"expiration_time": -1,
"is_lifetime": true,
"username_display": "Testing BRI 5",
"trx_expiration_time": -1,
"partner_trx_id": "hahaha069",
"created_at": "2023-08-30T14:55:03.492+07:00",
"counter_incoming_payment": 0,
"callback_url": "https://staging.api.com/callback",
"amount_detected": 0,
"bank_name": "Bank BRI"
}
}
]
}
Response Parameter
Field | Description |
---|---|
page | Page number |
per_page | Number of items per page |
total_page | Total number of pages |
status | Status of the transaction |
incoming_payment_data | Data related to incoming payments |
total_incoming_money | Total incoming money |
total_payment | Total payment |
data | Transaction data |
id | Unique identifier VA Transaction (integer) |
va_number_id | VA Number ID (Integer) |
amount | VA Transaction Amount (Integer) |
success | Transaction success status (boolean) |
tx_date | Transaction date (DateTime ISO8601) |
va_number | VA number data (object) |
Show VA Transactions
//Response
{
"status": 200,
"data": {
"id": 986,
"va_number_id": "3659",
"amount": 10000,
"success": true,
"tx_date": "2023-08-25T11:00:12.000+07:00",
"trx_id": "50f5d046-8640-4c5b-94f1-49840a9c6906",
"va_number": {
"id": 3659,
"va_status": "WAITING_PAYMENT",
"va_number": "143160066092958",
"partner_user_id": "TEST-closed-05",
"bank_code": "002",
"amount": 100000,
"is_open": false,
"is_single_use": true,
"expiration_time": -1,
"is_lifetime": true,
"username_display": "Testing BRI 5",
"trx_expiration_time": -1,
"partner_trx_id": "hahaha069",
"created_at": "2023-08-30T14:55:03.492+07:00",
"counter_incoming_payment": 0,
"callback_url": "https://staging.api.com/callback",
"amount_detected": 0,
"bank_name": "Bank BRI"
}
}
}
Response Parameter
data:
Field | Description |
---|---|
id | Unique identifier VA Transaction (integer) |
va_number_id | VA Number ID (Integer) |
amount | VA Transaction Amount (Integer) |
success | Transaction success status (boolean) |
tx_date | Transaction date (DateTime ISO8601) |
va_number | VA number data (object) |
Callback
POST {CALLBACK_URL} HTTP/1.1
{
body :
{>
"id": {{ID}},
"reference_id": "TRX124",
"callback_url": {{CALLBACK_URL}},
"payer_id": "1",
"mode": "DESTINATION",
"sender": {
"firstname": "Bryson Small",
"lastname": "Deleon",
"country_iso_code": "FRA",
},
"source": {
"amount": "null",
"currency": "EUR",
"country_iso_code": "FRA",
},
"destination": {
"amount": "1000000",
"currency": "IDR"
},
"beneficiary": {
"firstname": "Jane",
"lastname": "Doe",
"account": "1172993826"
},
"compliance": {
"source_of_funds": "SALARY_INCOME",
"beneficiary_relationship": "PARENT_GRANDPARENT",
"purpose_of_remittance": "FAMILY_SUPPORT"
}
"created_at": "2020-04-09T10:02:30.150Z",
"updated_at": "2020-04-09T11:14:59.896Z",
"state_id": "1",
"state": "created",
"amount": "1018000",
"paid_at": "2020-04-09T10:52:37.000Z",
"rate": "18000.0",
"fee": "18000.0"
}
}
As the transfer order is being processed, changes in status will be notified in realtime if a callback URL was provided.
This endpoint must be implemented by the sending partner, which should expect an HTTP POST
request containing a transaction object represented in JSON.
Upon sucessful receipt of data, the callback endpoint should respond with an HTTP 2XX
. In the event that the Money Transfer platform did not receive this response, callback notifications will be retried several times, beyond which, the transaction status will have to be queried by the sending partner
Pagination
GET
/{resource}?page=1&per_page=50
HTTP
/
1.1
X-Total
:
1
X-Total-Pages
:
1
X-Per-Page
:
50
X-Page
:
1
API resources supporting bulk fetches via "list" API methods will be returned in a paginated fashion.
Input Parameters
Field | Required | Type | Description |
---|---|---|---|
page
|
No | Integer | Page number |
per_page
|
No | Integer | Number of results per page (default 50, max 100) |
Testing
Here is a list of dummy bank account number that can be used for testing success transaction in the Sandbox Environment, please make sure that you do not use this on Production mode.
Input
Beneficiary Bank | Beneficiary Account | Beneficiary Name |
---|---|---|
Bank Mandiri | 1111222233333 | Mandiri Simulator A |
2222333344444 | Mandiri Simulator B | |
Bank Permata | 4111111111 | Permata Simulator A |
Bank Danamon | 111112222222 | Danamon Simulator A |
000001111111 | Danamon Simulator B | |
000002222222 | Danamon Simulator C | |
Bank BNI | 00010000 | BNI Simulator A |
Bank BRI | 111112222233333 | BRI Simulator A |
Bank BCA | 0011223344 | BCA Simulator A |
Bank CIMB | 222233334444 | CIMB Simulator A |
333344445555 | CIMB Simulator B |
Enumerations
A number of resource fields will only accept a list of known values, as outlined in this section.
Quotation Mode
Mode | Description |
---|---|
SOURCE
|
Quotation created by specifying desired source |
DESTINATION
|
Quotation created by specifying desired destination |
Gender
Gender | Description |
---|---|
MALE
|
Male |
FEMALE
|
Female |
Transaction Status Class
Status Class | Message |
---|---|
1
|
created |
2
|
confirmed |
3
|
submitted |
4
|
canceled |
5
|
completed |
6
|
declined |
Beneficiary Relationships
{
"status": 200,
"data": {
"beneficiary_relationships": [
{
"name": "Others not listed\nOthers not listed",
"code": "OTHER"
},
{
"name": "Supplier",
"code": "SUPPLIER"
},
{
"name": "Customer",
"code": "CUSTOMER"
},
{
"name": "Business partner",
"code": "BUSINESS_PARTNER"
},
{
"name": "Friend",
"code": "FRIEND"
},
....
]
}
}
Beneficiary Relationships | Description |
---|---|
MYSELF |
Myself |
SPOUSE |
Spouse |
CHILDREN |
Children |
PARENT_GRANPARENT |
Parent/Grandparent |
SIBLING_BROTHER_SISTER |
Sibling/brother/sister |
RELATIVE_UNCLE_AUNTIE_COUSIN |
Relative/uncle/auntie/cousin |
FRIEND |
Friend |
BUSINESS_PARTNER |
Business partner |
CUSTOMER |
Customer |
SUPPLIER |
Supplier |
OTHER |
Others not listed |
Source of Funds
{
"status": 200,
"data": {
"source_of_funds": [
{
"name": "Third Party",
"code": "THIRD_PARTY",
},
{
"name": "Other",
"code": "OTHER",
},
{
"name": "Loan Facility",
"code": "LOAN_FACILITY",
},
{
"name": "Retirement Funds",
"code": "RETIREMENT_FUNDS",
},
{
"name": "Gift",
"code": "GIFT",
},
{
"name": "Savings",
"code": "SAVINGS",
},
...
]
}
}
Source of funds | Description |
---|---|
SALARY_INCOME |
Salary/Income |
BUSINESS_INVESTMENT |
Business/investment |
SAVINGS |
Savings |
GIFT |
Gift |
RETIREMENT_FUNDS |
Retirement Funds |
LOAN_FACILITY |
Loan Facility |
THIRD_PARTY |
Third Party |
Purpose of Remittances
{
"status": 200,
"data": {
"remittances": [
{
"name": "Other purposes",
"code": "OTHER",
},
{
"name": "Consultancy/Advisory Fees",
"code": "CONSULTANCY_ADVISORY_FEES",
},
{
"name": "Personal transfer",
"code": "PERSONAL_TRANSFER",
},
{
"name": "General monthly living expenses",
"code": "GENERAL_MONTHLY_LIVING_EXPENSES",
},
{
"name": "Property Purchase",
"code": "PROPERTY_PURCHASE",
},
...
]
}
}
For Local Transfer
Purpose of Remittances | Description |
---|---|
BUSINESS |
Transactions made for business purposes. |
EDUCATION |
Transactions made for educational payments, such as for schools or universities. |
OTHERS |
Transactions made for purposes other than business or education. |
For International Transfer
Purpose of Remittances | Description |
---|---|
FAMILY_SUPPORT |
Family support |
TUITION_FEES_STUDYING_EXPENSES |
Tuition fees or studying expenses |
CHARITABLE_DONATIONS |
Charitable donations |
TRAVEL_EXPENSES |
Travel expenses |
MEDICAL_EXPENSES |
Medical expenses |
PAY_FOR_GOODS |
Pay for goods |
PAY_FOR_SERVICES |
Pay for services |
OTHER_BUSINESS_EXPENSES |
Other business expenses |
PROPERTY_RENTAL |
Property Rental |
PROPERTY_PURCHASE |
Property Purchase |
GENERAL_MONTHLY_LIVING_EXPENSES |
General monthly living expenses |
PERSONAL_TRANSFER |
Personal transfer |
OTHER |
Other purposes |
CONSULTANCY_ADVISORY_FEES |
Consultancy/Advisory Fees |
Occupation
Code | Description |
---|---|
self_employed |
Self Employed |
private_employee |
Private Employee |
housewife |
Housewife |
foreign_domestic_worker |
Foreign Worker |
government_employee |
Government Employee |
member_of_legislative |
Member of the Legislative |
army_police |
Army / Police |
lecturer_teacher |
Lecturer / Teacher |
retired |
Retired |
medical_doctor |
Medical Doctor |
lawyer_public_notary |
Lawyer / Public Notary |
auditor_accountant_tax_consultant |
Auditor / Accountant / Tax Consultant |
financial_planner |
Financial Planner |
unemployed |
Unemployed |
students |
Student |
expatriate_employee |
Expatriate Employee |
foreign_businessman |
Foreign Businessman |
foreign_student |
Foreign Student |
trustee_investment_manager |
Trustee / Investment Manager |
management_foundation |
Management of a Foundation |
Business Activity
Id | Name |
---|---|
1 |
Consulting, IT, or business service |
2 |
Design, marketing, or communication |
3 |
Travel, accommodation, or transport |
4 |
Entertainment, art, or photography |
5 |
Health, sport, or personal care |
6 |
Food, beverages or tobacco |
7 |
Other retail, wholesale, or manufacturing |
8 |
Financial services, product or holding companies |
9 |
Real estate or construction |
10 |
Education or learning |
11 |
Charity or non profit |
12 |
Utilities and public government services |
13 |
Other, not listed above |
14 |
Logistics |
ID Type
Code | Description |
---|---|
NATIONAL_ID |
Indonesian identity card (KTP) |
DRIVING_LICENSE |
Indonesian Driving License (SIM) |
PASSPORT |
Passport |
Parameters
Partner
Field | Type | Description |
---|---|---|
id |
Integer | Partner ID |
name |
String | Your company name |
address |
String | Your company address |
phone |
String | Your company phone number |
email_pic |
String | Your company email's CC for email notifications. |
api_user_id |
Integer | Your main API user's ID |
created_at |
Timestamp | Creation date in HTTP format |
updated_at |
Timestamp | Last updated date in HTTP format |
Balance
Field | Type | Description |
---|---|---|
id |
Integer | Balance ID |
currency |
String | Your balance currency. Defaulted to IDR |
balance |
Decimal | Your current balance |
is_active |
Boolean | Status of your company in Jack service |
name |
String | Your balance name |
MAIN_WALLET: A deposit-based fund source for disbursement. You can add money to this wallet by topping up through the available Virtual Account. | ||
FACILITATOR_BANK: A fund source for disbursement that is connected to your bank account, integrated with JACK’s system. | ||
avail_balance |
Decimal | Your amount of balance in an account that is currently accessible for use. It is the portion of the account balance that is free from holds, pending transactions, or other restrictions, making it readily available for immediate transactions |
user_id |
Integer | Index number of the user |
created_at |
Timestamp | Creation date in HTTP format |
updated_at |
Timestamp | Last updated date in HTTP format |
partner_id |
Integer | Index number of the partner |
Errors
HTTP Response
Uses standard HTTP response codes to indicate whether an API request is successful or not.
Status | Description |
---|---|
200 |
OK |
400 |
Bad Request: Request was malformed |
401 |
Unauthorized: Credentials missing or invalid |
422 |
Unprocessable Entity |
404 |
Not Found: Resource doesn't exist |
500 |
Server Error: Error occurred |
Details will always be contained within the HTTP body.
Handle Timeout and Server Error
Encountering a timeout/server error response during the creation or confirmation of transactions can pose challenges and disrupt the seamless flow of operations. Timeout or server errors can occur due to various reasons, such as network connectivity issues or system overload. It's important to note that, in many cases, a timeout or 5xx error response does not necessarily mean that the transaction itself has failed.
However, there are steps you can take to effectively handle timeout or 5xx error response transactions and ensure a smooth process.
To begin, check the status of the transaction by hitting the "Get Transaction by Reference ID" endpoint. If the state is "created," it indicates that the transaction has already been created in our system. In this case, reconfirm the transaction by hitting the “Confirm Transaction” endpoint, or clicking the Submit Transaction button in Jack Portal, to resume the process.
On the other hand, if the state is “submitted”, "confirmed," "completed," or "declined," it indicates that the transaction has already been processed by our system. In such cases, there is no need to reconfirm. Instead, update the transaction state in your system to reflect the outcome accurately. This step ensures synchronization between your system and ours, preventing any inconsistencies or discrepancies.
API Error Code
In case a transaction is declined, we will send an error_code, error_message, and error description (we will always send error_description key, but the value is optional) on payload callback, explaning what went wrong. Here is a list of codes/messages.
Local Transfer
Code | Error Message |
---|---|
2 | Invalid destination account number |
4 | General error |
5 | Timeout error by bank |
8 | Bank cannot authenticate request |
11 | Sender and receiver account are the same |
13 | Rejected by Bank |
14 | Insufficient Balance |
International Transfer
Code | Error Message |
---|---|
7000 |
Unexpected error, please contact our support team |
7001 |
Invalid beneficiary/sender data |
7002 |
Rejected by partner |
7003 |
Timeout error by Partner |
7004 |
Payload validation failed |
7005 |
Expired by partner |
7006 |
Identical request already processed before |
7007 |
Bank cannot authenticate request |
7008 |
Declined by partner |
Errors in Validation Bank Account
If there is an error in bank account validation, we will return a message on response with 422 status code. Here are the list of validation messages.
Error Message | Explanation |
---|---|
Bank is not included in the list | Bank name not found, you can find all supported local banks here |
Account can't be blank, is too short (minimum is 6 characters), is not a number | Account number is required to match our requirements |
Bank can't be blank | Bank is required as a parameter, you can find all supported local banks here |
Account is too long (maximum is 20 characters) | Account number is too long. Please shorten it to a maximum of 20 characters |
Account is too short (minimum is 6 characters) | Account number is too short. Please lengthen it to be a minimum of 6 characters |
Account does not exist | Account number is not found when we inquire it to the relevant bank |
Payer is inactive | The bank has been deactivated |
//Response Example
//Error Response
{
"status": 422,
"message": {
"error_message": "An error occurred when doing account validation",
"errors": {
"bank": [
"is not included in the list"
],
"account": []
}
}
}
{
"status": 422,
"message": {
"error_message": "An error occurred when doing account validation",
"errors": {
"bank": [
"can't be blank"
],
"bank_and_branch_code": [
"can't be blank",
"is the wrong length (should be 7 characters)"
],
"account": []
}
}
}
{
"status": 422,
"message": {
"error_message": "An error occurred when doing account validation",
"errors": {
"account": [
"can't be blank",
"is too short (minimum is 6 characters)",
"is not a number"
]
}
}
}
{
"status": 422,
"message": {
"error_message": "An error occurred when doing account validation",
"errors": {
"bank": [
"can't be blank"
]
}
}
}
{
"status": 422,
"message": {
"error_message": "An error occurred when doing account validation",
"errors": {
"account": [
"is too long (maximum is 20 characters)"
]
}
}
}
{
"status": 422,
"message": {
"error_message": "An error occurred when doing account validation",
"errors": {
"account": [
"is too short (minimum is 6 characters)"
]
}
}
}
{
"status": 422,
"message": {
"error_message": "An error occurred when doing account validation",
"errors": {
"account": [
"Account does not exist"
]
},
}
}
{
"status": 422,
"message": {
"error_message": "Payer is inactive",
"errors": {}
}
}
Errors in Creating Transaction
If transaction failed to be created or confirmed, we will return a message on response with 422 status code. Here are the list of validation messages.
Error Message | Explanation |
---|---|
reference_id has already been taken |
Reference ID must be unique, you have previously used this reference id |
Beneficiary firstname and account required / source currency and country_iso_code required / destination currency required | There is a validation for all required fields (sender, beneficiary, source, destination object) |
Beneficiary account can't be blank, is too short (minimum is 6 characters), is not a number | Beneficiary account is required to match our requirements |
Beneficiary account is too long (maximum is 20 characters), and is not a number | Beneficiary account is too long or must be a number |
Amount is not a number | Source or destination amount must be a number |
Payer must exist / payer_id not found | Payer is required as a parameter, you can find all supported payer here |
Minimum amount limit not reached | We will return this error response if the transfer amount requested is below the minimum amount |
Maximum amount limit exceeded | We will return this error response if the transfer amount requested is below the maximum amount |
Beneficiary name/account number denied compliance | Compliance validation has resulted in the denial of the beneficiary's name or account number |
Insufficient amount Balance | There is an insufficient amount balance when confirming a transaction |
Payer is inactive | The bank has been deactivated |
Unable to create or confirm any transactions. Your partner is currently on hold. please contact your account manager. | Your company account is currently on hold. please contact your account manager. |
Changelog
Friday, 19 Apr 2024
- Add error responses in errors in bank account validation
- Add hyperlink to errors in bank account validation in local transfer
Thursday, 5 Oct 2023
- Add error message payer is inactive in validation bank account
- Add error message payer is inactive and partner on hold in creating transaction
Tuesday, 3 Oct 2023
- Separate errors in validation bank account and create transaction
- Add error description on error transaction callback / transaction detail