NAV Navbar
JSON

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:

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


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

GET /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

GET /my_balances


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

GET /transactions_elastic
//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

status

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

GET /transactions/:transaction_id


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

status

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

GET /transactions/:reference_id/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

status

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

POST /transactions


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:

  1. Sender form
  2. 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

status

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

POST /transactions/:transaction_id/confirm


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

POST /transactions/:transaction_id/cancel


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

GET /payers


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

GET /validation_bank_account?bank_name={bank_name}&account_number={account_number}


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

GET /transactions
//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

status

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

GET /transactions/:transaction_id


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

status

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

GET /transactions/:reference_id/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

status

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

POST /transactions


To create a transaction there are some points needed to be taken. Every destination country should have different requirement than the others based on:

  1. Sender form
  2. 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
Field Description
sender_city Sender city, refer here
sender_province Sender province, refer here
local_bank Local bank of the sender, refer here
id_type ID type of the sender, refer here
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
Field Description
bank_id Bank of the receiver, refer here
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

status

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

POST /transactions/:transaction_id/confirm


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

status

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

GET /payers/cbse
//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

GET /payers/:payer_id/rates


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

status

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

GET /payers/:payer_id/banks


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

GET /local_banks


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

GET /payers/:payer_id/attribute


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
Field Description
sender_city Sender city, refer here
sender_province Sender province, refer here
local_bank Local bank of the sender, refer 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
Field Description
bank_id Bank of the receiver, refer here

Get Sender Provinces

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

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

GET /swift-codes?swift_code_eq={{swift_code}}


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

POST /va_numbers
//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

PUT /va_numbers/:va_number


PUT /va_numbers/:partner_user_id


PUT /va_numbers/:id
//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:

  1. Create: NOT APPLICABLE
  2. Update: NOT APPLICABLE

Transaction Expiration Behavior:

  1. 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
  2. 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:

  1. Create: Can be set to expire the whole VA and cannot be reactivated
  2. 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:

  1. Create
    • Can be set to expire the transaction only, but can be reactivated
    • Will copy the expiration_time if not set
  2. 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:

  1. Create: NOT APPLICABLE
  2. Update: NOT APPLICABLE

Transaction Expiration Behavior:

  1. Create
    • Can be set to expire the transaction only, but can be reactivated
    • The transaction will remain active for lifetime is set to -1
  2. 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

  1. Create: Can be set to expire the whole VA and cannot be reactivated
  2. 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:

  1. Create
    • Can be set to expire the transaction only, but can be reactivated
    • Will copy the expiration_time if not set
  2. 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

  1. Create: NOT APPLICABLE
  2. Update: NOT APPLICABLE

Transaction Expiration Behavior:

  1. Create
    • Can be set to expire the transaction only, but can be reactivated
    • The transaction will remain active for lifetime is set to -1
  2. 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

  1. Create:
    • Can be set to expire the whole VA and cannot be reactivated
  2. 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:

  1. Create
    • Can be set to expire the transaction only, but can be reactivated
    • Will copy the expiration_time if not set
  2. 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

  1. Create: NOT APPLICABLE
  2. Update: NOT APPLICABLE

Transaction Expiration Behavior:

  1. Create
    • Can be set to expire the transaction only, but can be reactivated
    • The transaction will remain active for lifetime is set to -1
  2. 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

  1. Create:
    • can be set to expire the whole VA and cannot be reactivated
  2. 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:

  1. Create
    • Can be set to expire the transaction only, but can be reactivated
    • Will copy the expiration_time if not set
  2. 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

PUT /va_numbers/:id/pay_va


PUT /va_numbers/:va_number/pay_va


PUT /va_numbers/:partner_user_id/pay_va
//Payload
{
    "amount": 10000
}

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

GET /va_numbers/available_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

GET /list_virtual_acount
// 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

GET /va_numbers/:id
//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

GET /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

GET /va_transactions/:id
//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

GET /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

GET /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

GET /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

Thursday, 5 Oct 2023

Tuesday, 3 Oct 2023