Download OpenAPI specification:Download
CRING! Indonesia payment facilitator for banking ecosystem powered by SPE is a modern payment facilitator that enables businesses, platforms, and merchants to accept and manage payments seamlessly — all through a single, secure API.
Our mission is to simplify digital payments across Indonesia by offering scalable and developer-friendly tools for accepting payments (e.g., QRIS, virtual accounts, fund transfer) and managing settlements, notifications, and more.
CRING! provides a unified API platform for seamless access to multiple financial products and services from various banks in Indonesia.
The CRING! API is built on REST, uses standard HTTP status codes, and returns JSON-formatted responses. We designed it with simplicity and flexibility in mind — enabling you to integrate quickly and focus on growing your business.
CRING! acts as a centralized API gateway that connects clients (partners) with multiple banking services through a single integration point. The system enables clients to access various financial products—such as QRIS payments, Virtual Accounts (VA), Fund Transfer and Bank Account Validation— without needing to integrate separately with each bank.
In the context diagram:
The client sends API requests to CRING! for specific services (e.g., generating a QRIS, creating a VA, creating a Fund Transfer or Validating a bank account). CRING! will then forward the request to the appropriate bank according to the product type and return the result back to the client.
Follow this step-by-step guideline to begin integrating with our API.
New merchants will be onboarded through our official onboarding process in https://partner.cring.id/ which includes:
Once onboarding is successful, a verification email will be sent to the merchant's registered PIC to activate their CRING! Portal account.
The merchant PIC must verify their email using the link provided in the onboarding email. After successful verification, they will be able to log in to the CRING Portal.
API credentials (client_id and client_secret) can be obtained through:
These credentials must be stored securely, as they are used to authenticate with the CRING API.
Use your credentials to obtain an access token from our token endpoint Generate Access Token.
Upon successful onboarding, each client will receive a set of credentials for secure API access, consisting of:
client_id as username and the client_secret as password.⚠️ Never expose your credentials publicly. Store them securely and rotate them periodically.
Always match the credentials with the appropriate base URL based on your environment.
CRING! provides a simulation of payment processes for Virtual Account and QRIS. It allows users to test payment scenarios, verify integration workflows, and ensure system compatibility without interacting with live payment environments.
When integrating with CRING!, you may encounter errors during your API requests. These errors can generally be grouped into the following categories:
Content errors occur when the data in the API request is invalid in some way. These errors typically return an HTTP response with a 4xx status code. For example:
Network errors occur due to communication issues between the client and the server. These errors can include low-level issues, such as socket timeouts or connection problems. For example:
Server errors occur when there is a problem on CRING!'s servers. These errors return an HTTP response with a 5xx status code. While CRING! aims to minimize the occurrence of these errors, your integration should be prepared to handle them gracefully. For example:
The appropriate error handling approach depends on the type of error encountered:
The following table summarizes the response codes you may encounter when using CRING!'s APIs. Each code includes a description of the error and its potential cause.
| Bank | Http Code | Service Code | Case Code | Response Code | Response Message |
|---|---|---|---|---|---|
| Bank BNI | 200 | - | - | 20000 | Successful |
| Bank BNI | 202 | - | - | 20200 | Transaction Still in progress |
| Bank BNI | 202 | - | - | 20201 | Data not found |
| Bank BNI | 400 | - | - | 40000 | General request failed error, including message parsing failed. |
| Bank BNI | 400 | - | - | 40001 | Invalid Field Format |
| Bank BNI | 400 | - | - | 40002 | Missing or invalid format on mandatory field |
| Bank BNI | 400 | - | - | 40003 | Improper datetime field implementation |
| Bank BNI | 401 | - | - | 40100 | General unauthorized error (API is invalid, Oauth Failed, Verify Client Secret Failed, Client Forbiden Access API, Unknwon Client) |
| Bank BNI | 401 | - | - | 40101 | Invalid Token |
| Bank BNI | 403 | - | - | 40300 | Transaction Expired |
| Bank BNI | 403 | - | - | 40302 | Exceeds Transaction Limit |
| Bank BNI | 403 | - | - | 40314 | Insufficient Funds |
| Bank BNI | 404 | - | - | 40401 | Transaction Not Found |
| Bank BNI | 404 | - | - | 40412 | Invalid Bill/Virtual Account |
| Bank BNI | 404 | - | - | 40413 | Invalid Amount |
| Bank BNI | 404 | - | - | 40414 | The bill has been paid |
| Bank BNI | 404 | - | - | 40418 | Incosistent Request |
| Bank BNI | 404 | - | - | 40420 | Amount cannot be change |
| Bank BNI | 404 | - | - | 40411 | Invalid Card/Account/Customer [info]/Virtual Account |
| Bank BNI | 405 | - | - | 40500 | Request function is not support |
| Bank BNI | 409 | - | - | 40900 | Conflict |
| Bank BNI | 409 | - | - | 40902 | Duplicate Transaction |
| Bank BNI | 409 | - | - | 40901 | Duplicate Reference Number |
| Bank BNI | 500 | - | - | 50000 | General Error |
| Bank BNI | 500 | - | - | 50001 | Internal Server Error |
| Bank BNI | 504 | - | - | 50400 | Timeout |
| Bank BNI | 429 | - | - | 42900 | Too Many Requests |
| Bank BNI | 421 | - | - | 42110 | Exceed Daily Limit Transaction |
| BTN, Permata, Bank BNI (NEW) | 200 | any | 00 | 200XX00 | Successful |
| Bank BTN | 400 | any | 00 | 400XX00 | Bad Request / Parsing Error |
| Bank BTN, Permata | 400 | any | 01 | 400XX01 | Invalid Field Format |
| Bank BTN, Permata | 400 | any | 02 | 400XX02 | Invalid Mandatory Field |
| Bank BTN, Permata | 401 | any | 00 | 401XX00 | Unauthorized |
| Bank BTN, Permata | 401 | any | 01 | 401XX01 | Invalid Token (B2B) |
| Bank BTN | 401 | any | 02 | 401XX02 | Invalid Customer Token |
| Bank BTN | 401 | any | 03 | 401XX03 | Token Not Found (B2B) |
| Bank BTN | 401 | any | 04 | 401XX04 | Customer Token Not Found |
| Bank BTN | 403 | any | 00 | 403XX00 | Transaction Expired |
| Bank BTN | 403 | any | 02 | 403XX02 | Exceeds Transaction Amount Limit |
| Bank BTN | 403 | any | 04 | 403XX04 | Activity Count Limit Exceeded |
| Bank BTN | 403 | any | 05 | 403XX05 | Do Not Honor |
| Bank BTN | 403 | any | 09 | 403XX09 | Dormant Account |
| Bank BTN | 403 | any | 10 | 403XX10 | Need To Set Token Limit |
| Bank BTN | 403 | any | 14 | 403XX14 | Insufficient Funds |
| Bank BTN, Permata | 403 | any | 15 | 403XX15 | Transaction Not Permited |
| Bank BTN | 403 | any | 16 | 403XX16 | Suspend Transaction |
| Bank BTN | 403 | any | 17 | 403XX17 | Token Limit Exceeded |
| Bank BTN | 403 | any | 18 | 403XX18 | Inactive Card/Account/Customer |
| Bank BTN | 403 | any | 21 | 403XX21 | Set Limit Not Allowed |
| Bank BTN | 403 | any | 22 | 403XX22 | Token Limit Invalid |
| Bank BTN | 404 | any | 00 | 404XX00 | Invalid Transaction Status |
| Bank BTN | 404 | any | 01 | 404XX01 | Transaction Not Found |
| Bank BTN | 404 | any | 02 | 404XX02 | Invalid Routing |
| Bank BTN | 404 | any | 03 | 404XX03 | Bank Not Supported By Switch |
| Bank BTN | 404 | any | 04 | 404XX04 | Transaction Cancelled |
| Bank BTN | 404 | any | 07 | 404XX07 | Journey Not Found |
| Bank BTN | 404 | any | 11 | 404XX11 | Invalid Card/Account/Customer info/Virtual Account |
| Bank BTN, Permata | 404 | any | 12 | 404XX12 | Invalid Bill/Virtual Account |
| Bank BTN, Permata | 404 | any | 13 | 404XX13 | Invalid Amount |
| Bank BTN, Permata | 404 | any | 14 | 404XX14 | Paid Bill |
| Bank BTN | 404 | any | 16 | 404XX16 | Partner Not Found |
| Bank BTN | 404 | any | 19 | 404XX19 | Invalid Bill/Virtual Account |
| Bank BTN | 409 | any | 00 | 409XX00 | Conflict |
| Bank BTN | 409 | any | 01 | 409XX01 | Duplicate partnerReferenceNo |
| Bank BTN | 429 | any | 00 | 429XX00 | Too Many Requests |
| Bank BTN | 500 | any | 00 | 500XX00 | General Error |
| Bank BTN | 500 | any | 01 | 500XX01 | Internal Server Error |
| Bank BTN | 500 | any | 02 | 500XX02 | External Server Error |
| Bank Permata | 504 | any | 00 | 504XX00 | Timeout |
CRING provides a real-time Bank Account Validator API that allows clients to validate bank account numbers before initiating transactions. This feature is essential for ensuring that payment instructions are accurate, reducing failed transfers, and enhancing user confidence.
| Data | Param | Description |
|---|---|---|
| Status | BUKA | Bank account number is active, can receive transaction |
| Status | DORMANT | Bank account number in-active, can receive transaction |
| Status | TUTUP | Bank account number in-active, can't receive transaction |
| Type | DEP | Bank account number savings |
| Http Code | Response Code | Response Message |
|---|---|---|
| 400 | 40600 | Request Failed |
| 400 | 40609 | Not Allowed IP |
| 404 | 40901 | Invalid Param, data:{} |
| 422 | 42202 | The given data was invalid. |
| 500 | 50500 | Internal error |
🔍 Use this API to validate customer bank account details before initiating a transaction. By providing an account number the CRING! system will forward the request to the respective bank BNI and return validated account information such as account name and status.
| Authorization | string Example: Basic eyJraWQiOi...Jzc29zIiwiY Represents access_token of a request; string starts with keyword |
| accountNumber required | string Bank account Number |
{- "accountNumber": "0115476117"
}{- "customerName": "John Doe",
- "accountNumber": "0115476117",
- "currency": "IDR",
- "status": "BUKA",
- "type": "DEP"
}🔍 Use this API to validate customer bank account details before initiating a transaction. By providing an account number and optional bank code, the CRING! system will forward the request to the respective bank (e.g., BNI) and return validated account information such as account name and status.
| Authorization | string Example: Basic eyJraWQiOi...Jzc29zIiwiY Represents access_token of a request; string starts with keyword |
| accountNumber required | string Bank account Number |
| bankCode required | string <= 3 characters Bank Code, see |
{- "accountNumber": "0115476117",
- "bankCode": "014"
}{- "customerName": "John Doe",
- "bankName": "Bank Mandiri",
- "reffNum": "100000000097"
}CRING! supports QRIS (Quick Response Code Indonesian Standard) — a standardized QR code system mandated by Bank Indonesia to facilitate seamless and interoperable QR-based payments across Indonesia.
CRING! currently supports QRIS acquiring via the following banks:
This means that merchant QRIS issued via CRING! will be processed through these banks as acquirers, ensuring compatibility with a wide range of customer payment applications and wallets across Indonesia.
You can request a QRIS via the POST {{baseUrl}}/qr endpoint using your access token. Merchants onboarded through CRING! will automatically be mapped to one of the supported acquiring banks depending on the onboarding configuration and location.
| Bank | Http Code | Service Code | Case Code | Response Code | Response Message |
|---|---|---|---|---|---|
| Bank BTN, Permata, NOBU | 200 | any | 00 | 200XX00 | Successful |
| Bank BTN | 400 | any | 00 | 400XX00 | Bad Request / Parsing Error |
| Bank BTN, Permata, NOBU | 400 | any | 01 | 400XX01 | Invalid Field Format |
| Bank BTN, Permata, NOBU | 400 | any | 02 | 400XX02 | Invalid Mandatory Field |
| Bank BTN, Permata, NOBU | 401 | any | 00 | 401XX00 | Unauthorized |
| Bank BTN, Permata, NOBU | 401 | any | 01 | 401XX01 | Invalid Token (B2B) |
| Bank BTN | 401 | any | 02 | 401XX02 | Invalid Customer Token |
| Bank BTN | 401 | any | 03 | 401XX03 | Token Not Found (B2B) |
| Bank BTN | 401 | any | 04 | 401XX04 | Customer Token Not Found |
| Bank BTN | 403 | any | 00 | 403XX00 | Transaction Expired |
| Bank BTN | 403 | any | 02 | 403XX02 | Exceeds Transaction Amount Limit |
| Bank BTN | 403 | any | 04 | 403XX04 | Activity Count Limit Exceeded |
| Bank BTN | 403 | any | 05 | 403XX05 | Do Not Honor |
| Bank BTN | 403 | any | 09 | 403XX09 | Dormant Account |
| Bank BTN | 403 | any | 10 | 403XX10 | Need To Set Token Limit |
| Bank BTN | 403 | any | 14 | 403XX14 | Insufficient Funds |
| Bank BTN, Permata, NOBU | 403 | any | 15 | 403XX15 | Transaction Not Permited |
| Bank BTN | 403 | any | 16 | 403XX16 | Suspend Transaction |
| Bank BTN | 403 | any | 17 | 403XX17 | Token Limit Exceeded |
| Bank BTN | 403 | any | 18 | 403XX18 | Inactive Card/Account/Customer |
| Bank BTN | 403 | any | 21 | 403XX21 | Set Limit Not Allowed |
| Bank BTN | 403 | any | 22 | 403XX22 | Token Limit Invalid |
| Bank BTN | 404 | any | 00 | 404XX00 | Invalid Transaction Status |
| Bank BTN | 404 | any | 01 | 404XX01 | Transaction Not Found |
| Bank BTN | 404 | any | 02 | 404XX02 | Invalid Routing |
| Bank BTN | 404 | any | 03 | 404XX03 | Bank Not Supported By Switch |
| Bank BTN | 404 | any | 04 | 404XX04 | Transaction Cancelled |
| Bank BTN | 404 | any | 07 | 404XX07 | Journey Not Found |
| Bank BTN | 404 | any | 11 | 404XX11 | Invalid Card/Account/Customer info/Virtual Account |
| Bank BTN, Permata, NOBU | 404 | any | 12 | 404XX12 | Invalid Bill/Virtual Account |
| Bank BTN, Permata, NOBU | 404 | any | 13 | 404XX13 | Invalid Amount |
| Bank BTN, Permata, NOBU | 404 | any | 14 | 404XX14 | Paid Bill |
| Bank BTN | 404 | any | 16 | 404XX16 | Partner Not Found |
| Bank BTN | 404 | any | 19 | 404XX19 | Invalid Bill/Virtual Account |
| Bank BTN | 409 | any | 00 | 409XX00 | Conflict |
| Bank BTN | 409 | any | 01 | 409XX01 | Duplicate partnerReferenceNo |
| Bank BTN | 429 | any | 00 | 429XX00 | Too Many Requests |
| Bank BTN | 500 | any | 00 | 500XX00 | General Error |
| Bank BTN | 500 | any | 01 | 500XX01 | Internal Server Error |
| Bank BTN | 500 | any | 02 | 500XX02 | External Server Error |
🔲 Generate QRIS Code is used by merchants to generate a QRIS (Quick Response Code Indonesian Standard) code for accepting payments via supported acquirer banks.
Merchants can initiate a QR code creation request by submitting the required transaction and merchant data.
The generated QR can be either static or dynamic, depending on your business needs and integration setup.
📥 Request Requirements must contain the following information:
| Authorization | string Example: Basic eyJraWQiOi...Jzc29zIiwiY Represents access_token of a request; string starts with keyword |
| acquirerCode required | string Acquirer Code for BANK BTN is |
| type required | string QR Type. Only accepted D for Dynamic dan S for Static. Bank BTN accepted type D or S |
required | object |
| terminalId | string <= 16 characters Optional for BANK BTN. Terminal Id for QR Dynamic If there is no request value, it will automatically be generated from the system as A01 and for QR static will be generated as auto increment value start from 001, 002, etc. |
| channelName | string Optional. Channel name only accepted for Bank BTN. |
| tipType | string Optional. Type of Tip, value must be "01" for apps request customer filled tip amount, "02" for QR set fixed tip amount or "03" for QR set tip amount on percentage. |
| tipValue | string Optional. Amount of tip, this field will be mandatory if tipType was filled with "02" or "03". If tipType "02" then must be filled with amount follow rules of tip_type use 2 digits behind dot. |
| additionalInfo | string Optional Additional Info. Max length 100 characters. |
{- "acquirerCode": "200",
- "type": "D",
- "amount": {
- "value": "350000.00",
- "currency": "IDR"
}, - "terminalId": "A01",
- "channelName": "API",
- "tipType": "02",
- "tipValue": "1000.00",
- "additionalInfo": "Additional Info"
}{- "responseCode": "2004700",
- "responseMessage": "Successful",
- "partnerReferenceNo": "2020102900000000000001",
- "referenceNo": "2020102977770000000009",
- "qrCode": "00020101021226650013ID.CO.BTN.WWW0118936002001559920025021541123455992 \r\n00250303UKE51440014ID.CO.QRIS.WWW0215ID20222215193350303UKE52045992535100 \r\n005802ID5914AmandaFlorist6008SURABAYA61056018662120948800703A016304B0 D1",
- "merchantName": "PT Maju Jaya",
- "terminalId": "A01"
}This service used by merchant to check payment status QR based on reference number.
📥 Request Requirements must contain following information:
| acquirerCode required | string Acquirer Code. Refer to Acquirer Code (Acquirer Code). |
| partnerReferenceNo required | string Partner Reference Number from generate QR. |
| referenceNo | string Reference Number from generate QR. |
{- "acquirerCode": "200",
- "partnerReferenceNo": "2020102900000000000001",
- "referenceNo": "2020102977770000000009"
}{- "responseCode": "2005100",
- "responseMessage": "Successful",
- "partnerReferenceNo": "2020102900000000000001",
- "referenceNo": "2020102977770000000009",
- "transactionStatusDesc": "success",
- "paidTime": "2020-10-20T17:56:57+07:00",
- "amount": {
- "value": "350000.00",
- "currency": "IDR"
}, - "additionalInfo": {
- "customerNumber": "9595610000004712",
- "merchantId": "00007100010926",
- "issuerName": "BTN",
- "customerName": "John",
- "merchantPAN": "19007100010926"
}
}This endpoint is used to receive webhook notifications from CRING! when a customer client makes a payment via QRIS. The webhook is triggered when the payment is processed by the bank and forwarded to the client's system. The notification is considered successful only if the response returned to CRING! has a HTTP code of 200.
If the response does not return HTTP code 200, CRING! will retry sending the notification up to 5 times, with an interval of 1 minute between each attempt.
📥 Request Requirements must contain following information:
| Authorization | string Example: Basic eyJraWQiOi...Jzc29zIiwiY Represents access_token of a request; string starts with keyword |
| transactionId | string Transaction id. Optional field to identify transaction. |
| originalReferenceNo | string Reference Number. A unique number has been generated from BANK. |
| originalPartnerReferenceNo required | string A unique number generated by CRING! when the QR is created. This reference number is used to track the transaction from the moment the QR code is generated until the payment notification is received. Ensure to store this reference securely, as it will be included in the webhook notification when the payment is processed. |
| latestTransactionStatus | string Transaction status code |
| transactionStatusDesc | string Transaction status description |
| customerNumber | string Customer number |
| accountType | string Account Type of Client |
object | |
object |
{- "transactionId": "cb267ae5-4e9c-4a08-9a88-b031f1bddcff",
- "originalReferenceNo": "2020102977770000000009",
- "originalPartnerReferenceNo": "2020102900000000000001",
- "latestTransactionStatus": "00",
- "transactionStatusDesc": "success",
- "customerNumber": "93600911372344659",
- "accountType": "Savings Account",
- "amount": {
- "value": "350000.00",
- "currency": "IDR"
}, - "additionalInfo": {
- "referenceId": "3714130924",
- "merchantId": "00007100010926",
- "terminalId": "213141251124",
- "issuerName": "BTN",
- "customerName": "John",
- "merchantPAN": "19007100010926"
}
}{- "responseCode": "20000",
- "responseMessage": "Successful"
}CRING provides a seamless Virtual Account Credit service that allows partners to disburse funds directly to a designated virtual account across supported banks. This is typically used for:
CRING currently supports VA Credit to the following bank providers:
| Code | Name |
|---|---|
| 002 | BANK RAKYAT INDONESIA (BRI) |
| 009 | BANK NEGARA INDONESIA (BNI) |
| 013 | BANK PERMATA |
| 200 | BANK TABUNGAN NEGARA (BTN) |
The following table summarizes the response codes you may encounter when using CRING!'s APIs. Each code includes a description of the error and its potential cause.
| Http Code | Service Code | Case Code | Response Code | Response Message |
|---|---|---|---|---|
| 200 | - | - | 20000 | Successful |
| 202 | - | - | 20200 | Transaction Still in progress |
| 202 | - | - | 20201 | Data not found |
| 400 | - | - | 40000 | General request failed error, including message parsing failed. |
| 400 | - | - | 40001 | Invalid Field Format |
| 400 | - | - | 40002 | Missing or invalid format on mandatory field |
| 400 | - | - | 40003 | Improper datetime field implementation |
| 401 | - | - | 40100 | General unauthorized error (API is invalid, Oauth Failed, Verify Client Secret Failed, Client Forbiden Access API, Unknwon Client) |
| 401 | - | - | 40101 | Invalid Token |
| 403 | - | - | 40300 | Transaction Expired |
| 403 | - | - | 40302 | Exceeds Transaction Limit |
| 403 | - | - | 40314 | Insufficient Funds |
| 404 | - | - | 40401 | Transaction Not Found |
| 404 | - | - | 40412 | Invalid Bill Virtual Account |
| 404 | - | - | 40413 | Invalid Amount |
| 404 | - | - | 40414 | The bill has been paid |
| 404 | - | - | 40418 | Incosistent Request |
| 404 | - | - | 40420 | Amount cannot be change |
| 404 | - | - | 40411 | Invalid Card/Account/Customer [info]/Virtual Account |
| 405 | - | - | 40500 | Request function is not support |
| 409 | - | - | 40900 | Conflict |
| 409 | - | - | 40902 | Duplicate Transaction |
| 409 | - | - | 40901 | Duplicate Reference Number |
| 429 | - | - | 42900 | Too Many Requests |
| 421 | - | - | 42110 | Exceed Daily Limit Transaction |
| 422 | - | - | 42203 | The given data was invalid |
| 200 | any | 00 | 200XX00 | Successful |
| 202 | any | 00 | 202XX00 | Transaction still onprocess |
| 400 | any | 00 | 400XX00 | Bad Request / Parsing Error |
| 400 | any | 01 | 400XX01 | Invalid Field Format |
| 400 | any | 02 | 400XX02 | Invalid Mandatory Field |
| 401 | any | 00 | 401XX00 | Unauthorized |
| 401 | any | 01 | 401XX01 | Invalid Token (B2B) |
| 401 | any | 02 | 401XX02 | Invalid Customer Token |
| 401 | any | 03 | 401XX03 | Token Not Found (B2B) |
| 401 | any | 04 | 401XX04 | Customer Token Not Found |
| 403 | any | 00 | 403XX00 | Transaction Expired |
| 403 | any | 02 | 403XX02 | Exceeds Transaction Amount Limit |
| 403 | any | 04 | 403XX04 | Activity Count Limit Exceeded |
| 403 | any | 05 | 403XX05 | Do Not Honor |
| 403 | any | 09 | 403XX09 | Dormant Account |
| 403 | any | 10 | 403XX10 | Need To Set Token Limit |
| 403 | any | 14 | 403XX14 | Insufficient Funds |
| 403 | any | 15 | 403XX15 | Transaction Not Permited |
| 403 | any | 16 | 403XX16 | Suspend Transaction |
| 403 | any | 17 | 403XX17 | Token Limit Exceeded |
| 403 | any | 18 | 403XX18 | Inactive Card/Account/Customer |
| 403 | any | 21 | 403XX21 | Set Limit Not Allowed |
| 403 | any | 22 | 403XX22 | Token Limit Invalid |
| 404 | any | 00 | 404XX00 | Invalid Transaction Status |
| 404 | any | 01 | 404XX01 | Transaction Not Found |
| 404 | any | 02 | 404XX02 | Invalid Routing |
| 404 | any | 03 | 404XX03 | Bank Not Supported By Switch |
| 404 | any | 04 | 404XX04 | Transaction Cancelled |
| 404 | any | 07 | 404XX07 | Journey Not Found |
| 404 | any | 11 | 404XX11 | Invalid Card/Account/Customer info/Virtual Account |
| 404 | any | 12 | 404XX12 | Invalid Bill/Virtual Account |
| 404 | any | 13 | 404XX13 | Invalid Amount |
| 404 | any | 14 | 404XX14 | Paid Bill |
| 404 | any | 16 | 404XX16 | Partner Not Found |
| 404 | any | 19 | 404XX19 | Invalid Bill/Virtual Account |
| 409 | any | 00 | 409XX00 | Conflict |
| 409 | any | 01 | 409XX01 | Duplicate partnerReferenceNo |
| 429 | any | 00 | 429XX00 | Too Many Requests |
| 500 | any | 00 | 500XX00 | General Error |
| 500 | any | 01 | 500XX01 | Internal Server Error |
| 500 | any | 02 | 500XX02 | External Server Error |
| 504 | any | 00 | 504XX00 | Timeout |
This service is used by merchants to send transaction data. In return, the merchant will receive a BNI Virtual Account. CRING! will provide the Virtual Account Number through BNI E-Collection V2.
📥 Request Requirements must contain following information:
| Authorization | string Example: Basic eyJraWQiOi...Jzc29zIiwiY Represents access_token of a request; string starts with keyword |
| expiredDate required | string <date-time> Date and time when the Virtual Account expires and can no longer be used. The value must be at least 5 minutes later than the current server time (example: "2025-11-09T21:05:00+07:00") and no more than 50 years from now (example: "2075-11-09T21:00:00+07:00"). | ||||||||||||||
| amount required | string [ 1 .. 14 ] characters Virtual Account amount. Data only integer value without decimal and/or thousand separators. (ISO4217) | ||||||||||||||
| virtualAccountTrxType required | string Identifier payment type that must be:
| ||||||||||||||
| customerName required | string <= 30 characters Customer Name | ||||||||||||||
| customerPhone | string <= 30 digit characters Customer Phone number | ||||||||||||||
| customerEmail | string <email> Customer Email | ||||||||||||||
| accountType | string Identifier virtual account type that must be filled by | ||||||||||||||
| numberSuffix | string [ 1 .. 8 ] characters Suffix for Virtual Account Number | ||||||||||||||
| additionalInfo | object |
{- "expiredDate": "2022-01-01T00:00:00+07:00",
- "amount": 1000000,
- "virtualAccountTrxType": "va-closed-payment",
- "customerName": "John Doe",
- "customerPhone": "0818404379",
- "customerEmail": "john@customer.co.id",
- "accountType": "credit",
- "numberSuffix": "08184043",
- "additionalInfo": { }
}{- "responseCode": "20000",
- "responseMessage": "Successful",
- "paymentId": "5031794d2dda4b7ab054d4204cd56a32",
- "customerName": "John Doe",
- "customerPhone": "0818404379",
- "customerEmail": "john@customer.co.id",
- "expiredDate": "2022-01-01T00:00:00+07:00",
- "amount": 1000000,
- "trxId": "8e94695879e3400ca785b64db21bbb18",
- "virtualAccount": "8277770818404379",
- "virtualAccountTrxType": "va-closed-payment",
- "accountType": "credit",
- "desc": ""
}This service used by merchant to update transaction data. 📥 Request Requirements must contain following information:
| Authorization | string Example: Basic eyJraWQiOi...Jzc29zIiwiY Represents access_token of a request; string starts with keyword |
| expiredDate required | string The expiration date and time of the Virtual Account. It must not be earlier than January 1, 2000 (example: "2000-01-01T00:00:00Z") and must not exceed 50 years from the current server time (example: "2075-11-09T21:00:00+07:00"). Once expired, the Virtual Account can no longer be used. |
| paymentId required | string Unique ID generated by system for this object |
| amount | string [ 1 .. 14 ] characters Virtual Account amount. Data only integer value without decimal and/or thousand separators. (ISO4217) |
| customerName | string <= 30 characters Customer Name |
| customerPhone | string <= 30 digit characters Customer Phone number |
| customerEmail | string <email> Customer Email |
| additionalInfo | object |
{- "expiredDate": "2030-05-10T23:59:59+07:00",
- "paymentId": "5031794d2dda4b7ab054d4204cd56a32",
- "amount": 1000000,
- "customerName": "John Doe",
- "customerPhone": "0818404379",
- "customerEmail": "john@customer.co.id",
- "additionalInfo": { }
}{- "responseCode": "20000",
- "responseMessage": "Successful",
- "paymentId": "5031794d2dda4b7ab054d4204cd56a32",
- "customerName": "John Doe",
- "customerPhone": "0818404379",
- "customerEmail": "john@customer.co.id",
- "expiredDate": "2022-01-01T00:00:00+07:00",
- "amount": 1000000,
- "trxId": "8e94695879e3400ca785b64db21bbb18",
- "virtualAccount": "8277770818404379",
- "virtualAccountTrxType": "va-closed-payment",
- "statusPaid": "paid",
- "accountType": "credit",
- "desc": ""
}This service used by merchant to get latest transaction data.
| Authorization | string Example: Basic eyJraWQiOi...Jzc29zIiwiY Represents access_token of a request; string starts with keyword |
| paymentId required | string Unique ID generated by system for this object |
{- "paymentId": "5031794d2dda4b7ab054d4204cd56a32"
}{- "responseCode": "20000",
- "responseMessage": "Successful",
- "paymentId": "5031794d2dda4b7ab054d4204cd56a32",
- "customerName": "John Doe",
- "customerPhone": "0818404379",
- "customerEmail": "john@customer.co.id",
- "expiredDate": "2022-01-01T00:00:00+07:00",
- "amount": 1000000,
- "trxId": "8e94695879e3400ca785b64db21bbb18",
- "virtualAccount": "8277770818404379",
- "virtualAccountTrxType": "va-closed-payment",
- "status": "2",
- "accountType": "credit",
- "desc": "",
- "createdDate": "2022-01-01T00:00:00+07:00",
- "updatedDate": "2022-01-01T00:00:00+07:00"
}/callback_url = URL in client server
This service will call API client as payment.
Triggered when user pays the bill in bank.
A notification is considered as success if and only if response from the callback URL indicated HTTP code 200.
CRING will send retry callback up to 5 times for each minutes if HTTP code is not 200.
| paymentId required | string Unique ID generated by system for this object | ||||||||||||||
| customerName | string <= 30 characters Customer Name | ||||||||||||||
| customerPhone | string <= 30 digit characters Customer Phone number | ||||||||||||||
| customerEmail | string <email> Customer Email | ||||||||||||||
| expiredDate | string <date-time> Date and time when the Virtual Account expires and can no longer be used. The value must be at least 5 minutes later than the current server time (example: "2025-11-09T21:05:00+07:00") and no more than 50 years from now (example: "2075-11-09T21:00:00+07:00"). | ||||||||||||||
| amount | string [ 1 .. 14 ] characters Virtual account amount | ||||||||||||||
| trxId required | string Transaction ID. Generated by system, it unique. | ||||||||||||||
| virtualAccount required | string Virtual Account Number, Generated by system with | ||||||||||||||
| virtualAccountTrxType required | string Identifier payment type that must be:
| ||||||||||||||
| statusPaid required | string Payment status | ||||||||||||||
| accountType | string Account type payment | ||||||||||||||
| desc | string Additional Info | ||||||||||||||
| paymentAmount | string Amount of payment | ||||||||||||||
| cumulativePaymentAmount | string [ 1 .. 14 ] characters Amount of payment as Acumulative (depends of | ||||||||||||||
| paymentNtb | number Journal Number from Bank | ||||||||||||||
| paymentDate | string <date-time> Date of the payment payed | ||||||||||||||
| datetimePaymentIso8601 | string <date-time> Date time of payment | ||||||||||||||
| createdDate | string <date-time> Date of the payment created |
{- "paymentId": "5031794d2dda4b7ab054d4204cd56a32",
- "customerName": "John Doe",
- "customerPhone": "0818404379",
- "customerEmail": "john@customer.co.id",
- "expiredDate": "2022-01-01T00:00:00+07:00",
- "amount": 1000000,
- "trxId": "8e94695879e3400ca785b64db21bbb18",
- "virtualAccount": "8277770818404379",
- "virtualAccountTrxType": "va-closed-payment",
- "statusPaid": "paid",
- "accountType": "credit",
- "desc": "",
- "paymentAmount": 1000000,
- "cumulativePaymentAmount": 1000000,
- "paymentNtb": "784224",
- "paymentDate": "2023-05-30 09:13:01",
- "datetimePaymentIso8601": "2022-01-01T00:00:00+07:00",
- "createdDate": "2022-01-01T00:00:00+07:00"
}{- "responseCode": "20000",
- "responseMessage": "Successful"
}This service used by merchant to sent transaction data, and in return merchant will get Virtual Account Number
📥 Request Requirements must contain following information:
| Authorization | string Example: Basic eyJraWQiOi...Jzc29zIiwiY Represents access_token of a request; string starts with keyword |
Successful
| bankCode required | string Bank code for BANK BTN is | ||||||||
| virtualAccountName required | string <= 30 characters virtual account name customer | ||||||||
| virtualAccountEmail | string virtual account email customer | ||||||||
| virtualAccountPhone | string <= 30 characters virtual account phone customer. Only allowed 62xxxxxxx format. | ||||||||
| virtualAccountTrxType required | string Identifier virtualAccountTrxType that must be followed:
| ||||||||
required | object | ||||||||
| customerNo | string Unique number for the customer. This number will be generated as a suffix in Virtual Account.
| ||||||||
| expiredDate required | string <date-time> Date and time when the Virtual Account expires and can no longer be used. The value must be at least 5 minutes later than the current server time (example: "2025-11-09T21:05:00+07:00") and no more than 50 years from now (example: "2075-11-09T21:00:00+07:00"). | ||||||||
object |
{- "bankCode": "200",
- "virtualAccountName": "John Doe",
- "virtualAccountEmail": "john@mail.com",
- "virtualAccountPhone": "628888888881",
- "virtualAccountTrxType": "va-closed-payment",
- "totalAmount": {
- "value": "350000.00",
- "currency": "IDR"
}, - "customerNo": "12345678901",
- "expiredDate": "2022-01-01T00:00:00+07:00",
- "additionalInfo": {
- "description": "credit",
- "payment": "bill payment",
- "paymentCode": "BP0001"
}
}{- "responseCode": "2002700",
- "responseMessage": "Successful",
- "virtualAccountData": {
- "bankCode": "200",
- "trxId": "1299e43112754fc4938666e59fc52f08",
- "virtualAccountNo": "9902630512345678901",
- "virtualAccountName": "John Doe",
- "virtualAccountEmail": "john@mail.com",
- "virtualAccountPhone": "628888888881",
- "totalAmount": {
- "value": "350000.00",
- "currency": "IDR"
}
}, - "virtualAccountTrxType": "va-closed-payment",
- "expiredDate": "2022-01-01T00:00:00+07:00",
- "additionalInfo": {
- "description": "credit",
- "payment": "bill payment",
- "paymentCode": "BP0001"
}
}This service allows merchants to update an existing Virtual Account. It is only applicable to Virtual Accounts that have no successful payment transactions and are still active (not expired).
📥 Request Requirements must contain following information:
| Authorization | string Example: Basic eyJraWQiOi...Jzc29zIiwiY Represents access_token of a request; string starts with keyword |
| bankCode required | string Bank code for BANK BTN is | ||||||||
| trxId required | string Transaction Id from response create Virtual Account | ||||||||
| virtualAccountName required | string <= 30 characters virtual account name customer | ||||||||
| virtualAccountEmail | string virtual account email customer | ||||||||
| virtualAccountPhone | string <= 30 digit characters virtual account phone customer. Only allowed 62xxxxxxx format. | ||||||||
| virtualAccountTrxType required | string Identifier virtualAccountTrxType that must be followed:
| ||||||||
required | object | ||||||||
| expiredDate required | string The expiration date and time of the Virtual Account. It must not be earlier than January 1, 2000 (example: "2000-01-01T00:00:00Z") and must not exceed 50 years from the current server time (example: "2075-11-09T21:00:00+07:00"). Once expired, the Virtual Account can no longer be used. | ||||||||
object |
{- "bankCode": "200",
- "trxId": "1299e43112754fc4938666e59fc52f08",
- "virtualAccountName": "John Doe",
- "virtualAccountEmail": "john@mail.com",
- "virtualAccountPhone": "628888888881",
- "virtualAccountTrxType": "va-closed-payment",
- "totalAmount": {
- "value": "350000.00",
- "currency": "IDR"
}, - "expiredDate": "2030-05-10T23:59:59+07:00",
- "additionalInfo": {
- "description": "credit",
- "payment": "bill payment",
- "paymentCode": "BP0001"
}
}{- "responseCode": "2002800",
- "responseMessage": "Successful",
- "virtualAccountData": {
- "bankCode": "200",
- "trxId": "1299e43112754fc4938666e59fc52f08",
- "virtualAccountName": "John Doe",
- "virtualAccountEmail": "john@mail.com",
- "virtualAccountPhone": "628888888881",
- "totalAmount": {
- "value": "350000.00",
- "currency": "IDR"
}
}, - "virtualAccountTrxType": "va-closed-payment",
- "expiredDate": "2022-01-01T00:00:00+07:00",
- "additionalInfo": {
- "description": "credit",
- "payment": "bill payment",
- "paymentCode": "BP0001"
}
}This service is used by merchants to obtain information from the Virtual Account number that has been created.
| Authorization | string Example: Basic eyJraWQiOi...Jzc29zIiwiY Represents access_token of a request; string starts with keyword |
| bankCode required | string Bank code for BANK BTN is |
| virtualAccountNo required | string Virtual Account number |
| trxId required | string Unique ID generated by system when Virtual Account number has been created. |
{- "bankCode": "200",
- "virtualAccountNo": "9190000499880126971199003",
- "trxId": "1299e43112754fc4938666e59fc52f08"
}{- "responseCode": "2002600",
- "responseMessage": "Successful",
- "virtualAccountData": {
- "partnerServiceId": "95122",
- "customerNo": "000101190009",
- "virtualAccountNo": "9190000499880126971199003",
- "virtualAccountName": "John Doe",
- "totalAmount": {
- "value": "350000.00",
- "currency": "IDR"
}
}, - "inquiryStatus": "00",
- "statusDescription": "Active",
- "virtualAccountTrxType": "va-closed-payment",
- "expiredDate": "2022-01-01T00:00:00+07:00",
- "additionalInfo": {
- "description": "credit",
- "payment": "bill payment",
- "paymentCode": "BP0001",
- "currentAccountNo": "",
- "paidBill": "0",
- "paymentDate": ""
}
}This service is used to inquire the status and payment details of a BANK BNI Virtual Account using the Virtual Account number.
| Authorization | string Example: Basic eyJraWQiOi...Jzc29zIiwiY Represents access_token of a request; string starts with keyword |
| bankCode required | string Bank code. Refer to Bank Code (Bank Code). Currently only bankCode |
| virtualAccountNo required | string Virtual Account number |
{- "bankCode": "009",
- "virtualAccountNo": "9190000499880126971199003"
}{- "responseCode": "2002600",
- "responseMessage": "Successful",
- "virtualAccountData": {
- "virtualAccountNo": "9190000499880126971199003",
- "virtualAccountName": "John Doe",
- "inquiryRequestId": "6a3e55a1a2b242c86d09d061",
- "paymentRequestId": "kd7e55a1a2b242c86d09f372",
- "billDetails": [
- {
- "additionalInfo": {
- "virtualAccountName": "John Doe",
- "virtualAccountEmail": "john.doe@mail.com",
- "virtualAccountPhone": "6287717445223",
- "cumulativePaymentAmount": {
- "value": "580000.00",
- "currency": "IDR"
}, - "trxId": "90201245641246515652",
- "journalNum": "828342"
}
}
]
}
}This service is used by merchants to make the Virtual Account status deleted and can no longer be used for payments.
| Authorization | string Example: Basic eyJraWQiOi...Jzc29zIiwiY Represents access_token of a request; string starts with keyword |
| bankCode required | string Bank Code for BANK BTN is |
| virtualAccountNo required | string Virtual Account number |
| trxId required | string Transaction id generated by system when Virtual Account number has been created. |
{- "bankCode": "200",
- "virtualAccountNo": "9190000499880126971199003",
- "trxId": "3845526792745904557"
}{- "responseCode": "2003100",
- "responseMessage": "Successful",
- "virtualAccountData": {
- "bankCode": "200",
- "virtualAccountNo": "9190000499880126971199003",
- "trxId": "3845526792745904557"
}
}/callback_url = URL in client server
This service will call API client as payment.
Triggered when user pays the bill in bank.
A notification is considered as success if and only if response from the callback URL indicated HTTP code 200.
CRING will send retry callback up to 5 times for each minutes if HTTP code is not 200.
| paymentId required | string Unique ID generated by system for this object | ||||||||||||||
| customerName | string <= 30 characters Customer Name | ||||||||||||||
| customerPhone | string <= 30 digit characters Customer Phone number | ||||||||||||||
| customerEmail | string <email> Customer Email | ||||||||||||||
| expiredDate | string <date-time> Date and time when the Virtual Account expires and can no longer be used. The value must be at least 5 minutes later than the current server time (example: "2025-11-09T21:05:00+07:00") and no more than 50 years from now (example: "2075-11-09T21:00:00+07:00"). | ||||||||||||||
| amount | string [ 1 .. 14 ] characters Virtual account amount | ||||||||||||||
| trxId required | string Transaction ID. Generated by system, it unique. | ||||||||||||||
| virtualAccount required | string Virtual Account Number, Generated by system with | ||||||||||||||
| virtualAccountTrxType required | string Identifier payment type that must be:
| ||||||||||||||
| statusPaid required | string Payment status | ||||||||||||||
| accountType | string Account type payment | ||||||||||||||
| desc | string Additional Info | ||||||||||||||
| paymentAmount | string Amount of payment | ||||||||||||||
| cumulativePaymentAmount | string [ 1 .. 14 ] characters Amount of payment as Acumulative (depends of | ||||||||||||||
| paymentNtb | number Journal Number from Bank | ||||||||||||||
| paymentDate | string <date-time> Date of the payment payed | ||||||||||||||
| datetimePaymentIso8601 | string <date-time> Date time of payment | ||||||||||||||
| createdDate | string <date-time> Date of the payment created |
{- "paymentId": "5031794d2dda4b7ab054d4204cd56a32",
- "customerName": "John Doe",
- "customerPhone": "0818404379",
- "customerEmail": "john@customer.co.id",
- "expiredDate": "2022-01-01T00:00:00+07:00",
- "amount": 1000000,
- "trxId": "8e94695879e3400ca785b64db21bbb18",
- "virtualAccount": "8277770818404379",
- "virtualAccountTrxType": "va-closed-payment",
- "statusPaid": "paid",
- "accountType": "credit",
- "desc": "",
- "paymentAmount": 1000000,
- "cumulativePaymentAmount": 1000000,
- "paymentNtb": "784224",
- "paymentDate": "2023-05-30 09:13:01",
- "datetimePaymentIso8601": "2022-01-01T00:00:00+07:00",
- "createdDate": "2022-01-01T00:00:00+07:00"
}{- "responseCode": "20000",
- "responseMessage": "Successful"
}| Code | Name |
|---|---|
| AMAR | Bank Amar Indonesia |
| BANTEN | BPD BANTEN |
| ACEH | BPD Aceh |
| ACEH_UUS | BPD Aceh UUS |
| BALI | BPD Bali |
| BENGKULU | BPD Bengkulu |
| DAERAH_ISTIMEWA | BPD Daerah Istimewa Yogyakarta (DIY) |
| DAERAH_ISTIMEWA_UUS | BPD Daerah Istimewa Yogyakarta (DIY) UUS |
| JAMBI | BPD Jambi |
| JAWA_TENGAH | BPD Jawa Tengah |
| JAWA_TENGAH_UUS | BPD Jawa Tengah UUS |
| JAWA_TIMUR | BPD Jawa Timur |
| JAWA_TIMUR_UUS | BPD Jawa Timur UUS |
| KALIMANTAN_BARAT | BPD Kalimantan Barat |
| KALIMANTAN_BARAT_UUS | BPD Kalimantan Barat UUS |
| KALIMANTAN_SELATAN | BPD Kalimantan Selatan |
| KALIMANTAN_SELATAN_UUS | BPD Kalimantan Selatan UUS |
| KALIMANTAN_TENGAH | BPD Kalimantan Tengah |
| KALIMANTAN_TIMUR | BPD Kalimantan Timur |
| KALIMANTAN_TIMUR_UUS | BPD Kalimantan Timur UUS |
| LAMPUNG | BPD Lampung |
| MALUKU | BPD Maluku |
| NUSA_TENGGARA_BARAT | BPD Nusa Tenggara Barat |
| NUSA_TENGGARA_BARAT_UUS | BPD Nusa Tenggara Barat UUS |
| NUSA_TENGGARA_TIMUR | BPD Nusa Tenggara Timur |
| PAPUA | BPD Papua |
| RIAU_DAN_KEPRI | BPD Riau Dan Kepri |
| RIAU_DAN_KEPRI_UUS | BPD Riau Dan Kepri UUS |
| SULAWESI | BPD Sulawesi Tengah |
| SULAWESI_TENGGARA | BPD Sulawesi Tenggara |
| SULSELBAR | BPD Sulselbar |
| SULSELBAR_UUS | BPD Sulselbar UUS |
| SULUT | BPD Sulut |
| SUMATERA_BARAT | BPD Sumatera Barat |
| SUMATERA_BARAT_UUS | BPD Sumatera Barat UUS |
| SUMSEL_DAN_BABEL | BPD Sumsel Dan Babel |
| SUMSEL_DAN_BABEL_UUS | BPD Sumsel Dan Babel UUS |
| SUMUT | BPD Sumut |
| SUMUT_UUS | BPD Sumut UUS |
| ANZ | Bank ANZ Indonesia |
| AGRONIAGA | Bank Agroniaga |
| ARTHA | Bank Artha Graha International |
| BCA_DIGITAL | Bank BCA Digital |
| BJB | Bank BJB |
| BJB_SYR | Bank BJB Syariah |
| BNP_PARIBAS | Bank BNP Paribas |
| BISNIS_INTERNASIONAL | Bank Bisnis Internasional |
| BUKOPIN | Bank Bukopin |
| BUMI_ARTA | Bank Bumi Arta |
| CIMB | Bank CIMB Niaga |
| CIMB_UUS | Bank CIMB Niaga UUS |
| CAPITAL | Bank Capital Indonesia |
| BCA | Bank Central Asia (BCA) |
| BCA_SYR | Bank Central Asia (BCA) Syariah |
| CHINATRUST | Bank Chinatrust Indonesia |
| COMMONWEALTH | Bank Commonwealth |
| DBS | Bank DBS Indonesia |
| DKI | Bank DKI |
| DKI_UUS | Bank DKI UUS |
| DANAMON | Bank Danamon |
| DANAMON_UUS | Bank Danamon UUS |
| DINAR_INDONESIA | Bank Dinar Indonesia |
| FAMA | Bank Fama International |
| GANESHA | Bank Ganesha |
| HANA | Bank Hana |
| ICBC | Bank ICBC Indonesia |
| INA_PERDANA | Bank Ina Perdania |
| INDEX_SELINDO | Bank Index Selindo |
| JASA_JAKARTA | Bank Jasa Jakarta |
| MNC_INTERNASIONAL | Bank MNC Internasional |
| MANDIRI | Bank Mandiri |
| MASPION | Bank Maspion Indonesia |
| MAYAPADA | Bank Mayapada International |
| MAYBANK | Bank Maybank |
| MAYBANK_SYR | Bank Maybank Syariah Indonesia |
| MAYORA | Bank Mayora |
| MEGA | Bank Mega |
| MESTIKA_DHARMA | Bank Mestika Dharma |
| MIZUHO | Bank Mizuho Indonesia |
| MUAMALAT | Bank Muamalat Indonesia |
| MULTI_ARTA_SENTOSA | Bank Multi Arta Sentosa |
| NATIONALNOBU | Bank Nationalnobu |
| BNI | Bank Negara Indonesia (BNI) |
| OCBC | Bank OCBC NISP |
| OCBC_UUS | Bank OCBC NISP UUS |
| PANIN | Bank Panin |
| PANIN_SYR | Bank Panin Syariah |
| PERMATA | Bank Permata |
| PERMATA_UUS | Bank Permata UUS |
| RABOBANK | Bank Rabobank International Indonesia |
| BRI | Bank Rakyat Indonesia (BRI) |
| RESONA | Bank Resona Perdania |
| ROYAL | Bank Royal Indonesia |
| SBI_INDONESIA | Bank SBI Indonesia |
| SAHABAT_SAMPOERNA | Bank Sahabat Sampoerna |
| SINARMAS | Bank Sinarmas |
| SINARMAS_UUS | Bank Sinarmas UUS |
| BUKOPIN_SYR | Bank Syariah Bukopin |
| BSI | Bank Syariah Indonesia |
| MEGA_SYR | Bank Syariah Mega |
| BTN | Bank Tabungan Negara (BTN) |
| BTN_UUS | Bank Tabungan Negara (BTN) UUS |
| TABUNGAN_PENSIUNAN_NASIONAL | Bank Tabungan Pensiunan Nasional |
| UOB | Bank UOB Indonesia |
| VICTORIA_INTERNASIONAL | Bank Victoria Internasional |
| VICTORIA_SYR | Bank Victoria Syariah |
| WOORI | Bank Woori Indonesia |
| BAML | Bank of America Merill-Lynch |
| BOC | Bank of China (BOC) |
| INDIA | Bank of India Indonesia |
| TOKYO | Bank of Tokyo Mitsubishi UFJ |
| JTRUST | Bank Jtrust Indonesia |
| OKE | Bank Oke Indonesia |
| QNB_INDONESIA | Bank QNB Indonesia |
| SHINHAN | Bank Shinhan Indonesia |
| Code | Description |
|---|---|
| ISLAM | Islam |
| CHRISTIAN | Kristen |
| CATHOLIC | Katolik |
| BUDDHIST | Budha |
| HINDU | Hindu |
| CONFUCIAN | Kong Hu Chu |
| OTHERS | Other religion |
| Code | Description |
|---|---|
| SINGLE | Lajang (Single) |
| WIDOWER | Duda (Widower) |
| WIDOW | Janda (Widow) |
| MARRIED | Menikah (Married) |
| Code | Description |
|---|---|
| GOVERNMENT_EMPLOYEE | Pegawai Negeri |
| PRIVATE_SECTOR_EMPLOYEE | Pegawai Swasta |
| STATE_OWNED_ENTERPRISE_EMPLOYEE | Pegawai BUMN/BUMD |
| NATIONAL_MILITARY_OR_POLICE_OFFICER | TNI/POLRI |
| BUSINESS_OWNER | Pengusaha |
| TRADER | Pedagang |
| FARMER_OR_FISHERMAN | Petani/Nelayan |
| STUDENT | Pelajar/Mahasiswa |
| HOUSEWIFE | Ibu Rumah Tangga |
| UNEMPLOYED | Tidak Bekerja |
| EMPLOYEE | Karyawan/Karyawati |
| ENTREPRENEUR | Wiraswasta |
| STATE_OFFICIAL | Pejabat Negara |
| ACCOUNTANT | Akuntan |
| LAWYER_OR_NOTARY | Pengacara/Notaris |
| PROFESSION | Profesi |
| RETIREE | Pensiunan |
| PRIVATE_LECTURER_OR_TEACHER | Dosen/Guru Swasta |
| PUBLIC_LECTURER_OR_TEACHER | Dosen/Guru Negeri |
| DOCTOR | Dokter |
| BNI_EMPLOYEE | Pegawai BNI |
| BNI_AFFILIATE_UNIT | Unit Afiliasi BNI |
| - | Tenaga Kerja Indonesia |
| OTHERS | Lain-lain |
| Code | Description |
|---|---|
| ELEMENTARY_SCHOOL | SD |
| JUNIOR_HIGH_SCHOOL | SMP |
| HIGH_SCHOOL_OR_EQUIVALENT | SMA / Sederajat |
| ACADEMY_OR_DIPLOMA | Akademi/Diploma |
| BACHELORS_DEGREE | S1 |
| MASTERS_DEGREE | S2 |
| PHD | S3 |
| Code | Description |
|---|---|
| JAKARTA_KOTA | JAKARTA KOTA |
| BANDUNG | BANDUNG |
| JAMBI | JAMBI |
| YOGYAKARTA | YOGYAKARTA |
| BANDA_ACEH | BANDA ACEH |
| MEDAN | MEDAN |
| MAKASSAR | MAKASSAR |
| PEKANBARU | PEKANBARU |
| PADANG | PADANG |
| PALEMBANG | PALEMBANG |
| SURAKARTA | SURAKARTA |
| SIBOLGA | SIBOLGA |
| SEMARANG | SEMARANG |
| SURABAYA | SURABAYA |
| BANJARMASIN | BANJARMASIN |
| KRAMAT | KRAMAT |
| MANADO | MANADO |
| CIREBON | CIREBON |
| TANJUNG_PINANG | TANJUNG PINANG |
| MAGELANG | MAGELANG |
| MELAWAI_RAYA | MELAWAI RAYA |
| PONTIANAK | PONTIANAK |
| TANJUNG_PRIOK | TANJUNG PRIOK |
| BANDAR_LAMPUNG | BANDAR LAMPUNG |
| TASIKMALAYA | TASIKMALAYA |
| RENGAT | RENGAT |
| PURWOKERTO | PURWOKERTO |
| JEMBER | JEMBER |
| JL_JEND_SUDIRMAN_BANDUNG | JL.JEND.SUDIRMAN BANDUNG |
| GUNUNG_SITOLI | GUNUNG SITOLI |
| DENPASAR | DENPASAR |
| SAMPIT | SAMPIT |
| JATINEGARA | JATINEGARA |
| MATARAM | MATARAM |
| GORONTALO | GORONTALO |
| MEULABOH | MEULABOH |
| AMBON | AMBON |
| TANJUNG_PERAK | TANJUNG PERAK |
| KUDUS | KUDUS |
| CILACAP | CILACAP |
| TEMBILAHAN | TEMBILAHAN |
| SERANG | SERANG |
| KUALA_TUNGKAL | KUALA TUNGKAL |
| BALIKPAPAN | BALIKPAPAN |
| LHOKSEUMAWE | LHOKSEUMAWE |
| TANJUNG_BALAI_KARIMUN | TANJUNG BALAI KARIMUN |
| KAWASAN_INDUSTRI_MEDAN | KAWASAN INDUSTRI MEDAN |
| BUKITTINGGI | BUKITTINGGI |
| URIP_SUMOHARJO | URIP SUMOHARJO |
| PEKALONGAN | PEKALONGAN |
| DUMAI | DUMAI |
| DUKUH_BAWAH | DUKUH BAWAH |
| BOGOR | BOGOR |
| SINGARAJA | SINGARAJA |
| SENAYAN | SENAYAN |
| TANJUNG_BALAI_ASAHAN | TANJUNG BALAI ASAHAN |
| PEMANGKAT | PEMANGKAT |
| SUMBAWA_BESAR | SUMBAWA BESAR |
| SELAT_PENJANG | SELAT PANJANG |
| PARIGI | PARIGI |
| MAJALAYA | MAJALAYA |
| HARMONI | HARMONI |
| KEDUNGDORO_SURABAYA | KEDUNGDORO SURABAYA |
| WONOSOBO | WONOSOBO |
| KEBUMEN | KEBUMEN |
| SUKABUMI | SUKABUMI |
| PASAR_MAYESTIK | PASAR MAYESTIK |
| JEMBATAN_MERAH | JEMBATAN MERAH |
| JL_A_YANI_PADANG | JL.A.YANI PADANG |
| KENDARI | KENDARI |
| TANGERANG | TANGERANG |
| SITUBONDO | SITUBONDO |
| SUMENEP | SUMENEP |
| PURBALINGGA | PURBALINGGA |
| BANJAR | BANJAR |
| JL_A_YANI_BANDUNG | JL.A.YANI BANDUNG |
| PADANGSIDEMPUAN | PADANGSIDEMPUAN |
| GAMBIR | GAMBIR |
| LANGSA | LANGSA |
| BANYUWANGI | BANYUWANGI |
| PEMATANG_SIANTAR | PEMATANG SIANTAR |
| MENTENG | MENTENG |
| KARAWANG | KARAWANG |
| TEMANGGUNG | TEMANGGUNG |
| TERNATE | TERNATE |
| PAMEKASAN | PAMEKASAN |
| PARE_PARE | PARE-PARE |
| SENGKANG | SENGKANG |
| GARUT | GARUT |
| CIANJUR | CIANJUR |
| BIREUN | BIREUN |
| KOTAMOBAGU | KOTAMOBAGU |
| JL_IMAM_BONJOL_PADANG | JL.IMAM BONJOL PADANG |
| KETAPANG | KETAPANG |
| PROBOLINGGO | PROBOLINGGO |
| JEMBATAN_AMPERA_PALEMBANG | JEMBATAN AMPERA PALEMBANG |
| MUSI_PALEMBANG | MUSI PALEMBANG |
| KEDIRI | KEDIRI |
| JL_SUTOMO_MEDAN | JL.SUTOMO MEDAN |
| KOTABUMI | KOTABUMI |
| BOJONEGORO | BOJONEGORO |
| INDRAMAYU | INDRAMAYU |
| MADIUN | MADIUN |
| TEBET | TEBET |
| MALANG | MALANG |
| JOMBANG | JOMBANG |
| MOJOKERTO | MOJOKERTO |
| CILEGON | CILEGON |
| RANGKASBITUNG | RANGKASBITUNG |
| KOTABARU_PULAU_LAUT | KOTABARU PULAU LAUT |
| PECENONGAN | PECENONGAN |
| KUNINGAN | KUNINGAN |
| LUWUK | LUWUK |
| PANGKAL_PINANG | PANGKAL PINANG |
| CIAMIS | CIAMIS |
| SALATIGA | SALATIGA |
| PURWOREJO | PURWOREJO |
| BITUNG | BITUNG |
| PAYAKUMBUH | PAYAKUMBUH |
| TANJUNG_KARANG | TANJUNG KARANG |
| PATI | PATI |
| JEPARA | JEPARA |
| PASAR_PUSAT_PEKANBARU | PASAR PUSAT PEKANBARU |
| SIGLI | SIGLI |
| SINGKAWANG | SINGKAWANG |
| BANJARBARU | BANJARBARU |
| BALIGE | BALIGE |
| PANJANG | PANJANG |
| KUALA_KAPUAS | KUALA KAPUAS |
| BAU_BAU | BAU-BAU |
| TEGAL | TEGAL |
| ROA_MALAKA | ROA MALAKA |
| SUNGAI_PENUH | SUNGAI PENUH |
| PURWAKARTA | PURWAKARTA |
| SUMEDANG | SUMEDANG |
| BEKASI | BEKASI |
| SUBANG | SUBANG |
| BLITAR | BLITAR |
| SAMARINDA | SAMARINDA |
| TEBING_TINGGI_DELI | TEBING TINGGI DELI |
| TAHUNA | TAHUNA |
| BIMA | BIMA |
| WONOGIRI | WONOGIRI |
| KABANJAHE | KABANJAHE |
| TOLI_TOLI | TOLI-TOLI |
| PENGKALANBUN | PANGKALANBUN |
| PALOPO | PALOPO |
| LUBUK_LINGGAU | LUBUK LINGGAU |
| PANGERAN_ANTASARI_BJMS | PANGERAN ANTASARI BJMS |
| KLATEN | KLATEN |
| CIKAMPEK | CIKAMPEK |
| PASURUAN | PASURUAN |
| POLEWALI | POLEWALI |
| KANAKA_MANADO | KANAKA MANADO |
| NUNUKAN | NUNUKAN |
| PALU | PALU |
| KENGKULU | BENGKULU |
| GRESIK | GRESIK |
| TARAKAN | TARAKAN |
| SLAMET_RIYADI_SOLO | SLAMET RIYADI SOLO |
| UGM_YOGYA | UGM YOGYA |
| KUPANG | KUPANG |
| SIDOARJO | SIDOARJO |
| PANDANSARI_BALIKPAPAN | PANDANSARI BALIKPAPAN |
| BOOMBARU_PALEMBANG | BOOMBARU PALEMBANG |
| M_H_THAMRIN | M.H. THAMRIN |
| TANJUNG_REDEB | TANJUNG REDEB |
| BONDOWOSO | BONDOWOSO |
| ITB_BANDUNG | ITB BANDUNG |
| DAAN_MOGOT | DAAN MOGOT |
| KUALA_TANJUNG | KUALA TANJUNG |
| TULUNGAGUNG | TULUNGAGUNG |
| RAWAMANGUN | RAWAMANGUN |
| KARANGAYU | KARANGAYU |
| BATAM | BATAM |
| MATTOANGIN | MATTOANGIN |
| FATMAWATI | FATMAWATI |
| CEPU | CEPU |
| UNIBRAW_MALANG | UNIBRAW MALANG |
| UPI_BANDUNG | UPI BANDUNG |
| GRAHA_PANGERAN_SURABAYA | GRAHA PANGERAN SURABAYA |
| BARABAI | BARABAI |
| UNAIR_SURABAYA | UNAIR SURABAYA |
| JAKARTA_PUSAT | JAKARTA PUSAT |
| UNDIP_SEMARANG | UNDIP SEMARANG |
| LEGIAN | LEGIAN |
| USU_MEDAN | USU MEDAN |
| JAYAPURA | JAYAPURA |
| JL_PERINTIS_KEMERDEKAAN | JL.PERINTIS KEMERDEKAAN |
| UNPAD_BANDUNG | UNPAD BANDUNG |
| CIMAHI | CIMAHI |
| PONDOK_INDAH_MALL | PONDOK INDAH MALL |
| UI_DEPOK | UI DEPOK |
| SEBELAS_MARET_SURAKARTA | SEBELAS MARET SURAKARTA |
| TUBAN | TUBAN |
| PALANGKARAYA | PALANGKARAYA |
| SORONG | SORONG |
| BANGKO | BANGKO |
| RANTALI_PRAPAT | RANTAU PRAPAT |
| ENDE | ENDE |
| MARGONDA_DEPOK | MARGONDA DEPOK |
| PONOROGO | PONOROGO |
| METRO | METRO |
| MAUMERE | MAUMERE |
| LUMAJANG | LUMAJANG |
| KAYU_AGUNG | KAYU AGUNG |
| PRABUMULIH | PRABUMULIH |
| BATURAJA | BATURAJA |
| POSINDO | POSINDO |
| BONTANG | BONTANG |
| MANOKWARI | MANOKWARI |
| BIAK | BIAK |
| MERAUKE | MERAUKE |
| BULUKUMBA | BULUKUMBA |
| RENON | RENON |
| MUARA_BUNGO | MUARA BUNGO |
| SOLOK | SOLOK |
| MUARA_TEWEH | MUARA TEWEH |
| MAMUJU | MAMUJU |
| SINTANG | SINTANG |
| KELAPA_GADING | KELAPA GADING |
| BUMI_SERPONG_DAMAI | BUMI SERPONG DAMAI |
| JABABEKA | JABABEKA |
| W01_MEDAN | W01 MEDAN |
| W02_PADANG | W02 PADANG |
| W00_PALEMBANG | W03 PALEMBANG |
| W04_BANDUNG | W04 BANDUNG |
| W05_SEMARANG | W05 SEMARANG |
| W06_SURABAYA | W06 SURABAYA |
| W07_MAKASSAR | W07 MAKASSAR |
| W08_DENPASAR | W08 DENPASAR |
| W09_BANJARMASIN | W09 BANJARMASIN |
| W10_JAKARTA | W10 JAKARTA |
| W11_MANADO | W11 MANADO |
| W12_JAKARTA_KOTA | W12 JAKARTA KOTA |
| Code | Description |
|---|---|
| LESS_THAN_3_MILLION | Monthly income less than IDR 3 million |
| GTE_3_AND_LT_5_MILLION | Monthly income between IDR 3 up to 5 million |
| GTE_5_AND_LT_10_MILLION | Monthly income between IDR 5 up to 10 million |
| GTE_10_AND_LT_20_MILLION | Monthly income between IDR 10 up to 20 million |
| GTE_20_AND_LT_50_MILLION | Monthly income between IDR 20 up to 50 million |
| GTE_50_AND_LT_100_MILLION | Monthly income between IDR 50 up to 100 million |
| GTE_100_AND_LT_500_MILLION | Monthly income between IDR 100 up to 500 million |
| GREATER_THAN_500_MILLION | Monthly income more than IDR 500 million |
| Code | Description |
|---|---|
| INVESTMENTS | Opening account is for investment |
| SAVINGS | Opening account is for saving |
| TRANSACTIONS | Opening account is for transactional |
| Code | Description |
|---|---|
| SALARY | Salary |
| BUSINESS | Business outcome |
| INVESTMENT | Investment outcome |
| GRANTS | Grants/Hibah |
| Response Code | Response Message |
|---|---|
| 0000 | Unknown output (General error) |
| 0001 | Request has been processed successfully |
| 0002 | Request has been rejected by Icons |
| 0007 | Request can not be authenticated |
| 0008 | Invalid UUID format |
| 0009 | Invalid branchId |
| 0011 | Previous identical request has been processed successfully |
| 0110 | Account is closed |
| 0112 | REKENING SEDANG BERTRANSAKSI. COBA LAGI! |
| 0113 | Account is blocked |
| 0116 | SALDO TIDAK SESUAI |
| 0155 | CUSM DBER |
| 0168 | TRANSAKSI PELUNASAN TELAH DILAKUKAN |
| 0169 | Account number is not found |
| 0188 | RECORD IS NOT FOUND |
| 0208 | NOMOR REKENING INVALID |
| 0324 | NOMINAL TAGIHAN TIDAK SESUAI |
| 0325 | SILAHKAN MENGGUNAKAN MENU VA BILLING |
| 0545 | APPLICATION NOT ACTIVE |
| 0791 | NPWP NASABAH BELUM ADA. UBAH NPWP PD SC 60050 |
| 1534 | null = APPLICATION NOT ACTIVE |
| 1804 | INISIAL PEMBUKUAN DILUAR SALDO PEMBUKAAN |
| 2035 | DILARANG |
| 2754 | TRANSACTION ONLY DAY ENABLED |
| 2755 | EOM (End of Month) or EOD (End of Day) |
| 3656 | Requested ID number already has a CIF number |
| 7161 | APPLICATION BUSY. PLS TRY LATER |
| 9102 | NO CONNECTION TO DATABASE |
| 9201 | LATE RESPONSE FROM BACK-END |
| 9202 | INVALID REQUEST/RESPONSE MESSAGE |
| 9301 | NO CONNECTION TO BACK-END |
| 9403 | TRANSACTION AMOUNT ABOVE ALLOWED LIMIT |
| 9409 | ACCOUNT IS NOT REGISTERED |
| 9411 | RECORD IS PAID |
| 9412 | COMPANY ID IS NOT REGISTERED |
| 9427 | INVALID CURRENCY |
| 9428 | INVALID AMOUNT FOR RTGS/CLEARING |
| 9430 | KYC INFO NOT VALID, PLEASE HIT API KYC AGAIN |
| 9431 | KYC INFO HAS EXPIRED, PLEASE HIT API KYC AGAIN |
| 9432 | KYC INFO NOT VALID, PLEASE HIT API KYC AGAIN WITH VALID VALUE |
| Failure Code | Description |
|---|---|
| ACCOUNT_CODE_NOT_SUPPORTED_ERROR | The code of the account is currently not supported. |
| DUPLICATE_EXTERNAL_ID_ERROR | The external_id entered has been used before. Please enter a unique external_id and try again. |
| NAME_BLACKLISTED_ERROR | The customer name is blacklisted. |
| NO_PREFERRED_ACCOUNT_ERROR | No preferred account is specified. |
| MULTIPLE_PREFERRED_ACCOUNT_ERROR | Multiple preferred account is specified. |
| Failure Code | Description |
|---|---|
| NPWP_NOT_REGISTERED_ERROR | npwp_number field is invalid |
| BANK_DOWNTIME_ERROR | Registration happened when bank was on scheduled or unscheduled downtime/maintenance |
| INVALID_ID_EXPIRY_DATE_ERROR | id_expiry_date field is invalid |
| INACTIVE_CIF_STATUS | Bank already has investor's profile prior to this investor creation but CIF has been inactive in bank database |
| REGISTRATION_REJECTED | Bank rejects the registration for other reasons |
Obtaining Access Token Access token can be obtained in many way, depend on the grant_type of the application. To access RDL's services in this sandbox and production environment, you will need the access token with grant_type = client_credentials.
Client Credentials Grant will provide application access to API without requiring any user credential. Any call requested using access_token obtained using this method are made on behalf of the application instead of the user. This grant type is designed to be used by server to server call.
📥 Request Requirements must contain following information:
| Authorization | string Example: Basic base64(client_id:client_secret) Basic authorization header, combination client_id and client_secret as base64 |
| grant_type required | string "client_credentials" : The client can request an access token using only its client credentials (or other supported means of authentication) when the client is requesting access to the protected resources under its control (OAuth 2.0: RFC 6749 & 6750) |
{- "grant_type": "client_credentials"
}{- "response_code": "20000",
- "response_message": "Successful",
- "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJiZjFmM2Q3ZS1kOTA3LTRkOWItODJlNC02Y2IxZGYxOTBlOWUiLCJjbGllbnRJZCI6IjZhZTk1N2M0LTI4NjMtNDcxMy1hY2NlLWJhMTJkZTYzNmNmYyIsIm5iZiI6MTYxMTQ2ODg1NiwiZXhwIjoxNjExNDY5NzU2LCJpYXQiOjE2MTE0Njg4NTZ9.-7HRhcyEh4y0qsG2H3DRdu0AeYv3MEJHfWRKhRBYcNU",
- "token_type": "Bearer",
- "expires_in": 900
}This service used by P2P to inquiry customer account before added for withdrawal's account.
📥 Request Requirements must contain following information:
| Authorization | string Example: Basic eyJraWQiOi...Jzc29zIiwiY Represents access_token of a request; string starts with keyword |
| bank_code | string <= 3 characters Bank Code, see |
| account_number required | string <= 17 characters Bank account Number |
{- "bank_code": "008",
- "account_number": "0115476117"
}{- "bank_name": "Bank Mandiri",
- "account_name": "John Doe",
- "account_number": "0115476117",
- "retrieval_reff_num": "100000000097"
}This service used by P2P to create customer lender and borrower.
A Customer refers to P2P end-customer, which includes both the lenders and borrowers on P2P platform. P2P customers’personal data is retained to comply with regulatory requirements for IT-based lending services in Indonesia, and also allows CRING! to fulfill Know-Your-Client obligations. The Customer resource will be used together with our other APIs to receive funds from and send funds.
📥 Request Requirements must contain following information:
| Authorization | string Example: Basic eyJraWQiOi...Jzc29zIiwiY Represents access_token of a request; string starts with keyword |
| given_name required | string First name of your customer. Accepted a-z, A-Z, symbols . , ' (space) |
| surname required | string Last name of your customer. Accepted a-z, A-Z, symbols . , ' (space) |
| mobile_number required | string Mobile number. Accepted 0-9, symbols + - (space) |
| email required | string Email address. Should include the top-level domain name |
| ktp_number required | string KTP (national identity card number). Accepted 0-9, a-z, A-Z, symbols - (space) |
| npwp_number required | string NPWP (tax number). Accepted 0-9, symbols - (space) |
| external_id required | string Unique ID of your customer. Accepted 0-9, a-z, A-Z, symbols space _ , . - |
| type required | string Enum: "LENDER" "BORROWER" Type of customer LENDER or BORROWER |
required | Array of objects List of customer's accounts. Must include at least one preferred account |
{- "given_name": "John Doe",
- "surname": "John Doe, S.T.",
- "mobile_number": "+62 812-3456-789",
- "email": "abc@email.com",
- "ktp_number": "1234345678",
- "npwp_number": "1234.3456.789",
- "external_id": "external-19199",
- "type": "LENDER",
- "customer_accounts": [
- {
- "account_code": "BCA",
- "account_number": "8898345789",
- "is_preferred": true,
- "account_type": "BANK_ACCOUNT"
}
]
}{- "id": "b9666300-7300-11e9-8373-6753d37f1b1f",
- "given_name": "John Doe",
- "surname": "John Doe, S.T.",
- "mobile_number": "+62 812-3456-789",
- "email": "abc@email.com",
- "ktp_number": "1234345678",
- "npwp_number": "1234.3456.789",
- "external_id": "external-19199",
- "type": "LENDER",
- "customer_accounts": [
- {
- "account_code": "BCA",
- "account_number": "8898345789",
- "is_preferred": true,
- "account_type": "BANK_ACCOUNT"
}
], - "customer_escrow_id": "82800000011",
- "created": "2022-08-05T07:11:14.173Z",
- "updated": "2022-08-05T07:11:15.675Z",
- "current_balance": 0,
- "status": "PENDING",
- "failure_reason": ""
}This service used by P2P to Update an existing customer.
📥 Request Requirements must contain following information:
| id required | string Example: b9666300-7300-11e9-8373-6753d37f1b1f Customer id |
| Authorization | string Example: Basic eyJraWQiOi...Jzc29zIiwiY Represents access_token of a request; string starts with keyword |
| mobile_number | string Mobile number. Accepted 0-9, symbols + - (space) |
string Email address. Should include the top-level domain name | |
Array of objects List of customer's accounts. Must include at least one preferred account |
{- "mobile_number": "+62 812-3456-789",
- "email": "abc@email.com",
- "customer_accounts": [
- {
- "account_code": "BCA",
- "account_number": "8898345789",
- "is_preferred": true,
- "account_type": "BANK_ACCOUNT"
}
]
}{- "id": "b9666300-7300-11e9-8373-6753d37f1b1f",
- "given_name": "John Doe",
- "surname": "John Doe, S.T.",
- "mobile_number": "+62 812-3456-789",
- "email": "abc@email.com",
- "ktp_number": "1234345678",
- "npwp_number": "1234.3456.789",
- "external_id": "external-19199",
- "type": "LENDER",
- "customer_accounts": [
- {
- "account_code": "BCA",
- "account_number": "8898345789",
- "is_preferred": true,
- "account_type": "BANK_ACCOUNT"
}
], - "customer_escrow_id": "82800000011",
- "created": "2022-08-05T07:11:14.173Z",
- "updated": "2022-08-05T07:11:15.675Z",
- "current_balance": 0,
- "status": "FAILED",
- "failure_reason": "NAME_BLACKLISTED_ERROR"
}This service used by P2P to Get an existing customer with by using the id returned when Create Customer response. P2P can get current balance information of the customer using this API.
📥 Request Requirements must contain following information:
| id required | string Example: b9666300-7300-11e9-8373-6753d37f1b1f Customer Id |
| Authorization | string Example: Basic eyJraWQiOi...Jzc29zIiwiY Represents access_token of a request; string starts with keyword |
{- "id": "b9666300-7300-11e9-8373-6753d37f1b1f",
- "given_name": "John Doe",
- "surname": "John Doe, S.T.",
- "mobile_number": "+62 812-3456-789",
- "email": "abc@email.com",
- "ktp_number": "1234345678",
- "npwp_number": "1234.3456.789",
- "external_id": "external-19199",
- "type": "LENDER",
- "customer_accounts": [
- {
- "account_code": "BCA",
- "account_number": "8898345789",
- "is_preferred": true,
- "account_type": "BANK_ACCOUNT"
}
], - "customer_escrow_id": "82800000011",
- "created": "2022-08-05T07:11:14.173Z",
- "updated": "2022-08-05T07:11:15.675Z",
- "current_balance": 0,
- "status": "FAILED",
- "failure_reason": "NAME_BLACKLISTED_ERROR"
}This service used by P2P to Get an existing customer with by using the external_id when Create Customer. P2P also can get current balance information of the customer using this API.
📥 Request Requirements must contain following information:
| external_id required | string Example: external-19199 External id when create customer |
| Authorization | string Example: Basic eyJraWQiOi...Jzc29zIiwiY Represents access_token of a request; string starts with keyword |
{- "id": "b9666300-7300-11e9-8373-6753d37f1b1f",
- "given_name": "John Doe",
- "surname": "John Doe, S.T.",
- "mobile_number": "+62 812-3456-789",
- "email": "abc@email.com",
- "ktp_number": "1234345678",
- "npwp_number": "1234.3456.789",
- "external_id": "external-19199",
- "type": "LENDER",
- "customer_accounts": [
- {
- "account_code": "BCA",
- "account_number": "8898345789",
- "is_preferred": true,
- "account_type": "BANK_ACCOUNT"
}
], - "customer_escrow_id": "82800000011",
- "created": "2022-08-05T07:11:14.173Z",
- "updated": "2022-08-05T07:11:15.675Z",
- "current_balance": 0,
- "status": "FAILED",
- "failure_reason": "NAME_BLACKLISTED_ERROR"
}Callback Notify Create Customer will return latest result create customer after status 'default' was created on api create customer success.
Your system must return an HTTP status code to indicate the callback result:
| HTTP | Code | Description |
|---|---|---|
| 200 | Callback | received successfully |
| Other | Callback failed | CRING! will retry every 1 minute, up to 5 times |
📥 Request Requirements must contain following information:
| Authorization | string Example: Basic eyJraWQiOi...Jzc29zIiwiY Represents access_token of a request; string starts with keyword |
| event | string Callback event. |
| created | string <date-time> Timestamp when the event was triggered (ISO 8601). |
| business_id | string CRING's identifier for your business. |
object Details of the customer information. |
{- "event": "escrow.p2p_customer",
- "created": "2022-06-09T09:29:51.918Z",
- "business_id": "f59fcbb7-848d-4242-af07-a8bb7e3ab37c",
- "data": {
- "id": "dd061c60-1857-11ed-be1c-c3fff448ba7a",
- "given_name": "John",
- "surname": "Doe",
- "mobile_number": "085724715978",
- "email": "john.doe@gmail.com",
- "ktp_number": "3314131006940001",
- "npwp_number": "012345678901234",
- "type": "LENDER",
- "external_id": "lender_48",
- "customer_accounts": [
- {
- "account_code": "BNI",
- "account_number": "1234512345",
- "is_preferred": true,
- "account_type": "BANK_ACCOUNT"
}
], - "customer_escrow_id": "8288000000000011",
- "created": "2022-08-10T02:55:16.775Z",
- "updated": "2022-08-10T03:06:12.970Z",
- "current_balance": 0,
- "status": "ACTIVE",
- "failure_reason": null
}
}nullThis service used to create and/or register a new investor account. The result of this service is investor will get an account number which reffered as Rekening Dana Lender or RDL.
📥 Request Requirements must contain following information:
| Authorization | string Example: Basic eyJraWQiOi...Jzc29zIiwiY Represents access_token of a request; string starts with keyword |
| external_id required | string Unique ID of the investor. Accepted symbols (space)_:,.- |
| title required | string Titles to be shown before your name (Title Code) |
| first_name | string First name (alphabet only) |
| middle_name | string Middle name (alphabet only) |
| last_name required | string Last name. If no surname, can fill with full name. (alphabet and space only) |
| npwp_number required | string Indonesian Tax ID |
| nationality required | string Country code (ISO3166-1 alpha-2). Only ID supported currently |
| domicile_country required | string Country of residence (ISO3166-1 alpha-2) |
| religion required | string Religion code (Religion Code) |
| birth_place required | string Place of birth in Indonesia. Accepted symbols (space).,'- |
| birth_date required | string <date> Birth date (format YYYY-MM-DD) |
| gender required | string Enum: "MALE" "FEMALE" Gender of the investor |
| marital_status required | string Marital status (Marital Status Code) |
| mother_maiden_name required | string Mother's maiden name (alphabet and space only) |
| job_code required | string Job code (Job Code) |
| education required | string Education level (Education Code) |
| id_number required | string KTP number |
| id_issuing_city required | string City where ID was issued. Accepted symbols (space).,'- |
| id_expiry_date | string <date> ID expiry date. Use 2099-01-01 if lifetime |
| address_street required | string Street address. Accepted symbols (space)/():;.,'- |
| address_rt_rw_perum required | string RT/RW info. Accepted symbols (space)/():;.,'- |
| address_kelurahan required | string Kelurahan info. Accepted symbols (space)/():;.,'- |
| address_kecamatan required | string Kecamatan info. Accepted symbols (space)/():;.,'- |
| zip_code required | string Postal code |
| home_phone_number | string Home phone in format xxx-xxxxxx |
| office_phone_number | string Office phone in format xxx-xxxxxx |
| mobile_phone_number required | string Mobile phone number |
| fax_number | string Fax number in format xxx-xxxxxx |
| branch_opening_location_code required | string BNI branch where account will be opened (Branch Code) |
| monthly_income_range required | string Monthly income range (Income Range Code) |
| email required | string Valid email address |
| account_type required | string Account type |
| open_account_reason required | string Reason for opening the account (Reason Code) |
| source_of_fund required | string Source of the funds (Source of Fund Code) |
{- "external_id": "investor-123",
- "title": "BPK",
- "first_name": "Wisnu",
- "middle_name": "Praditya",
- "last_name": "Utama",
- "npwp_number": "012345678901234",
- "nationality": "ID",
- "domicile_country": "ID",
- "religion": "CHRISTIAN",
- "birth_place": "Surakarta",
- "birth_date": "1994-06-10",
- "gender": "MALE",
- "marital_status": "SINGLE",
- "mother_maiden_name": "Sumiyati",
- "job_code": "EMPLOYEE",
- "education": "BACHELORS_DEGREE",
- "id_number": "1234567890123456",
- "id_issuing_city": "Surakarta",
- "id_expiry_date": "2017-06-10",
- "address_street": "Jl. Sultan Hasanudin No. 47-51",
- "address_rt_rw_perum": "RT 06 RW 02",
- "address_kelurahan": "Melawai",
- "address_kecamatan": "Kebayoran Baru",
- "zip_code": "12160",
- "home_phone_number": "021-081111",
- "office_phone_number": "021-091111",
- "mobile_phone_number": "08123123123",
- "fax_number": "0271-08123123",
- "branch_opening_location_code": "JAKARTA_KOTA",
- "monthly_income_range": "GTE_20_AND_LT_50_MILLION",
- "email": "wisnuputra123123@gmail.com",
- "account_type": "RDL",
- "open_account_reason": "INVESTMENTS",
- "source_of_fund": "SALARY"
}{- "id": "6bc50b40-dea0-11e9-aeaf-651a8718890e",
- "external_id": "investor-123",
- "title": "BPK",
- "first_name": "Wisnu",
- "middle_name": "Praditya",
- "last_name": "Utama",
- "npwp_number": "012345678901234",
- "nationality": "ID",
- "domicile_country": "ID",
- "religion": "CHRISTIAN",
- "birth_place": "Surakarta",
- "birth_date": "1994-06-10T00:00:00.000Z",
- "gender": "MALE",
- "marital_status": "SINGLE",
- "mother_maiden_name": "Sumiyati",
- "job_code": "EMPLOYEE",
- "education": "BACHELORS_DEGREE",
- "id_number": "1234567890123456",
- "id_issuing_city": "Surakarta",
- "id_expiry_date": "2017-06-10T00:00:00.000Z",
- "address_street": "Jl. Sultan Hasanudin No. 47-51",
- "address_rt_rw_perum": "RT 06 RW 02",
- "address_kelurahan": "Melawai",
- "address_kecamatan": "Kebayoran Baru",
- "zip_code": "12160",
- "home_phone_number": "021-081111",
- "office_phone_number": "021-091111",
- "mobile_phone_number": "08123123123",
- "fax_number": "0271-08123123",
- "branch_opening_location_code": "JAKARTA_KOTA",
- "monthly_income_range": "GTE_20_AND_LT_50_MILLION",
- "email": "wisnuputra123123@gmail.com",
- "account_type": "RDL",
- "open_account_reason": "INVESTMENTS",
- "source_of_fund": "SALARY",
- "account_status": "PENDING",
- "created": "2019-09-24T07:53:39.572Z",
- "updated": "2019-09-24T07:53:43.505Z",
- "account_balance": 0
}This service used to upload selfie photo customer lender / investor to completing data register investor.
The result of this service is investor will get a selfie photo added on investor's data to continue create Rekening Dana Lender or RDL.
📥 Request Requirements must contain following information:
| Authorization | string Example: Basic eyJraWQiOi...Jzc29zIiwiY Represents access_token of a request; string starts with keyword |
| file required | any <byte> Base64 encoded image data. example: "iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0..." Make sure to include only the Base64 string without metadata (e.g. |
{- "message": "Success"
}This service used by P2P to Get an existing investor with by using the id when Create Investor.
📥 Request Requirements must contain following information:
| id required | string Example: b9666300-7300-11e9-8373-6753d37f1b1f Investor Id |
| Authorization | string Example: Basic eyJraWQiOi...Jzc29zIiwiY Represents access_token of a request; string starts with keyword |
{- "id": "6bc50b40-dea0-11e9-aeaf-651a8718890e",
- "external_id": "investor-123",
- "title": "BPK",
- "first_name": "Wisnu",
- "middle_name": "Praditya",
- "last_name": "Utama",
- "npwp_number": "012345678901234",
- "nationality": "ID",
- "domicile_country": "ID",
- "religion": "CHRISTIAN",
- "birth_place": "Surakarta",
- "birth_date": "1994-06-10T00:00:00.000Z",
- "gender": "MALE",
- "marital_status": "SINGLE",
- "mother_maiden_name": "Sumiyati",
- "job_code": "EMPLOYEE",
- "education": "BACHELORS_DEGREE",
- "id_number": "1234567890123456",
- "id_issuing_city": "Surakarta",
- "id_expiry_date": "2017-06-10T00:00:00.000Z",
- "address_street": "Jl. Sultan Hasanudin No. 47-51",
- "address_rt_rw_perum": "RT 06 RW 02",
- "address_kelurahan": "Melawai",
- "address_kecamatan": "Kebayoran Baru",
- "zip_code": "12160",
- "branch_opening_location_code": "JAKARTA_KOTA",
- "monthly_income_range": "GTE_20_AND_LT_50_MILLION",
- "email": "wisnuputra123123@gmail.com",
- "account_type": "RDL",
- "open_account_reason": "INVESTMENTS",
- "source_of_fund": "SALARY",
- "cif_number": "49381125087428936000",
- "account_number": "2349283596162630000",
- "home_phone_number": "021-081111",
- "office_phone_number": "021-091111",
- "mobile_phone_number": "08123123123",
- "fax_number": "0271-08123123",
- "account_status": "ACTIVE",
- "created": "2019-02-12T03:47:36.449Z",
- "updated": "2019-02-12T03:47:36.647Z",
- "account_balance": 1000000
}This service used by P2P to Get an existing investor with by using the external_id when Create Investor.
📥 Request Requirements must contain following information:
| external_id required | string Example: b9666300-7300-11e9-8373-6753d37f1b1f External Id |
| Authorization | string Example: Basic eyJraWQiOi...Jzc29zIiwiY Represents access_token of a request; string starts with keyword |
{- "id": "6bc50b40-dea0-11e9-aeaf-651a8718890e",
- "external_id": "investor-123",
- "title": "BPK",
- "first_name": "Wisnu",
- "middle_name": "Praditya",
- "last_name": "Utama",
- "npwp_number": "012345678901234",
- "nationality": "ID",
- "domicile_country": "ID",
- "religion": "CHRISTIAN",
- "birth_place": "Surakarta",
- "birth_date": "1994-06-10T00:00:00.000Z",
- "gender": "MALE",
- "marital_status": "SINGLE",
- "mother_maiden_name": "Sumiyati",
- "job_code": "EMPLOYEE",
- "education": "BACHELORS_DEGREE",
- "id_number": "1234567890123456",
- "id_issuing_city": "Surakarta",
- "id_expiry_date": "2017-06-10T00:00:00.000Z",
- "address_street": "Jl. Sultan Hasanudin No. 47-51",
- "address_rt_rw_perum": "RT 06 RW 02",
- "address_kelurahan": "Melawai",
- "address_kecamatan": "Kebayoran Baru",
- "zip_code": "12160",
- "branch_opening_location_code": "JAKARTA_KOTA",
- "monthly_income_range": "GTE_20_AND_LT_50_MILLION",
- "email": "wisnuputra123123@gmail.com",
- "account_type": "RDL",
- "open_account_reason": "INVESTMENTS",
- "source_of_fund": "SALARY",
- "cif_number": "49381125087428936000",
- "account_number": "2349283596162630000",
- "home_phone_number": "021-081111",
- "office_phone_number": "021-091111",
- "mobile_phone_number": "08123123123",
- "fax_number": "0271-08123123",
- "account_status": "ACTIVE",
- "created": "2019-02-12T03:47:36.449Z",
- "updated": "2019-02-12T03:47:36.647Z",
- "account_balance": 1000000
}This callback returns the latest result of Create Customer API when the default status was successfully created.
Once the investor RDL account is successfully registered and activated by the bank, the callback will include:
account_status: ACTIVE
account_number: Filled with the created RDL account number
cif_number: Filled with the bank CIF number
If the investor registration to the bank fails, the callback will include:
account_status: FAILED
failure_reason: Filled with the investor registration failure error code
Your system must return an HTTP status code to indicate the callback result:
| HTTP | Code | Description |
|---|---|---|
| 200 | Callback | received successfully |
| Other | Callback failed | CRING! will retry every 1 minute, up to 5 times |
📥 Request Requirements must contain following information:
| Authorization | string Example: Basic eyJraWQiOi...Jzc29zIiwiY Represents access_token of a request; string starts with keyword |
| id | string Unique identifier of the investor record |
| external_id | string Unique ID of the investor assigned by P2P system |
| title | string Title of the investor (e.g., Mr, Mrs, BPK) (Title Code) |
| first_name | string First name of the investor |
| middle_name | string Middle name of the investor |
| last_name | string Last name of the investor |
| npwp_number | string Indonesian Tax Identification Number (NPWP) |
| nationality | string Country code based on ISO3166-1 alpha-2 format |
| domicile_country | string Country of residence in ISO3166-1 alpha-2 format |
| religion | string Religion of the investor (Religion Code) |
| birth_place | string City or location of birth |
| birth_date | string <date> Date of birth in YYYY-MM-DD format |
| gender | string Enum: "MALE" "FEMALE" Gender of the investor |
| marital_status | string Enum: "SINGLE" "MARRIED" "DIVORCED" "WIDOWED" Marital status of the investor (Marital Status Code) |
| mother_maiden_name | string Mother’s maiden name |
| job_code | string Occupation code of the investor (Job Code) |
| education | string Highest education level of the investor (Education Code) |
| id_number | string National identity number (KTP) |
| id_issuing_city | string City where the ID was issued |
| id_expiry_date | string <date> Expiration date of the ID. Use |
| address_street | string Street address of the investor |
| address_rt_rw_perum | string RT/RW or housing complex information |
| address_kelurahan | string Kelurahan (urban village) name |
| address_kecamatan | string Kecamatan (sub-district) name |
| zip_code | string Postal code |
| home_phone_number | string Home phone number |
| office_phone_number | string Office phone number |
| mobile_phone_number | string Mobile phone number |
| fax_number | string Fax number |
| branch_opening_location_code | string Branch code where RDL account was opened (Branch Code) |
| monthly_income_range | string Monthly income range of investor (Income Range Code) |
string Email address of the investor | |
| account_type | string Account type |
| open_account_reason | string Purpose of opening the account (Reason Code) |
| source_of_fund | string Source of funds used by investor (Source of Fund Code) |
| account_status | string Enum: "PENDING" "ACTIVE" "FAILED" Status of RDL account registration |
| cif_number | string CIF number assigned by the bank |
| account_number | string Created RDL account number |
| failure_reason | string or null Reason of failure if account creation failed (Failure Reason) |
{- "id": "e9f8c0d3-4ab6-4e9e-bd64-9e4f9c6a7e11",
- "external_id": "investor-123",
- "title": "BPK",
- "first_name": "Wisnu",
- "middle_name": "Praditya",
- "last_name": "Utama",
- "npwp_number": "012345678901234",
- "nationality": "ID",
- "domicile_country": "ID",
- "religion": "CHRISTIAN",
- "birth_place": "Surakarta",
- "birth_date": "1994-06-10",
- "gender": "MALE",
- "marital_status": "SINGLE",
- "mother_maiden_name": "Sumiyati",
- "job_code": "EMPLOYEE",
- "education": "BACHELORS_DEGREE",
- "id_number": "1234567890123456",
- "id_issuing_city": "Surakarta",
- "id_expiry_date": "2099-12-31",
- "address_street": "Jl. Sultan Hasanudin No. 47-51",
- "address_rt_rw_perum": "RT 06 RW 02",
- "address_kelurahan": "Melawai",
- "address_kecamatan": "Kebayoran Baru",
- "zip_code": "12160",
- "home_phone_number": "021-081111",
- "office_phone_number": "021-091111",
- "mobile_phone_number": "08123123123",
- "fax_number": "0271-08123123",
- "branch_opening_location_code": "JAKARTA_KOTA",
- "monthly_income_range": "GTE_20_AND_LT_50_MILLION",
- "email": "wisnuputra123123@gmail.com",
- "account_type": "RDL",
- "open_account_reason": "INVESTMENTS",
- "source_of_fund": "SALARY",
- "account_status": "ACTIVE",
- "cif_number": "987654321012345",
- "account_number": "8888000123456789",
- "failure_reason": null
}nullWe will send you RDL payment callback with a body request when investor paid into the RDL bank account.
Your system must return an HTTP status code to indicate the callback result:
| HTTP | Code | Description |
|---|---|---|
| 200 | Callback | received successfully |
| Other | Callback failed | CRING! will retry every 1 minute, up to 5 times |
📥 Request Requirements must contain following information:
| Authorization | string Example: Basic eyJraWQiOi...Jzc29zIiwiY Represents access_token of a request; string starts with keyword |
| id | string The unique ID assigned by CRING’s system to the RDL payment |
| status | string Status of the RDL payment. It will always be SETTLED |
| amount | number The payment amount received by the RDL bank account |
| account_number | string The RDL bank account number that received the payment |
| investor_id | string The RDL Investor's ID who owns the paid RDL bank account |
| created | string <date-time> An ISO 8601 timestamp indicating when the RDL payment was created |
| updated | string <date-time> An ISO 8601 timestamp indicating when the RDL payment was last updated |
| transaction_timestamp | string <date-time> An ISO 8601 timestamp indicating when the end customer made the payment to the RDL account |
{- "id": "83112450-2e79-11e9-95b4-9f8e56f00546",
- "status": "SETTLED",
- "amount": 1000000,
- "account_number": "23429283596162630000",
- "investor_id": "e736f317-d16d-4414-bcd5-92b4ba73a6f4",
- "created": "2019-02-12T03:51:43.637Z",
- "updated": "2019-02-12T03:51:43.694Z",
- "transaction_timestamp": "2019-02-12T03:51:43.637Z"
}nullCreate a new fixed virtual account to accept payments from lenders or borrowers into your Escrow Account using our Create Fixed Virtual Account request.
CRING will send you a callback when the Create P2P Fixed VA request is successful.
📥 Request Requirements must contain following information:
| Authorization | string Example: Basic eyJraWQiOi...Jzc29zIiwiY Represents access_token of a request; string starts with keyword |
| external_id required | string A unique ID for your virtual account. |
| bank_code required | string Bank code of the virtual account. Available bank codes MANDIRI, BNI, PERMATA, BRI (Bank Code) |
| virtual_account_number | string Assigned virtual account number excluding your merchant_code. If empty, system will assign one randomly. |
| name required | string Name of your virtual account. Shown on bank interfaces. |
| suggested_amount | number Amount suggested to the customer for payment. Visible on certain bank interfaces (Mandiri, BNI). |
| is_closed | boolean For now, only accepted true, then expected_amount must be included. The Payment VA will only accept that amount. |
| expected_amount | number If provided, the VA accepts only the amount specified here. Required if is_closed is true. |
| expiration_date | string <date-time> Expiry time of the virtual account. If not provided, defaults to 31 years from creation. |
| is_single_use | boolean When true, the VA will automatically expire after one successful payment. Defaults to false. |
| customer_id required | string The unique ID of the customer who will make the payment. Must refer to a previously created customer. |
| payment_type required | string Enum: "LOAN" "REPAYMENT" Type of payment collected from the customer. Valid values LOAN (from lender), REPAYMENT (from borrower). |
| loan_id | string Required if payment_type is REPAYMENT. Forbidden if payment_type is LOAN. Represents the Loan ID related to the payment. |
{- "external_id": "va-1233889871",
- "bank_code": "BNI",
- "virtual_account_number": "88082541238",
- "name": "Agus P",
- "suggested_amount": 150000,
- "is_closed": true,
- "expected_amount": 150000,
- "expiration_date": "2025-01-31T17:00:00.000Z",
- "is_single_use": true,
- "customer_id": "5c1774e767400e2b76036461",
- "payment_type": "LOAN",
- "loan_id": ""
}{- "id": "b7f6cc0f-6b90-4cde-a8c3-7763c4feda08",
- "external_id": "va-1233889871",
- "bank_code": "BNI",
- "merchant_code": 8808,
- "account_number": 88082541238,
- "name": "Agus Payment",
- "is_closed": true,
- "expected_amount": 150000,
- "expiration_date": "2018-12-31T17:00:00.000Z",
- "customer_id": "5c1774e767400e2b76036461",
- "payment_type": "LOAN",
- "loan_id": "",
- "status": "PENDING",
- "created": "2018-12-20T17:00:00.000Z",
- "updated": "2018-12-20T17:00:00.000Z"
}Update an existing Fixed Virtual Account for a variety of uses cases, including (but not limited to) the following:
Updating the loan_id to allow a Borrower to repay another loan using the same Fixed VA.
Updating the expected_amount for closed VA, if the repayment amount changes.
Updating the expiration_date so that your customers can have more time to pay into the VA.
CRING! will send you a callback when the Update P2P Fixed VA request is successful.
📥 Request Requirements must contain following information:
| Authorization | string Example: Basic eyJraWQiOi...Jzc29zIiwiY Represents access_token of a request; string starts with keyword |
| loan_id | string Loan ID related to the Fixed VA. Can only be updated for a |
| expected_amount | number If provided, the VA accepts only the amount specified here. Required if is_closed is true. |
| suggested_amount | number Amount suggested to the customer for payment. Visible on certain bank interfaces (Mandiri, BNI). |
| is_single_use | boolean When true, the VA will automatically expire after one successful payment. Defaults to false. |
{- "loan_id": "loan-1234356",
- "expected_amount": 150000,
- "suggested_amount": 150000,
- "is_single_use": true
}{- "id": "b7f6cc0f-6b90-4cde-a8c3-7763c4feda08",
- "external_id": "va-1233889871",
- "bank_code": "BNI",
- "merchant_code": 8808,
- "account_number": 88082541238,
- "name": "Agus Payment",
- "is_closed": true,
- "expected_amount": 150000,
- "expiration_date": "2018-12-31T17:00:00.000Z",
- "customer_id": "5c1774e767400e2b76036461",
- "payment_type": "REPAYMENT",
- "loan_id": "loan-123456",
- "status": "PENDING",
- "created": "2018-12-20T17:00:00.000Z",
- "updated": "2018-12-20T17:00:00.000Z"
}Get an existing P2P Fixed VA by using the external_id. You can use this to query for a P2P Fixed VA, or to check the current status of P2P Fixed VA before the callback is received by your URL.
📥 Request Requirements must contain following information:
| external_id required | string Example: b9666300-7300-11e9-8373-6753d37f1b1f External Id |
| Authorization | string Example: Basic eyJraWQiOi...Jzc29zIiwiY Represents access_token of a request; string starts with keyword |
{- "id": "b7f6cc0f-6b90-4cde-a8c3-7763c4feda08",
- "external_id": "va-1233889871",
- "bank_code": "BNI",
- "merchant_code": 8808,
- "account_number": 88082541238,
- "name": "Agus Payment",
- "is_closed": true,
- "expected_amount": 150000,
- "expiration_date": "2018-12-31T17:00:00.000Z",
- "customer_id": "5c1774e767400e2b76036461",
- "payment_type": "REPAYMENT",
- "loan_id": "loan-123456",
- "status": "PENDING",
- "created": "2018-12-20T17:00:00.000Z",
- "updated": "2018-12-20T17:00:00.000Z"
}Get an existing P2P Fixed VA with payment details by using the external_id. You can use this to query for a P2P Fixed VA and check details of payments from the VA.
📥 Request Requirements must contain following information:
| external_id required | string Example: b9666300-7300-11e9-8373-6753d37f1b1f External Id |
| Authorization | string Example: Basic eyJraWQiOi...Jzc29zIiwiY Represents access_token of a request; string starts with keyword |
{- "id": "b7f6cc0f-6b90-4cde-a8c3-7763c4feda08",
- "external_id": "va-1233889871",
- "bank_code": "BNI",
- "merchant_code": 8808,
- "account_number": 88082541238,
- "name": "Agus Payment",
- "is_closed": true,
- "is_single_use": false,
- "expected_amount": 150000,
- "suggested_amount": 150000,
- "expiration_date": "2018-12-31T17:00:00.000Z",
- "customer_id": "5c1774e767400e2b76036461",
- "payment_type": "REPAYMENT",
- "loan_id": "loan-c1234356",
- "status": "ACTIVE",
- "created": "2018-12-20T17:00:00.000Z",
- "updated": "2018-12-20T17:00:00.000Z",
- "virtual_account_payments": [
- {
- "id": "c50e88e0-787d-11e9-bc8d-97acc03dc038",
- "amount": 10000,
- "transaction_timestamp": "2018-12-20T17:00:00.000Z",
- "status": "SETTLED",
- "created": "2018-12-20T17:00:00.000Z",
- "updated": "2018-12-20T17:00:00.000Z"
}
]
}Get status payment of P2P Fixed VA before callback receive.
📥 Request Requirements must contain following information:
| Authorization | string Example: Basic eyJraWQiOi...Jzc29zIiwiY Represents access_token of a request; string starts with keyword |
| virtual_account_number required | string Virtual account number including the merchant code. |
{- "virtual_account_number": "88082541238"
}{- "id": "b7f6cc0f-6b90-4cde-a8c3-7763c4feda08",
- "virtual_account_number": "88082541238",
- "expired_status": true,
- "payment_status": "paid",
- "payment_date": "2018-12-20T17:00:00.000Z"
}You can receive notifications via a callback whenever a virtual account has been successfully created, updated, or a new payment is made into a virtual account.
Your system must return an HTTP status code to indicate the callback result:
| HTTP | Code | Description |
|---|---|---|
| 200 | Callback | received successfully |
| Other | Callback failed | CRING! will retry every 1 minute, up to 5 times |
Once Fixed VA created by bank, we will send callback with request body with status ACTIVE.
Once Fixed VA updated by bank, we will send callback with request body with status ACTIVE.
This callback is sent when payment has been made into a P2P Fixed Virtual Account and the payment is settling into the Escrow Account. Our request payload with status SETTLING.
This callback is sent when payment has been settled into the Escrow Account. Our request payload with status SETTLED.
📥 Request Requirements must contain following information:
| Authorization | string Example: Basic eyJraWQiOi...Jzc29zIiwiY Represents access_token of a request; string starts with keyword |
| id | string The unique ID assigned by CRING’s system to the RDL payment |
| status | string Status of the RDL payment. It will always be SETTLED |
| amount | number The payment amount received by the RDL bank account |
| account_number | string The RDL bank account number that received the payment |
| investor_id | string The RDL Investor's ID who owns the paid RDL bank account |
| created | string <date-time> An ISO 8601 timestamp indicating when the RDL payment was created |
| updated | string <date-time> An ISO 8601 timestamp indicating when the RDL payment was last updated |
| transaction_timestamp | string <date-time> An ISO 8601 timestamp indicating when the end customer made the payment to the RDL account |
{- "id": "83112450-2e79-11e9-95b4-9f8e56f00546",
- "status": "SETTLED",
- "amount": 1000000,
- "account_number": "23429283596162630000",
- "investor_id": "e736f317-d16d-4414-bcd5-92b4ba73a6f4",
- "created": "2019-02-12T03:51:43.637Z",
- "updated": "2019-02-12T03:51:43.694Z",
- "transaction_timestamp": "2019-02-12T03:51:43.637Z"
}nullThe CRING RDL Disbursements API allows you to transfer funds from a specific RDL (Rekening Dana Lender) to third-party accounts for various purposes — such as loan disbursements, withdrawals, or other financial operations.
⚠️ Important:
Once a disbursement request has been submitted, it cannot be canceled or reversed.
📥 Request Requirements must contain following information:
| Authorization | string Example: Basic eyJraWQiOi...Jzc29zIiwiY Represents access_token of a request; string starts with keyword |
| external_id required | string Unique ID provided by you for your own reference, used to identify and reconcile fund transfers. Accepted characters a-z, A-Z, 0-9; symbols (space) _ , . - |
| destination_account_code required | string Bank code or destination bank identifier. |
| destination_account_holder_name required | string Name of the account holder, as per the bank’s records. Used for verification and error/customer support scenarios. Accepted characters a-z, A-Z, 0-9; symbols (space) . , ' / - |
| destination_account_number required | string Account number of the destination you wish to transfer funds to. Accepted characters 0-9.
|
| description required | string Description of the fund transfer, set by you. Accepted characters a-z, A-Z, 0-9; symbols (space) / ( ) ; . , ' _ - |
| amount required | number Amount of funds you wish to transfer.
Note Transactions above Rp 100,000,000 may require reporting to financial authorities. |
{- "external_id": "ab,cd:ext-id.test_1",
- "destination_account_code": "BCA",
- "destination_account_holder_name": "Fa'ni, S.T-09/2017",
- "destination_account_number": "9883456789",
- "description": "esc-wtdrw-123",
- "amount": 10000
}{- "status": "PENDING",
- "id": "7f5cc350-2e83-11e9-98dc-d12e9c286a1a",
- "investor_id": 12312312312,
- "external_id": "rdl-disbursement-951",
- "destination_account_code": "BCA",
- "destination_account_holder_name": "Lingga",
- "destination_account_number": "9883456789",
- "amount": 10000,
- "updated": "2019-02-12T05:03:12.426Z",
- "created": "2019-02-12T05:03:12.438Z"
}Retrieve detailed information about a specific RDL Disbursement using its unique ID.
This endpoint allows you to fetch an existing RDL Disbursement record by providing the corresponding id.
It can be used to:
This helps you ensure real-time monitoring and reconciliation of disbursement activities initiated through CRING.
📥 Request Requirements must contain following information:
| investor_id required | string Example: b9666300-7300-11e9-8373-6753d37f1b1f Investor Id |
| id required | string Example: b03bddcff-b600-bj56-ca3w-69n5d37f1vcb RDL Disbursement Id |
| Authorization | string Example: Basic eyJraWQiOi...Jzc29zIiwiY Represents access_token of a request; string starts with keyword |
{- "status": "COMPLETED",
- "id": "7f5cc350-2e83-11e9-98dc-d12e9c286a1a",
- "investor_id": "12312312312",
- "external_id": "rdl-disbursement-951",
- "destination_account_code": "BCA",
- "destination_account_holder_name": "Lingga",
- "destination_account_number": "9883456789",
- "amount": 10000,
- "bank_reference": "bni-7f65eb11-2e83-11e9-b22f-2b4f9440c84b",
- "updated": "2019-02-12T05:03:12.563Z",
- "created": "2019-02-12T05:03:12.438Z"
}Retrieve detailed information about a specific RDL Disbursement using its unique External ID.
This endpoint allows you to fetch an existing RDL Disbursement record by providing the corresponding id.
It can be used to:
This helps you ensure real-time monitoring and reconciliation of disbursement activities initiated through CRING.
📥 Request Requirements must contain following information:
| investor_id required | string Example: b9666300-7300-11e9-8373-6753d37f1b1f Investor Id |
| id required | string Example: rdl-disbursement-951 RDL Disbursement External Id |
| Authorization | string Example: Basic eyJraWQiOi...Jzc29zIiwiY Represents access_token of a request; string starts with keyword |
{- "status": "COMPLETED",
- "id": "7f5cc350-2e83-11e9-98dc-d12e9c286a1a",
- "investor_id": "12312312312",
- "external_id": "rdl-disbursement-951",
- "destination_account_code": "BCA",
- "destination_account_holder_name": "Lingga",
- "destination_account_number": "9883456789",
- "amount": 10000,
- "bank_reference": "bni-7f65eb11-2e83-11e9-b22f-2b4f9440c84b",
- "updated": "2019-02-12T05:03:12.563Z",
- "created": "2019-02-12T05:03:12.438Z"
}You can receive asynchronous notifications via callback whenever the status of an RDL disbursement changes.
To enable this feature, set your callback URL in the CRING Dashboard.
Triggered when the disbursement process from the RDL to the destination bank account has been successfully completed.
The callback payload contains the RDL Disbursement Resource with:
status: COMPLETEDbank_reference: filled with the bank transaction reference ID.This callback confirms that the funds have been successfully transferred to the beneficiary account.
Triggered when the disbursement process fails to reach the destination bank account.
The callback payload contains the RDL Disbursement Resource with:
status: FAILEDfailure_code: provides the reason for the disbursement failure.Your system must return an HTTP status code to indicate the callback result:
| HTTP | Code | Description |
|---|---|---|
| 200 | Callback | received successfully |
| Other | Callback failed | CRING! will retry every 1 minute, up to 5 times |
📥 Request Requirements must contain following information:
| Authorization | string Example: Basic eyJraWQiOi...Jzc29zIiwiY Represents access_token of a request; string starts with keyword |
| status | string Current status of the RDL disbursement. Possible values include PENDING, COMPLETED, or FAILED. |
| id | string Unique identifier of the RDL disbursement generated by CRING. |
| investor_id | string Unique ID of the investor initiating the disbursement. |
| external_id | string Unique external ID provided by the client for reconciliation and tracking purposes. |
| destination_account_code | string Bank code of the destination account. |
| destination_account_holder_name | string Name of the destination account holder, as registered at the bank. |
| destination_account_number | string Account number of the destination bank account where the funds are transferred. |
| amount | number <double> Amount of funds disbursed from the RDL to the destination account. |
| bank_reference | string Only shown if RDL Disbursement
|
| failure_code | string Only shown if RDL Disbursement
|
| updated | string <date-time> Timestamp indicating when the disbursement record was last updated. |
| created | string <date-time> Timestamp indicating when the disbursement record was created. |
{- "status": "COMPLETED",
- "id": "7f5cc350-2e83-11e9-98dc-d12e9c286a1a",
- "investor_id": "12312312312",
- "external_id": "rdl-disbursement-951",
- "destination_account_code": "BCA",
- "destination_account_holder_name": "Lingga",
- "destination_account_number": "81232131",
- "amount": 10000,
- "bank-reference": "bni-7f65eb11-2e83-11e9-b22f-2b4f9440c84b",
- "updated": "2019-02-12T05:03:12.563Z",
- "created": "2019-02-12T05:03:12.438Z"
}nullUse this endpoint to disburse funds from P2P's Escrow Account to a loan borrower’s bank account. This API is typically used when a loan will be funded by one or more lenders.
When the disbursement request is made, the funds will be deducted from the designated P2P's Escrow and sent to the borrower’s destination account as specified in the request payload.
Once the transaction has been processed, the system will return a disbursement object containing the transaction details and status.
📥 Request Requirements must contain following information:
| Authorization | string Example: Basic eyJraWQiOi...Jzc29zIiwiY Represents access_token of a request; string starts with keyword |
| external_id required | string Unique ID you provided for the loan disbursement. |
| loan_maturity_date required | string <date-time> Date and time on which repayment of the loan needs to be made. |
| annual_percentage_rate required | number Annual percentage rate (APR). |
required | Array of objects More than one lender can be identified here since the API allows multiple lenders to contribute funds to a given loan. |
| borrower_id required | string The unique ID of the borrower (set by you using the Create Customer endpoint). |
| destination_account_code required | string Code of the destination bank or e-Wallet. |
| destination_account_holder_name required | string Name of the account holder as per the destination bank’s or e-Wallet’s records. |
| destination_account_number required | string Destination bank account number or e-Wallet phone number.
|
| loan_id required | string ID of the loan you provided. |
| description | string Optional description to send with the transaction. |
{- "external_id": "ab,cd:va-my.test_1",
- "loan_maturity_date": "2018-12-23T13:50:12.000Z",
- "annual_percentage_rate": 15,
- "lenders": [
- {
- "customer_id": "5c1774e767400e2b76036461",
- "funded_amount": 1200000
}
], - "borrower_id": "5b51e6ba0071ec521008e21d",
- "destination_account_code": "BCA",
- "destination_account_holder_name": "John Doe",
- "destination_account_number": 8982312309,
- "loan_id": "cc123456",
- "description": "loan-disb-123"
}{- "id": "c80fb93c-b9f7-419d-a221-29bedc87a778",
- "external_id": "loan-1233889871",
- "loan_maturity_date": "2018-12-23T13:50:12.000Z",
- "annual_percentage_rate": 15,
- "lenders": [
- {
- "customer_id": "5c1774e767400e2b76036461",
- "funded_amount": 1200000
}
], - "principal_amount": 2050000,
- "borrower_id": "5b51e6ba0071ec521008e21d",
- "destination_account_code": "BCA",
- "destination_account_holder_name": "John Doe",
- "destination_account_number": "8982312309",
- "loan_id": "loan-123456",
- "status": "PENDING",
- "user_id": "5b51e6ba0071ec521008e21d",
- "created": "2018-12-12T13:50:12.000Z",
- "updated": "2018-12-12T13:50:12.000Z"
}Retrieve detailed information about a specific RDL Disbursement using its unique ID.
This endpoint allows you to fetch an existing RDL Disbursement record by providing the corresponding id.
It can be used to:
This helps you ensure real-time monitoring and reconciliation of disbursement activities initiated through CRING.
📥 Request Requirements must contain following information:
| investor_id required | string Example: b9666300-7300-11e9-8373-6753d37f1b1f Investor Id |
| id required | string Example: b03bddcff-b600-bj56-ca3w-69n5d37f1vcb RDL Disbursement Id |
| Authorization | string Example: Basic eyJraWQiOi...Jzc29zIiwiY Represents access_token of a request; string starts with keyword |
{- "status": "COMPLETED",
- "id": "7f5cc350-2e83-11e9-98dc-d12e9c286a1a",
- "investor_id": "12312312312",
- "external_id": "rdl-disbursement-951",
- "destination_account_code": "BCA",
- "destination_account_holder_name": "Lingga",
- "destination_account_number": "9883456789",
- "amount": 10000,
- "bank_reference": "bni-7f65eb11-2e83-11e9-b22f-2b4f9440c84b",
- "updated": "2019-02-12T05:03:12.563Z",
- "created": "2019-02-12T05:03:12.438Z"
}You will receive real-time notifications via a callback whenever the status of a Loan Disbursement changes during the disbursement process — from initiation to completion or failure.
You can add your callback URL in the CRING Dashboard.
A callback with status: DISBURSING will be sent once the loan disbursement amount has been successfully requested transfer from P2P's Escrow Account to Customer's Account.
This indicates that the disbursement process has started.
A callback with status: COMPLETED and the bank_reference field filled will be sent once the loan disbursement has been successfully transferred from Escrow Account to the borrower’s destination bank account.
This callback confirms that the transaction has been fully settled and the borrower has received the funds.
A callback with status: FAILED and a populated failure_code field will be sent if the loan disbursement fails to reach the borrower’s bank account.
Once the disbursement is marked as failed, the disbursed amount will automatically be refunded to P2P's Escrow Account.
You can refer to the failure_code for details on why the transaction failed (e.g., INVALID_DESTINATION).
Your system must return an HTTP status code to indicate the callback result:
| HTTP | Code | Description |
|---|---|---|
| 200 | Callback | received successfully |
| Other | Callback failed | CRING! will retry every 1 minute, up to 5 times |
📥 Request Requirements must contain following information:
| Authorization | string Example: Basic eyJraWQiOi...Jzc29zIiwiY Represents access_token of a request; string starts with keyword |
| id | string Unique ID generated for the loan disbursement. |
| external_id | string Unique external ID provided by the partner for reference and reconciliation. |
| loan_maturity_date | string <date-time> Date and time on which repayment of the loan needs to be made. |
| annual_percentage_rate | number Annual percentage rate of the loan. |
| principal_amount | number Total principal amount of the disbursement funded by all lenders. |
| borrower_id | string Unique ID of the borrower, as registered in CRING. |
| destination_account_code | string Bank or e-Wallet code of the destination account. |
| destination_account_holder_name | string Name of the account holder as per the bank’s records. |
| destination_account_number | string Account number or e-Wallet number of the destination. |
| loan_id | string Loan identifier used to associate this disbursement with its corresponding loan record. |
| created | string <date-time> Timestamp indicating when this loan disbursement was created. |
| updated | string <date-time> Timestamp indicating the latest update to this loan disbursement record. |
Array of objects List of lender objects contributing to the loan. | |
| failure_code | string Code representing the reason for failure of the loan disbursement. |
| status | string Current status of the loan disbursement. |
{- "id": "7fe55af0-1e82-11e9-8914-e96a7bd39676",
- "external_id": "1548188143",
- "loan_maturity_date": "2020-01-10T12:00:00.000Z",
- "annual_percentage_rate": 20,
- "principal_amount": 90000,
- "borrower_id": "ad695ee0-1e7d-11e9-8914-e96a7bd39676",
- "destination_account_code": "MANDIRI",
- "destination_account_holder_name": "Rizky",
- "destination_account_number": "7654321",
- "loan_id": "loan_164",
- "created": "2019-01-22T20:15:45.184Z",
- "updated": "2019-01-22T20:33:44.930Z",
- "lenders": [
- {
- "funded_amount": 45000,
- "customer_balance": 45000,
- "customer_id": "a51d0ac0-1e7d-11e9-8914-e96a7bd39676"
}, - {
- "funded_amount": 45000,
- "customer_balance": 45000,
- "customer_id": "946a98f0-1e7d-11e9-8914-e96a7bd39676"
}
], - "status": "DISBURSING"
}nullWhen a borrower makes a payment to a "repayment" virtual account, the funds are credited to the P2P's escrow balance, but no direct fund transfer occurs to the lenders’ bank accounts.
To record the repayment, the P2P Merchant must update the borrower’s and lenders’ ledgers accordingly.
Since a single loan can be funded by multiple lenders, the merchant is responsible for distributing the repayment amount among all participating lenders based on its own business logic or algorithm.
The Create Repayment API only updates the P2P's internal ledger — it deducts the borrower’s balance and adds to each lender’s balance.
No actual fund movement happens in the banking system during this process.
Lenders can later withdraw their funds via the Withdrawal API, or use the available balance for new loan investments.
📥 Request Requirements must contain following information:
| Authorization | string Example: Basic eyJraWQiOi...Jzc29zIiwiY Represents access_token of a request; string starts with keyword |
| external_id required | string Unique identifier for this repayment transaction provided by the merchant. |
| amount required | number Total repayment amount made by the borrower, in IDR. |
| loan_id required | string Unique identifier of the loan associated with this repayment. |
| borrower_id required | string <uuid> Unique ID of the borrower making the repayment. |
| lender_id required | string <uuid> Unique ID of the lender receiving the repayment portion. |
{- "external_id": "repayment_875",
- "amount": 976000,
- "loan_id": "loan_879",
- "borrower_id": "fa71ac40-417a-11e9-89d2-59190dbc8f33",
- "lender_id": "ef3eb2f0-417a-11e9-89d2-59190dbc8f33"
}{- "status": "PENDING",
- "id": "1d89bd20-4186-11e9-bcdf-0b59ec82f64b",
- "external_id": "repayment_875",
- "amount": 976000,
- "loan_id": "loan_879",
- "borrower_id": "fa71ac40-417a-11e9-89d2-59190dbc8f33",
- "lender_id": "ef3eb2f0-417a-11e9-89d2-59190dbc8f33",
- "created": "2018-12-12T13:50:12.000Z",
- "updated": "2018-12-12T13:50:12.000Z"
}Retrieve details of an existing Repayment by using id on the respective endpoint.
This endpoint allows you to:
The Repayment Resource provides information such as repayment amount, associated loan ID, borrower and lender details, as well as timestamps for creation and updates.
This is useful for monitoring repayment progress, validating successful ledger updates, and ensuring repayment distribution logic is functioning as expected within the CRING system.
📥 Request Requirements must contain following information:
| id required | string Example: b03bddcff-b600-bj56-ca3w-69n5d37f1vcb Repayment Id |
| Authorization | string Example: Basic eyJraWQiOi...Jzc29zIiwiY Represents access_token of a request; string starts with keyword |
{- "status": "PENDING",
- "id": "1d89bd20-4186-11e9-bcdf-0b59ec82f64b",
- "external_id": "repayment_875",
- "amount": 976000,
- "loan_id": "loan_879",
- "borrower_id": "fa71ac40-417a-11e9-89d2-59190dbc8f33",
- "lender_id": "ef3eb2f0-417a-11e9-89d2-59190dbc8f33",
- "created": "2018-12-12T13:50:12.000Z",
- "updated": "2018-12-12T13:50:12.000Z"
}Retrieve details of an existing Repayment by using external_id on the respective endpoint.
This endpoint allows you to:
The Repayment Resource provides information such as repayment amount, associated loan ID, borrower and lender details, as well as timestamps for creation and updates.
This is useful for monitoring repayment progress, validating successful ledger updates, and ensuring repayment distribution logic is functioning as expected within the CRING system.
📥 Request Requirements must contain following information:
| id required | string Example: b03bddcff-b600-bj56-ca3w-69n5d37f1vcb Repayment Id |
| Authorization | string Example: Basic eyJraWQiOi...Jzc29zIiwiY Represents access_token of a request; string starts with keyword |
{- "status": "PENDING",
- "id": "1d89bd20-4186-11e9-bcdf-0b59ec82f64b",
- "external_id": "repayment_875",
- "amount": 976000,
- "loan_id": "loan_879",
- "borrower_id": "fa71ac40-417a-11e9-89d2-59190dbc8f33",
- "lender_id": "ef3eb2f0-417a-11e9-89d2-59190dbc8f33",
- "created": "2018-12-12T13:50:12.000Z",
- "updated": "2018-12-12T13:50:12.000Z"
}You can receive notifications via a callback whenever the status of a Repayment has changed.
You can set your callback URL in the CRING Dashboard.
Repayment Completed Callback
We will send you a callback request with schema Repayment Resource with status COMPLETED.
You will receive this callback when the Create Repayment request is successful and the borrower's and lenders’ balances have been updated.
Repayment Failed Callback
We will send you a callback request with schema Repayment Resource with status FAILED.
You will receive this callback when the Create Repayment request was not successful.
Check the failure_code to learn more about the error details and the appropriate follow-up action.
Your system must return an HTTP status code to indicate the callback result:
| HTTP | Code | Description |
|---|---|---|
| 200 | Callback | received successfully |
| Other | Callback failed | CRING! will retry every 1 minute, up to 5 times |
📥 Request Requirements must contain following information:
| Authorization | string Example: Basic eyJraWQiOi...Jzc29zIiwiY Represents access_token of a request; string starts with keyword |
| status | string The current status of the repayment. Possible values are |
| id | string Unique ID assigned by CRING for the repayment transaction. |
| external_id | string Unique identifier for the repayment provided by the merchant. |
| amount | number The total repayment amount made by the borrower to be distributed to the lender(s). |
| borrower_id | string The unique identifier of the borrower who made the repayment. |
| lender_id | string The unique identifier of the lender who receives the repayment. |
| loan_id | string The unique identifier of the loan that this repayment is associated with. |
| borrower_balance | number Only shown if callback |
| lender_balance | number Only shown if callback |
| failure_code | string Only shown if callback |
| created | string <date-time> Timestamp indicating when this repayment record was created. |
| updated | string <date-time> Timestamp indicating the last update to this repayment record. |
{- "status": "COMPLETED",
- "id": "1c09acd0-4186-11e9-bcdf-0b59ec82f64b",
- "external_id": "repayment_670",
- "amount": 976000,
- "borrower_id": "fa71ac40-417a-11e9-89d2-59190dbc8f33",
- "lender_id": "ef3eb2f0-417a-11e9-89d2-59190dbc8f33",
- "loan_id": "loan_879",
- "borrower_balance": 144000,
- "lender_balance": 6941000,
- "created": "2018-01-12T13:50:12.000Z",
- "updated": "2018-01-12T13:50:12.000Z"
}nullWithdrawals represent the process of transferring funds from the escrow balance to the respective real bank accounts of the lender or borrower.
The main purpose of a withdrawal is to allow lenders to receive funds from loan repayments made by borrowers.
⚠️ Important: Once a withdrawal request is created, it cannot be canceled.
📥 Request Requirements must contain following information:
| Authorization | string Example: Basic eyJraWQiOi...Jzc29zIiwiY Represents access_token of a request; string starts with keyword |
| external_id required | string Unique ID provided by the partner for reference and reconciliation of the withdrawal transaction. |
| amount required | number Amount of funds to be withdrawn from the escrow account. |
| customer_id required | string Unique ID of the customer (lender, borrower, or admin) who is performing the withdrawal. |
| destination_account_code required | string Bank code or financial institution code for the withdrawal destination account. |
| destination_account_holder_name required | string Name of the account holder as registered with the destination bank. |
| destination_account_number required | string Destination bank account number where the withdrawn funds will be transferred. |
| type required | string Type of transaction. For this endpoint, the value is always |
| description | string Additional note or purpose of the withdrawal transaction. |
{- "external_id": "withdrawal-1233889871",
- "amount": 100000,
- "customer_id": "5c1774e76966b43a5b8198fc",
- "destination_account_code": "BCA",
- "destination_account_holder_name": "Dubu Tofu",
- "destination_account_number": 212312345,
- "type": "WITHDRAWAL",
- "description": "esc-wtdrw-123"
}{- "id": "44e5abc9-be2a-41ce-af86-cf522ad6e260",
- "external_id": "withdrawal-1233889871",
- "amount": 100000,
- "customer_balance": 0,
- "customer_id": "5c1774e76966b43a5b8198fc",
- "destination_account_code": "BCA",
- "destination_account_holder_name": "Dubu Tofu",
- "destination_account_number": 212312345,
- "status": "PENDING",
- "type": "WITHDRAWAL",
- "created": "2018-12-12T13:50:12.000Z",
- "updated": "2018-12-12T13:50:12.000Z"
}Used to retrieve detailed information of a withdrawal (check status) using the id obtained from the Create Withdrawal API response.
📥 Request Requirements must contain following information:
| id required | string Example: b03bddcff-b600-bj56-ca3w-69n5d37f1vcb Withdrawal Id |
| Authorization | string Example: Basic eyJraWQiOi...Jzc29zIiwiY Represents access_token of a request; string starts with keyword |
{- "id": "44e5abc9-be2a-41ce-af86-cf522ad6e260",
- "external_id": "withdrawal-1233889871",
- "amount": 100000,
- "customer_balance": 0,
- "customer_id": "5c1774e76966b43a5b8198fc",
- "destination_account_code": "BCA",
- "destination_account_holder_name": "Dubu Tofu",
- "destination_account_number": "0212312345",
- "status": "DISBURSING",
- "type": "WITHDRAWAL",
- "created": "2018-12-12T13:50:12.000Z",
- "updated": "2018-12-12T13:50:12.000Z"
}Used to retrieve detailed information of a withdrawal (check status) using the external_id obtained from the Create Withdrawal API response.
📥 Request Requirements must contain following information:
| id required | string Example: b03bddcff-b600-bj56-ca3w-69n5d37f1vcb Withdrawal Id |
| Authorization | string Example: Basic eyJraWQiOi...Jzc29zIiwiY Represents access_token of a request; string starts with keyword |
{- "id": "44e5abc9-be2a-41ce-af86-cf522ad6e260",
- "external_id": "withdrawal-1233889871",
- "amount": 100000,
- "customer_balance": 0,
- "customer_id": "5c1774e76966b43a5b8198fc",
- "destination_account_code": "BCA",
- "destination_account_holder_name": "Dubu Tofu",
- "destination_account_number": "0212312345",
- "status": "DISBURSING",
- "type": "WITHDRAWAL",
- "created": "2018-12-12T13:50:12.000Z",
- "updated": "2018-12-12T13:50:12.000Z"
}Merchants will receive a callback notification when:
DISBURSING
The funds have been successfully moved from the escrow account to the Instamoney float account.
COMPLETED
The funds have been successfully transferred from the Instamoney float account to the customer’s bank account.
This status includes a bank_reference field for reconciliation purposes.
FAILED
The transfer to the customer’s bank account has failed.
The funds have been returned to the escrow account.
A failure_code field is included to provide details about the error.
Your system must return an HTTP status code to indicate the callback result:
| HTTP | Code | Description |
|---|---|---|
| 200 | Callback | received successfully |
| Other | Callback failed | CRING! will retry every 1 minute, up to 5 times |
📥 Request Requirements must contain following information:
| Authorization | string Example: Basic eyJraWQiOi...Jzc29zIiwiY Represents access_token of a request; string starts with keyword |
| id | string Unique ID generated for the loan disbursement. |
| external_id | string Unique external ID provided by the partner for reference and reconciliation. |
| loan_maturity_date | string <date-time> Date and time on which repayment of the loan needs to be made. |
| annual_percentage_rate | number Annual percentage rate of the loan. |
| principal_amount | number Total principal amount of the disbursement funded by all lenders. |
| borrower_id | string Unique ID of the borrower, as registered in CRING. |
| destination_account_code | string Bank or e-Wallet code of the destination account. |
| destination_account_holder_name | string Name of the account holder as per the bank’s records. |
| destination_account_number | string Account number or e-Wallet number of the destination. |
| loan_id | string Loan identifier used to associate this disbursement with its corresponding loan record. |
| created | string <date-time> Timestamp indicating when this loan disbursement was created. |
| updated | string <date-time> Timestamp indicating the latest update to this loan disbursement record. |
Array of objects List of lender objects contributing to the loan. | |
| failure_code | string Code representing the reason for failure of the loan disbursement. |
| status | string Current status of the loan disbursement. |
{- "id": "af7e77b0-1e87-11e9-8914-e96a7bd39676",
- "external_id": "wiag_1548190371",
- "amount": "50000,",
- "customer_balance": "40000,",
- "destination_account_code": "MANDIRI",
- "destination_destination_account_holder_name": "Lingga",
- "destination_account_number": "7654321",
- "type": "WITHDRAWAL",
- "created": "2019-01-22T20:52:52.523Z",
- "updated": "2019-01-22T20:53:08.190Z",
- "customer_id": "946a98f0-1e7d-11e9-8914-e96a7bd39676",
- "status": "DISBURSING"
}nullCRING! supports Transfer transactions via:
This feature allows partners to send funds securely and efficiently through the CRING! system.
Transfer can be executed manually through the CRING! portal. Use case:
Transfer can be executed via API. Use case:
All transfer requests require:
| Bank Name | Bank Code | RTGS | Kliring | BI-Fast |
|---|---|---|---|---|
| PT. ALLO BANK INDONESIA | 567 | HRDAIDJ1 | HRDAIDJ1 | HRDAIDJ1 |
| PT. BANK ACEH SYARIAH | 116 | PDACIDJ1 | PDACIDJ1 | PDACIDJ1 |
| PT. BANK AMAR INDONESIA | 531 | LOMAIDJ1 | LOMAIDJ1 | LOMAIDJ1 |
| PT. BANK ANZ INDONESIA | 061 | ANZBIDJX | 610306 | 610306 |
| PT. BANK ARTHA GRAHA INTERNATIONAL | 037 | ARTGIDJA | ARTGIDJA | ARTGIDJA |
| PT. BANK PEMBANGUNAN DAERAH BALI | 129 | ABALIDBS | ABALIDBS | ABALIDBS |
| PT BANK PEMBANGUNAN DAERAH BENGKULU | 133 | PDBKIDJ1 | PDBKIDJ1 | PDBKIDJ1 |
| PT Bank Negara Indonesia | 009 | BNINIDJA | BNINIDJA | BNINIDJA |
| PT. Bank Rakyat Indonesia | 002 | BRINIDJA | BRINIDJA | BRINIDJA |
| PT Bank BNP Paribas Indonesia | 057 | BNPAIDJA | BNPAIDJA | BNPAIDJA |
| PT BANK LAMPUNG | 121 | PDLPIDJ1 | PDLPIDJ1 | PDLPIDJ1 |
| PT. BANK PEMBANGUNAN DAERAH BANTEN | 137 | PDBBIDJ1 | PDBBIDJ1 | PDBBIDJ1 |
| PT. BANK PEMBANGUNAN DAERAH JABAR DAN BANTEN | 110 | PDJBIDJA | PDJBIDJA | PDJBIDJA |
| PT. BANK PEMBANGUNAN DAERAH JABAR DAN BANTEN SYARIAH | 425 | SYJBIDJ1 | SYJBIDJ1 | SYJBIDJ1 |
| PT. BANK BUMI ARTA | 076 | BBAIIDJA | BBAIIDJA | BBAIIDJA |
| BANK TABUNGAN NEGARA (BTN) | 200 | BTANIDJA | BTANIDJA | BTANIDJA |
| PT. BANK TABUNGAN NEGARA (PERSERO) UNIT USAHA SYARIAH | 200 | SYBTIDJ1 | SYBTIDJ1 | SYBTIDJ1 |
| PT BANK CAPITAL INDONESIA | 054 | BCIAIDJA | BCIAIDJA | BCIAIDJA |
| PT. BANK CHINA CONSTRUCTION BANK INDONESIA, TBK | 036 | MCORIDJA | MCORIDJA | MCORIDJA |
| PT. BANK CIMB NIAGA TBK | 022 | BNIAIDJA | BNIAIDJA | BNIAIDJA |
| PT. BANK CIMB NIAGA TBK - UNIT USAHA SYARIAH | 022 | SYNAIDJ1 | SYNAIDJ1 | SYNAIDJ1 |
| PT. BANK DANAMON INDONESIA | 011 | BDINIDJA | BDINIDJA | BDINIDJA |
| PT. BANK DANAMON INDONESIA UNIT USAHA SYARIAH | 011 | SYBDIDJ1 | SYBDIDJ1 | SYBDIDJ1 |
| PT. BANK DBS INDONESIA | 046 | DBSBIDJA | DBSBIDJA | DBSBIDJA |
| PT. BANK DKI | 111 | BDKIIDJA | BDKIIDJA | BDKIIDJA |
| PT. BANK DKI UNIT USAHA SYARIAH | 111 | SYDKIDJ1 | SYDKIDJ1 | SYDKIDJ1 |
| PT. BANK GANESHA | 161 | GNESIDJA | GNESIDJA | GNESIDJA |
| PT. BANK HIBANK INDONESIA | 553 | MAYOIDJA | MAYOIDJA | MAYOIDJA |
| PT. BANK ICBC INDONESIA | 164 | ICBKIDJA | ICBKIDJA | ICBKIDJA |
| PT. BANK INA PERDANA | 513 | INPBIDJ1 | INPBIDJ1 | INPBIDJ1 |
| PT BANK INDEX SELINDO | 555 | BIDXIDJA | BIDXIDJA | BIDXIDJA |
| PT. BANK JAGO Tbk | 542 | JAGBIDJA | JAGBIDJA | JAGBIDJA |
| PT. BANK JAGO Tbk - UNIT USAHA SYARIAH | 542 | JAGBIDJA | JAGBIDJA | JAGBIDJA |
| PT.BANK PEMBANGUNAN DAERAH JAMBI | 115 | PDJMIDJ1 | PDJMIDJ1 | PDJMIDJ1 |
| PT. BANK PEMBANGUNAN DAERAH JAMBI UUS | 115 | SYJMIDJ1 | SYJMIDJ1 | SYJMIDJ1 |
| PT. BANK PEMBANGUNAN DAERAH JATENG | 113 | PDJGIDJ1 | PDJGIDJ1 | PDJGIDJ1 |
| PT. BANK PEMBANGUNAN DAERAH JATENG UNIT USAHA SYARIAH | 113 | SYJGIDJ1 | SYJGIDJ1 | SYJGIDJ1 |
| PT.BANK PEMBANGUNAN DAERAH JATIM | 114 | PDJTIDJ1 | PDJTIDJ1 | PDJTIDJ1 |
| PT.BANK PEMBANGUNAN DAERAH JATIM - UNIT USAHA SYAR | 114 | SYJTIDJ1 | SYJTIDJ1 | SYJTIDJ1 |
| PT.BANK PEMBANGUNAN DAERAH KALBAR | 123 | PDKBIDJ1 | PDKBIDJ1 | PDKBIDJ1 |
| PT.BANK PEMBANGUNAN DAERAH KALBAR UUS | 123 | SYKBIDJ1 | SYKBIDJ1 | SYKBIDJ1 |
| PT. BANK PEMBANGUNAN DAERAH KALSEL | 122 | PDKSIDJ1 | PDKSIDJ1 | PDKSIDJ1 |
| PT. BANK PEMBANGUNAN DAERAH KALSEL - UNIT USAHA SYARIAH | 122 | SYKSIDJ1 | SYKSIDJ1 | SYKSIDJ1 |
| PT. BPD KALIMANTAN TENGAH | 125 | PDKGIDJ1 | PDKGIDJ1 | PDKGIDJ1 |
| PT. BANK BUKOPIN Tbk. | 441 | BBUKIDJA | BBUKIDJA | BBUKIDJA |
| PT. BANK KB BUKOPIN SYARIAH | 521 | SDOBIDJ1 | SDOBIDJ1 | SDOBIDJ1 |
| PT. BANK KEB HANA INDONESIA | 484 | HNBNIDJA | HNBNIDJA | HNBNIDJA |
| PT Bank Pembangunan Daerah Maluku dan Maluku Utara | 131 | PDMLIDJ1 | PDMLIDJ1 | PDMLIDJ1 |
| PT. BANK MANDIRI | 008 | BMRIIDJA | BMRIIDJA | BMRIIDJA |
| PT. BANK MANDIRI TASPEN | 564 | SIHBIDJ1 | SIHBIDJ1 | SIHBIDJ1 |
| PT. BANK MASPION | 157 | MASDIDJS | MASDIDJS | MASDIDJS |
| PT Bank Mayapada Internasional | 097 | MAYAIDJA | MAYAIDJA | MAYAIDJA |
| PT. BANK MEGA | 426 | MEGAIDJA | MEGAIDJA | MEGAIDJA |
| PT. BANK MEGA SYARIAH | 506 | BUTGIDJ1 | BUTGIDJ1 | BUTGIDJ1 |
| PT Bank Mestika Dharma | 151 | MEDHIDS1 | MEDHIDS1 | MEDHIDS1 |
| PT. BANK MIZUHO INDONESIA | 048 | MHCCIDJA | MHCCIDJA | MHCCIDJA |
| PT Bank Muamalat Indonesia | 147 | MUABIDJA | MUABIDJA | MUABIDJA |
| Response Code | Response Message | Description |
|---|---|---|
| 2001500 | Successful (Internal Account Inquiry) | Successful |
| 2001600 | Successful (External Account Inquiry) | Successful |
| 2001700 | Successful (Transfer Intrabank) | Successful |
| 2001800 | Successful (Transfer Interbank) | Successful |
| 2002200 | Successful (Transfer RTGS) | Successful |
| 2002300 | Successful (Transfer SKNBI) | Successful |
| 2003600 | Successful (Transaction Status Inquiry) | Successful |
| 4001501 | Invalid Fieldname Format (Internal Account Inquiry) | Invalid Format |
| 4001601 | Invalid Fieldname Format (External Account Inquiry) | Invalid Format |
| 4001701 | Invalid Fieldname Format (Transfer Intrabank) | Invalid Format |
| 4001801 | Invalid Fieldname Format (Transfer Interbank) | Invalid Format |
| 4002201 | Invalid Fieldname Format (Transfer RTGS) | Invalid Format |
| 4002301 | Invalid Fieldname Format (Transfer SKNBI) | Invalid Format |
| 4003601 | Invalid Fieldname Format (Transaction Status Inquiry) | Invalid Format |
| 4000002 | Invalid Mandatory Field (Balance Inquiry) | Missing Field / Invalid Value |
| 4001402 | Invalid Mandatory Field (Bank Statement) | Missing Field / Invalid Value |
| 4001502 | Invalid Mandatory Field (Internal Account Inquiry) | Missing Field / Invalid Value |
| 4001602 | Invalid Mandatory Field (External Account Inquiry) | Missing Field / Invalid Value |
| 4001702 | Invalid Mandatory Field (Transfer Intrabank) | Missing Field / Invalid Value |
| 4001802 | Invalid Mandatory Field (Transfer Interbank) | Missing Field / Invalid Value |
| 4002202 | Invalid Mandatory Field (Transfer RTGS) | Missing Field / Invalid Value |
| 4002302 | Invalid Mandatory Field (Transfer SKNBI) | Missing Field / Invalid Value |
| 4003602 | Invalid Mandatory Field (Transaction Status Inquiry) | Missing Field / Invalid Value |
| 401XX00 | Unauthorized IP Address (Any Service) | Unauthorized IP Address |
| 4031509 | Dormant Account (Internal Account Inquiry) | Account Status Dormant |
| 4031516 | Suspend Transaction (Internal Account Inquiry) | Suspend Transaction |
| 4031518 | Inactive Card/Account/Customer (Internal Account Inquiry) | Account Status Closed |
| 4031714 | Insufficient Funds (Intrabank Transfer) | Insufficient Funds |
| 4031716 | Suspend Transaction (Intrabank Transfer) | Suspend Transaction |
| 4031814 | Insufficient Funds (Interbank Transfer) | Insufficient Funds |
| 4031816 | Suspend Transaction (Interbank Transfer) | Suspend Transaction |
| 4032206 | Feature Not Allowed At This Time (RTGS Transfer) | Transaction After Cut-off Time |
| 4032214 | Insufficient Funds (RTGS Transfer) | Insufficient Funds |
| 4032216 | Suspend Transaction (RTGS Transfer) | Suspend Transaction |
| 4032306 | Feature Not Allowed At This Time (SKNBI Transfer) | Transaction After Cut-off Time |
| 4032314 | Insufficient Funds (SKNBI Transfer) | Insufficient Funds |
| 4032316 | Suspend Transaction (SKNBI Transfer) | Suspend Transaction |
| 4031715 | Transaction Not Permitted (Intrabank Transfer) | Transaction Not Permitted |
| 4033615 | Transaction Not Permitted (Transaction Status Inquiry) | Invalid Service Code |
| 4033616 | Suspend Transaction (Transaction Status Inquiry) | Suspend Transaction |
| 4041511 | Invalid Card/Account/Customer (Internal Account Inquiry) | Account Not Registered |
| 4041700 | Invalid Transaction Status (Intrabank Transfer) | Duplicate Reference Number (Failed Transfer) |
| 4041714 | Paid Bill (Intrabank Transfer) | Duplicate Reference Number (Successful Transfer) |
| 4041800 | Invalid Transaction Status (Interbank Transfer) | Duplicate Reference Number |
| 4042214 | Paid Bill (RTGS Transfer) | Duplicate Reference Number |
| 4042300 | Invalid Transaction Status (SKNBI Transfer) | Duplicate Reference Number |
| 4043601 | Transaction Not Found (Transaction Status Inquiry) | Transaction Not Found |
| 4043613 | Invalid Amount (Transaction Status Inquiry) | Invalid Amount |
This service is used to perform account inquiry before request transfer.
It allows merchants to check the validity of a beneficiary account number, either through internal inquiry / BNI account number (if bankCode is not provided) or external inquiry / another BNI account number (if bankCode is provided).
The generated inquiryId from this API must be used as the key reference in the transfer request, ensuring that the transfer is based on validated inquiry data.
📥 Request Requirements must contain following information:
| Authorization | string Example: Basic eyJraWQiOi...Jzc29zIiwiY Represents access_token of a request; string starts with keyword |
| accountNo required | string Account Number that used to be beneficiary transfer. |
| bankCode | string
For another beneficary bank code then can be filled with bank code from Bank Code For BI-Fast, Kliring and RTGS, bankCode can be filled with below code from BI-Fast, Kliring and RTGS example: when transfer type |
{- "accountNo": "115471119",
- "bankCode": "014"
}{- "responseCode": "2001100",
- "responseMessage": "Successful",
- "inquiryId": "1ce4a232-a2d7-4bb9-8049-7a7dcc880733",
- "referenceNo": "2020102977770000000009",
- "partnerReferenceNo": "202401110000000000076",
- "accountNo": "0115476117",
- "accountName": "Yories Yolanda",
- "bankCode": "002",
- "bankName": "Bank BRI",
- "currency": "IDR",
- "additionalInfo": {
- "accountType": "DEP",
- "accountCurrency": "IDR",
- "accountBalance": 64479037738,
- "customerName": "Bpk SEGAF ALKAFF",
- "status": "BUKA"
}
}This API is used by merchants or clients to initiate a fund transfer request. The source of fund transfer must be from your corporate's own deposit account that filled on onboarding form.
The beneficiary may be any account within any Bank. In return merchant will get status.
Supported transfer types:
intrabank → within the same bank BNI between source account and beneficiary account
interbank → between different bank between source account and beneficiary account
bifast → instant payment network
rtgs → large-value clearing system
sknbi → national clearing system
Depending on the client onboarding configuration, the transfer process can:
Require code OTP approval (two-step process: generate code OTP → approve), or
Be executed directly without code OTP.
📥 Request Requirements must contain following information:
| Authorization | string Example: Basic eyJraWQiOi...Jzc29zIiwiY Represents access_token of a request; string starts with keyword |
| inquiryId required | string Unique ID generated from inquiry account. Must be used as reference for the request transfer process. |
| type required | string When using intrabank or beneficary bank is |
| beneficiaryAccountNo required | string Account Number that used to be beneficiary transfer. |
object | |
| remark | string Description for transfer. |
{- "inquiryId": "1ce4a232-a2d7-4bb9-8049-7a7dcc880733",
- "type": "intrabank",
- "beneficiaryAccountNo": "115471119",
- "amount": {
- "value": "10000",
- "currency": "IDR"
}, - "remark": "Payment for billing"
}{- "responseCode": "2001700",
- "responseMessage": "Successful",
- "requestId": "65e66257-a530-41e2-bb36-9a47858f5602",
- "statusRequest": "Need Approval With Code"
}The Inquiry Transfer Status API is used to check the latest transaction status of a previously initiated transfer.
This endpoint helps merchants or integrated systems verify whether a transfer has been successfully processed, is still pending, or has failed.
It is especially useful for reconciling payment records, ensuring transaction traceability, and handling asynchronous notifications or timeouts from the network.
📥 Request Requirements must contain following information:
| Authorization | string Example: Basic eyJraWQiOi...Jzc29zIiwiY Represents access_token of a request; string starts with keyword |
| partnerReferenceNo required | string Unique reference number generated by CRING during the transfer request. Used to identify the transaction. |
| referenceNo | string Internal reference number generated by the system during the transfer process. Optional if partnerReferenceNo is provided. |
{- "partnerReferenceNo": "202412171647300092",
- "referenceNo": "389319"
}{- "responseCode": "2001100",
- "responseMessage": "Successful",
- "inquiryId": "1ce4a232-a2d7-4bb9-8049-7a7dcc880733",
- "referenceNo": "2020102977770000000009",
- "partnerReferenceNo": "202401110000000000076",
- "accountNo": "0115476117",
- "accountName": "Yories Yolanda",
- "bankCode": "002",
- "bankName": "Bank BRI",
- "currency": "IDR",
- "additionalInfo": {
- "accountType": "DEP",
- "accountCurrency": "IDR",
- "accountBalance": 64479037738,
- "customerName": "Bpk SEGAF ALKAFF",
- "status": "BUKA"
}
}This service is used to generate a code or One-Time Password (OTP) required to approve transfer.
The OTP serves as an additional layer of security to verify the identity of the client before executing the transaction.
Depending on the client’s onboarding configuration, OTP validation may be mandatory or optional.
📥 Request Requirements must contain following information:
| Authorization | string Example: Basic eyJraWQiOi...Jzc29zIiwiY Represents access_token of a request; string starts with keyword |
| requestId required | string Unique identifier of the transfer request. |
{- "requestId": "3f692849-32d8-4382-9c8e-dad8427bb3e6"
}{- "responseCode": "20001",
- "responseMessage": "Request has been processed successfully",
- "code": "273231",
- "expiresIn": "300"
}This service is used to approve a transfer request that has been initiated through the transfer API using optional code OTP or approval validation based on the client’s onboarding configuration.
The approval process ensures that the transfer has been verified and authorized before being executed by the system.
Only transfers with a valid requestId can be approved.
Once approved, the system will continue the transfer process and update its status accordingly.
📥 Request Requirements must contain following information:
| Authorization | string Example: Basic eyJraWQiOi...Jzc29zIiwiY Represents access_token of a request; string starts with keyword |
| requestId required | string Unique identifier of the transfer request. |
| code | string The code generated from the Generate Code (OTP) request. Optional — only required if the client is configured to use OTP-based transfer approval. |
{- "requestId": "3f692849-32d8-4382-9c8e-dad8427bb3e6",
- "code": "273231"
}{- "responseCode": "20001",
- "responseMessage": "Request has been processed successfully"
}This endpoint is used to reject a transfer request that was previously created and is awaiting approval.
It allows clients or authorized users to cancel or decline a pending transfer before it is executed.
A rejection may occur due to reasons such as invalid transaction details, failed internal verification, user decision, or policy-based restrictions.
Once rejected, the transfer cannot be reactivated and must be reinitiated if needed.
📥 Request Requirements must contain following information:
| Authorization | string Example: Basic eyJraWQiOi...Jzc29zIiwiY Represents access_token of a request; string starts with keyword |
| requestId required | string Unique identifier of the transfer request. |
| reason | string Reason or note describing why the transfer is rejected. |
{- "requestId": "3f692849-32d8-4382-9c8e-dad8427bb3e6",
- "reason": "Incorrect amount transfer"
}{- "responseCode": "20001",
- "responseMessage": "Request has been processed successfully"
}