Indodana
Last updated
Last updated
DOKU API
Legacy DocumentationDOKU has partenered with various Paylater Providers and one of them is Indodana to provide Buy Now Pay Later. Learn more about how DOKU can help you integrate with Indodana here.
Here is the overview of how to integrate with Indodana:
Obtain payment.url
by generating order
Display Indodana payment page to customer
Acknowledge payment result
payment.url
by generating orderTo generate order, you will need to hit this API through your Backend:
API Request
HTTP Method
POST
API endpoint (Sandbox)
https://api-sandbox.doku.com/indodana-peer-to-peer/v2/generate-order
API endpoint (Production)
https://api.doku.com/indodana-peer-to-peer/v2/generate-order
Here is the sample of request header to generate order:
Request Header Explanation
Client-Id
Client ID retrieved from DOKU Back Office
Request-Id
Unique random string (max 128 characters) generated from merchant side to protect duplicate request
Request-Timestamp
Timestamp request on UTC time in ISO8601 UTC+0 format. It means to proceed transaction on UTC+7 (WIB), merchant need to subtract time with 7. Ex: to proceed transaction on September 22th 2020 at 08:51:00 WIB, the timestamp should be 2020-09-22T01:51:00Z
Signature
Security parameter that needs to be generated on merchant Backend and placed to the header request to ensure that the request is coming from valid merchant. Please refer to this section to generate the signature
Here is the sample request body to generate order:
Request Body Explanation
order.invoice_number
string
Mandatory
Generated by merchant to identify the order and must unique per request
Allowed chars: alphabetic, numeric, special chars
Max length: 64
order.amount
number
Mandatory
In IDR currency and without decimal
Allowed chars: numeric
Max length: 16
order.line_items.name
string
Mandatory
Name of the product item
Allowed chars: alphabetic, numeric, special chars
Max Length: 128
order.line_items.price
decimal
Mandatory
Price of the product item. Total price and quantity must match with the order.amount
Allowed chars: numeric
Max Length: 16.2
order.line_items.quantity
number
Mandatory
Quantity of the product item
Allowed chars: numeric
Max Length: 8
order.line_items.id
string
Mandatory
SKU/item ID of the item in this transaction.
Allowed chars: alphabetic, numeric, special chars
Max Length: 64
order.line_items.category
enum
Mandatory
Category of the item in this transaction. Reference for list of enum : airlines
arts-crafts-and-collectibles
automotive
baby beauty-and-fragrances
biller
books-and-magazines
business-to-business-including-mlm
charity-and-non-profit
clothing
community
digital-content
electronics-and-telecom
entertainment-and-media
financial-services-and-products
financial-services-and-technology
food-and-beverage
food-retail-and-service
games-voucher
gifts-and-flowers
government
health-and-personal-care
home-and-garden
hotel-and-travel
insurance
marketplace
nonprofit
offline-store
others
over-the-air
overseas
overseas
pets-and-animals
property
public-services
religion-and-spirituality
retail
services
sports-and-outdoors
telco
ticketing
toys-and-hobbies
transportation
travel
vehicle-sales
vehicles-service-and-accessories
If cannot find, you can use others
order.line_items.url
string
Optional
URL of the product in the merchant site / platform.
Max Length: 256
order.line_items.image_url
string
Optional
URL of the image of the product in the merchant site / platform.
Max Length: 256
order.line_items.type
string
Optional
Type of the item in this transaction
order.callback_url
string
Optional
Merchant URL that will redirected to after the order completed
Allowed chars: alphabetic, numeric, special chars
Only support: ^[a-zA-Z0-9()\\-=\\\\.\\?;,+\\/:&_ %]$#
order.callback_url_cancel
string
Mandatory
Merchant URL that will redirected if order cancelled
Allowed chars: alphabetic, numeric, special chars
Only support: ^[a-zA-Z0-9()\\-=\\\\.\\?;,+\\/:&_ %]$#
peer_to_peer_info.expired_time
number
Optional
Order expired time
Format in minute
Max length: 5
peer_to_peer_info.merchant_unique_reference
string
Mandatory
Unique reference number generated by merchant
Allowed chars: alphabetic, numeric, special chars
customer.first_name
string
Mandatory
Customer name
Allowed chars: alphabetic, numeric, special chars
Max Length: 16
customer.last_name
string
Optional
Customer name
Allowed chars: alphabetic, numeric, special chars
Max Length: 16
customer.email
string
Mandatory
Customer email address.
Max Length: 16
customer.phone
string
Mandatory
Customer phone number. Format: {calling_code}{phone_number}
. Example: 6281122334455
Allowed chars: numeric
Max Length: 16
billing_address
json
Mandatory
Billing address of the customer for the transaction.
Allowed chars: object
billing_address.first_name
string
Mandatory
Billing Address first name
billing_address.last_name
string
Optional
Billing Address last name
billing_address.address
number
Mandatory
Billing address of the customer/shopper
billing_address.city
number
Mandatory
Billing city of the customer/shopper
billing_address.postal_code
number
Mandatory
Billing postal code of the customer/shopper
billing_address.phone
number
Mandatory
Billing phone of the customer/shopper
billing_address.country_code
number
Mandatory
Billing country code of the customer/shopper
shipping_address
json
Optional
Shipping address of the customer for the transaction.
Allowed chars: object
shipping_address.first_name
string
Mandatory
Shipping address first name
shipping_address.last_name
string
Optional
Shipping address last name
shipping_address.address
string
Mandatory
Shipping address of the customer/shopper. shipping is required for goods (excluding ticket/voucher)
shipping_address.city
string
Mandatory
Shipping address city
shipping_address.postal_code
string
Mandatory
Shipping address postal code
shipping_address.phone
string
Mandatory
Shipping address phone
shipping_address.country_code
string
Mandatory
Shipping address country code
additional_info.override_notification_url
string
Optional
This parameter is intended to override the configured Notification URL
with another URL. Click here for more information.
API Response
After hitting the above API request, DOKU will give the response.
HTTP Status
200
Result
SUCCESS
Response Header Explanation
Client-Id
Same as the request
Request-Id
Same as the request
Response-Timestamp
Timestamp Response on UTC with format ISO8601 UTC+0 from DOKU
Signature
Signature generated by DOKU based on the response body
Here is the sample of response body:
Response Body Explanation
order.invoice_number
string
Mandatory
Same as the request
order.amount
number
Mandatory
Same as the request
payment.url
string
Mandatory
Indodana payment page URL to display for the customer
payment.status
string
Mandatory
The current payment status
Possible value:
PENDING, FAILED
peer_to_peer_info.identifier
array
Optional
List of transaction identifier that coming from the acquiring. Merchant can save these data for reference
peer_to_peer_info.merchant_unique_reference
string
Conditional
Same as the request
peer_to_peer_info.created_date
string
Conditional
Date time of Indodana generated with the format of yyyyMMddHHmmss.
peer_to_peer_info.expired_date
string
Conditional
Date time of Indodana will be expired with the format of yyyyMMddHHmmss.
peer_to_peer_info.created_date_utc
string
Conditional
Date time of Indodana generated in UTC Format.
peer_to_peer_info.expired_date_utc
string
Conditional
Date time of Indodana will be expired in UTC Format.
additional_info.override_notification_url
string
Optional
Same as the request
Once you have the payment.url
, you can now display the payment page by redirecting your customer to the Indodana payment page.
After the customer completed the payment, they will be redirected to the defined order.callback_url
that you set on the API request.
After the payment is being made by your customer, DOKU will send HTTP Notification to your defined Notification URL
. Learn how to handle the notification from DOKU:
We provide various additional features to suited your needs. Learn more here.
If you are a platform or a marketplace, you can use this feature to settle the funds to your sellers or partners programmatically, save many operational efforts.