Payment Collection Business Codes
Order Status Code Description
| Value | Description | Possible Reasons |
|---|---|---|
| ACCEPT | Submitted | The order has been created, but this status does not indicate success or failure. |
| PENDING | Processing | Waiting for payment channel response due to selected payment method on the checkout page, non-working hours, or T+1 completion reasons. This status does not indicate success or failure. |
| SUCCESS | Success | The operation was successful. |
| FAIL | Failure | The operation failed. |
API Details
Get Payment Link API
INFO
Purpose: Used to retrieve the checkout page or payment page
Request URL: api/payin/desk
Request Method: POST
DANGER
Note:
- On the checkout interface, the amount is displayed using a period as the thousands separator, e.g., 10.000 ( indicating IDR 10,000), while in the backend, the amount uses a comma as the thousands separator, e.g., 10,000 ( indicating IDR 10,000).
- If only one payment method type is passed in
payment_method_types, it will directly redirect to the payment page without opening the checkout page. - When the user selects OVO as the payment method, we will notify the user via the OVO app using the user's phone number (
ewallet_phone). The user will receive a push notification to complete the payment.
Request Parameters
| Parameter | Required | Type | Description | Example |
|---|---|---|---|---|
| order | Yes | Object | ||
| - id | Yes | String | Order number | 123456789 |
| - amount | Yes | Long | Order amount | 10000 |
| - callback | No | String | Redirect URL after payment | http://yourdomain.com/callback_success |
| - return_url | No | String | Notification callback URL after payment | http://yourdomain.com/return_url |
| - ewallet_phone | No | String | Payer's phone number | 082652222 |
| - customer_name | No | String | Payer's name | John |
| - customer_email | No | String | Payer's email | test@gmail.com |
| payment | No | Object | ||
| payment_method_types | Yes | Array | Payment methods. If not provided, all payment methods are default. Supported payment methods include BRI, MANDIRI, BSI, MAYBANK, BNI, PERMATA, CIMB, DANAMON, OCBC, HANA, DANA, OVO, SHOPEE PAY, LINKAJA, QRIS. | ["DANA", "BNI"] |
Request Example
{
"order": {
"id": "9bddcb4114b24aceb49daa506b7b406d",
"amount": 10000,
"callback": "http://yourdomain.com/callback_success",
"return_url": "http://yourdomain.com/return_url",
"ewallet_phone": "0829322222",
"customer_name": "John",
"customer_email": "test@gmail.com"
},
"payment": {
"payment_method_types": [
"BNI",
"DANA"
]
}
}Response Parameters
| Parameter | Type | Description | Example |
|---|---|---|---|
| payment | Object | ||
| - url | String | Payment link | http://payment.com/xxxxx |
| order | Object | ||
| - id | String | Merchant order ID | 1234567890 |
| - orderId | String | Platform order ID | 123891203982 |
| - amount | Long | Order amount | 10000 |
Response Example
{
"status": 1,
"message": null,
"data": {
"payment": {
"url": "https://test-merchant.hzpay.net/prex/api/payin/desk/1234568457"
},
"order": {
"amount": 10000,
"orderId": "12109248012123",
"id": "123456789"
}
}
}Get VA Number API
INFO
Purpose: Used to directly retrieve the VA number for VA payment
Request URL: api/payin/direct
Request Method: POST
Request Parameters
| Parameter | Required | Type | Description | Example |
|---|---|---|---|---|
| order | Yes | Object | ||
| - id | Yes | String | Order number | 123456789 |
| - amount | Yes | Long | Order amount | 10000 |
| - callback | No | String | Redirect URL after payment | http://yourdomain.com/callback_success |
| - return_url | No | String | Notification callback URL after payment | http://yourdomain.com/return_url |
| - ewallet_phone | No | String | Payer's phone number | 082652222 |
| - customer_name | No | String | Payer's name | John |
| - customer_email | No | String | Payer's email | test@gmail.com |
| payment | No | Object | ||
| payment_method_type | Yes | String | Only one payment method is supported. Supported methods: BRI, MANDIRI, BSI, BNI, PERMATA, CIMB, DANAMON, OCBC | BRI |
Request Example
{
"order": {
"id": "9bddcb4114b24aceb49daa506b7b406d",
"amount": 10000,
"callback": "http://yourdomain.com/callback_success",
"return_url": "http://yourdomain.com/return_url",
"ewallet_phone": "0829322222",
"customer_name": "John",
"customer_email": "test@gmail.com"
},
"payment": {
"payment_method_type": "BRI"
}
}Response Parameters
| Parameter | Type | Description | Example |
|---|---|---|---|
| payment | Object | ||
| - payment_method_type | String | Payment method | BRI |
| - va_num | String | VA number | 123891203982 |
| order | Object | ||
| - id | String | Merchant order ID | 1234567890 |
| - orderId | String | Platform order ID | 123891203982 |
| - amount | Long | Order amount | 10000 |
Response Example
{
"status": 1,
"message": null,
"data": {
"payment": {
"payment_method_type": "BRI",
"va_num": "12309129082"
},
"order": {
"amount": 10000,
"orderId": "12109248012123",
"id": "123456789"
}
}
}Get QRIS Code API
INFO
Purpose: Used to directly retrieve the QRIS payment string code
Request URL: api/payin/qris
Request Method: POST
Request Parameters
| Parameter | Required | Type | Description | Example |
|---|---|---|---|---|
| order | Yes | Object | ||
| - id | Yes | String | Order number | 123456789 |
| - amount | Yes | Long | Order amount | 10000 |
| - callback | No | String | Redirect URL after payment | http://yourdomain.com/callback_success |
| - return_url | No | String | Notification callback URL after payment | http://yourdomain.com/return_url |
| - ewallet_phone | No | String | Payer's phone number | 082652222 |
| - customer_name | No | String | Payer's name | John |
| - customer_email | No | String | Payer's email | test@gmail.com |
Request Example
{
"order": {
"id": "123456789",
"amount": 10000,
"callback": "http://yourdomain.com/callback_success",
"return_url": "http://yourdomain.com/return_url",
"ewallet_phone": "0829322222",
"customer_name": "John",
"customer_email": "test@gmail.com"
}
}Response Parameters
| Parameter | Type | Description | Example |
|---|---|---|---|
| payment | Object | ||
| - payment_method_type | String | Payment method | QRIS |
| - qris_text | String | QRIS code | 0002012165498794017ID.CO.DANAMON.0654984816521 |
| order | Object | ||
| - id | String | Merchant order ID | 1234567890 |
| - orderId | String | Platform order ID | 123891203982 |
| - amount | Long | Order amount | 10000 |
Response Example
{
"status": 1,
"message": null,
"data": {
"payment": {
"payment_method_type": "QRIS",
"qris_text": "0002012165498794017ID.CO.DANAMON.0654984816521"
},
"order": {
"amount": 10000,
"orderId": "12109248012123",
"id": "123456789"
}
}
}Payment Notification API
INFO
Purpose: Used to receive payment notifications upon payment completion
Request URL: The return_url passed in the request or the payment callback URL set in the backend (priority: request URL > backend configuration)
Request Method: POST
DANGER
Note:
- After receiving the asynchronous notification, you must respond with the string "SUCCESS" (without quotes). It is not a JSON format. After successful notification, no further notifications will be sent, with a maximum of 5 attempts.
- When receiving the notification, check the order status (
SUCCESS/FAIL) to determine if the order was successful or failed.
Platform Notification Parameters
| Parameter | Type | Description | Example |
|---|---|---|---|
| status | int | Order status | 1 |
| order | Object | ||
| - id | String | Merchant order ID | 1234567890 |
| - status | String | Order status: ACCEPT (Submitted) SUCCESS (Success) PENDING (Processing) FAIL (Failure) | SUCCESS |
| - orderId | String | Platform order ID | 128372437618 |
| - amount | Long | Amount | 10000 |
| - fee | Long | Fee | 500 |
| - payMethod | String | Payment method | BRI |
Notification Data Example
{
"status": 1,
"data": {
"order": {
"id": "9bddcb4114b24aceb49daa506b7b406d",
"status": "SUCCESS",
"orderId": "128372437618",
"amount": 10000,
"fee": 500,
"payMethod": "BRI"
}
}
}Order Status Query API
INFO
Purpose: Used to query the status of an order
Request URL: api/payin/status
Request Method: POST
Request Parameters
| Parameter | Required | Type | Description | Example |
|---|---|---|---|---|
| order | Yes | Object | ||
| - id | Yes | String | Merchant order ID | 1234567890 |
Request Example
{
"order": {
"id": "1234567890"
}
}Response Parameters
| Parameter | Type | Description | Example |
|---|---|---|---|
| status | int | Order status | 1 |
| order | Object | ||
| - id | String | Merchant order ID | 1234567890 |
| - status | String | Order status: ACCEPT (Submitted) SUCCESS (Success) PENDING (Processing) FAIL (Failure) | SUCCESS |
| - orderId | String | Platform order ID | 123891203982 |
| - amount | Long | Order amount | 10000 |
| - fee | Long | Fee | 500 |
| payMethod | String | Payment method | BRI |
Response Example
{
"status": 1,
"data": {
"order": {
"id": "1234567890",
"status": "SUCCESS",
"orderId": "128372437618",
"amount": 10000,
"fee": 500,
"payMethod": "BRI"
}
}
}Balance Inquiry API
Same as the Disbursement API documentation, click here to view Balance Inquiry