Online Transaction API
HTTP Response Code
All the APIs here are based on the HTTP request. The following are the response codes of an HTTP request that the Indodana Paylater API may response.
HTTP Response Code | Remarks |
200 | Everything work as expected |
400 | Bad request |
401 | Unauthorized |
422 | Validation Error |
404 | Not found |
409 | Conflict |
429 | Too many requests |
50X | Server errors |
API Method References
In this section, {base_url}
will correspond to https://sandbox01-api.indodana.com/chermes/merchant
for sandbox
environment. Subsequently, the {base_url}
will correspond to https://api.indodanafinance.co.id/chermes/merchant
for production
environment.
You can find our IP list here.
Get Payment Calculation
POST
https://{base_url}/v2/payment_calculation
This endpoint is used when you want to display the list of eligible payment types on your page to calculate and display the installment breakdown on your checkout page. It is recommended to show this calculation in your website to provide a better experience to the Customer.
*
means the parameter is required
Headers
Name | Type | Description |
---|---|---|
Authorization* | string | The generated Authentication signature with format |
Request Body
Name | Type | Description |
---|---|---|
amount* | string | Total amount of the transaction. Should be equal to the sum of all the <Item>s' costs below. |
items* | array | Array of <Item>. Details of the shopping items in the transaction. |
Purchase Transaction Checkout
POST
https://{base_url}/v2/checkout_url
This endpoint is used once the customer has confirmed their installment option and you want to initiate checkout through Paylater by Indodana as the payment method.
*
means the parameter is required
Headers
Name | Type | Description |
---|---|---|
Authorization* | string | The generated Authentication signature with format |
Request Body
Name | Type | Description |
---|---|---|
transactionDetails* | object | <Transaction> - Detail of the transaction. |
customerDetails* | object | <Customer> - Detail of the customer. |
sellers* | object | Array of <Seller> - Detail of the sellers involved in the transaction. May contain more than 1 seller. |
billingAddress* | object | <Address> - Billing address of the customer for the transaction. |
shippingAddress* | string | (Required only for goods, for service / digital product is not required) <Address> - Shipping address of the customer for the transaction. |
paymentType | string | Installment options / payment terms chosen by the customer. Possible values: |
approvedNotificationUrl* | string | The URL that will be called by Indodana when the transaction is approved and successful. |
cancellationRedirectUrl | string | |
backToStoreUrl | string | |
expirationAt | string | |
metadata | object | Key-value pair contains additional information about the transaction. |
Check Transaction Status
GET
https://{base_url}/v1/transactions/check_status
You can use this endpoint to check the transaction status on Indodana.
*
means the parameter is required
Query Parameters
Name | Type | Description |
---|---|---|
merchantOrderId* | string | The transaction order ID that is sent by merchant on the checkout |
Headers
Name | Type | Description |
---|---|---|
Authorization* | string | The generated Authentication signature with format |
QRIS Check Transaction Status
GET
https://{base_url}/v1/transactions/qris/check_status
You can use this endpoint to check the transaction status on Indodana.
*
means the parameter is required
Query Parameters
Name | Type | Description |
---|---|---|
merchantOrderId* | string | The transaction order ID that is sent by merchant on the checkout |
Headers
Name | Type | Description |
---|---|---|
Authorization* | string | The generated Authentication signature with format |
QRIS Transaction Metadata Callback
POST
https://{base_url}/v1/transactions/qris/metadata
Headers
Name | Type | Description |
---|---|---|
Authorization* | string | The generated authentication signature with format
|
Request Body
Name | Type | Description |
---|---|---|
merchantOrderId* | string | The same merchant order id given by Merchant Partner when generating Quickpay URL. |
paidAt* | string | Timestamp of the successful transaction on Merchant Partner side. ISO-8601 date format. |
customerPan* | string | QRIS customer PAN. |
acquirer* | string | Name of QRIS acquirer. |
referenceNumber* | string | QRIS transaction reference number from switcher. |
Transaction Cancellation / Refund
POST
https://{base_url}/v3/order_cancellation
*
means the parameter is required
Headers
Name | Type | Description |
---|---|---|
Authorization* | string | The generated Authentication signature with format |
Request Body
Name | Type | Description |
---|---|---|
merchantOrderId* | string | Merchant Order Id from Purchase Transactions |
refundId* | string | Refund Id for each unique Refund Request |
cancellationAmount* | number | If cancellation amount > transaction amount, OR cancellation amount <= 0, will return ERROR |
cancelationReason* | string | Reason why cancellation happens |
cancelledBy* | string | Who requested the cancellation |
cancellationDate* | string | Timestamp of cancellation. Please follow ISO 8601 (ex: 2020-05-15) for timestamp format. |
Object Type References
Payment
Name | Type | Length | Remarks |
id | string | 64 | Payment type / installment option identifier. Possible values : |
tenure | integer | 4 | Installment option tenure |
rate | decimal | 16, 2 | Interest rate |
transitionTermRate | decimal | 16, 2 | Special case interest rate |
amount | decimal | 16, 2 | Total amount for the transaction |
monthlyInstallment | decimal | 16, 2 | Amount of monthly installment need to be paid |
discountedMonthlyInstallment | decimal | 16, 2 | Amount of monthly installment after taking into account the discounts |
installmentAmount | decimal | 16, 2 | Total installment amount |
downPayment | decimal | 16, 2 | Total down payment amount |
Transaction
Name | Type | Length | Remarks |
merchantOrderId | string | 32 | Required. The ID of the transaction that should be generated by merchant. Allowed characters: |
amount | decimal | 16, 2 | Required. Total amount of transaction |
items | Array<Item> | Required. Detail of items in the transaction |
Item
Name | Type | Length | Remarks |
id | string | 64 | Required. Can be product SKU. For item fee such as: shipping fee, admin fee etc you have to use one of these: |
name | string | 128 | Required. Product name |
price | decimal | 16, 2 | Required. Price for the product |
url | string | 256 | URL of the product in the merchant site / platform |
imageUrl | string | 256 | URL of the image of the product in the merchant site / platform |
category | enum | 256 | Required. Category of the product, one of these:
|
quantity | integer | 8 | Required. Quantity of the product / item bought |
parentType | string | 16 | Required. Possible values: |
parentId | string | 32 | Required. It will correspond to the |
Customer
Name | Type | Length | Remarks |
firstName | string | 16 | Required. First name of the customer |
lastName | string | 16 | Last name of the customer |
string | 64 | Required. Email of the customer that is registered in the merchant site / platform | |
phone | string | 16 | Required. Phone number of the customer that is registered in the merchant site / platform |
Seller
Name | Type | Length | Remarks |
id | string | 16 | Required. Seller's ID |
name | string | 16 | Required. Seller's name |
url | string | 256 | Required. Seller's shop URL |
sellerIdNumber | string | 32 | Seller's identifier number (KTP / SIM / etc) |
string | 64 | Required. Seller's email | |
address |
| Seller's shop address | |
officialSeller | boolean | Whether Seller is if official or not. Non Mandatory |
Address
Name | Type | Length | Remarks |
firstName | string | 16 | Required. First name of customer |
lastName | string | 16 | Last name of customer |
address | string | 256 | Required. Address for billing or shipping activity |
city | string | 32 | Required. City description for the address |
postalCode | string | 8 | Required. Postal code for the address |
phone | string | 16 | Required. Phone number for billing or shipping activity |
countryCode | string | 16 | Required. ISO 3166-1 alpha-3 (ex: IDN for Indonesia) |
Metadata
Name | Type | Length | Remarks |
ipAddress | String | 45 | Ipv4 of user |
userAgent | String | 256 | Browser user agent of user |
deviceId | String | 256 | User device id |
imsi | String | 15 | User international mobile subscriber identity |
location |
| 256 | Required for QRIS transaction from Merchant Partners. Information about the location of the transaction in Latitude and Longitude. |
qrisContent | String | 512 | Required for QRIS transaction from Merchant Partners. QRIS specific. String of QRIS content |
scanQrisLocation |
| 256 | Required for QRIS transaction from Merchant Partners. QRIS specific. Information about the location of scan QRIS location in Latitude and Longitude. |
transactionPurpose | String | 128 | The purpose of transactions. Value must be: |
tipAmount | Decimal | 16, 2 | QRIS specific. Fill if QRIS have tip. |
Location
Name | Type | Length | Remarks |
---|---|---|---|
lat | decimal | 3, 10 | Latitude |
lng | decimal | 3, 10 | Longitude |
Sample API Request & Response
Get Installment Options
Purchase Transaction Checkout
Handling Transaction Confirmation Notification
Note that for this section, the API Request would be the payload that the merchant receives in their endpoint, and the API Response would be the payload that the merchant expected to send to Indodana as acknowledgement.
Check Transaction Status
Purchase Transaction Cancellation / Refund
Last updated