Indonesia banks
This section walks you through the integration of Indonesian Bank Transfer Payments where the consumers receive a payment code on the merchant page and make the payment via mobile banking apps or ATMs.
Indonesia bank transfers can be done via:
- Bank Mandiri
- Bank Danamon
- CIMB Niaga
- Permata Bank
- Maybank Indonesia
- Bank Rakyat Indonesia (BRI)
- Bank Negara Indonesia (BNI)
Payment Method Properties
Available country codes | ID |
Processing (Presentation) currencies | IDR |
Settlement currencies | USD |
Consumer currencies | IDR |
Channel member tag | doku |
Scheme name in the settlement file | DOKU See the SPECIN.PAYMENTCHANNEL below to find out how to display the DOKU payment selection page or redirect directly to the Indonesian Banks. |
Minimum transaction amount | IDR 10,000 |
Maximum transaction amount | For inter-bank, IDR 25,000 For the same bank, up to account balance |
Session timeout | 79 hours |
Refund | No |
Refund Validity | N/A |
Chargeback | No |
Integration Type | Asynchronous |
Sandbox | PPRO-hosted |
Important
The cent subunit is no longer used. Set the cent amount to
00
for all the IDR transactions.
Transaction Flow
Virtual Account
- The consumer checks out on the merchant's webpage.
- You send a transaction request to PPRO.
- PPRO sends a redirect URL to you or the merchant.
- The merchant forwards the redirect URL to the consumer’s browser.
- The consumer selects the Bank Transfer payment channel and requests a payment code from their preferred bank.
- DOKU shows the generated Payment Code to the consumer, along with the payment instructions.
- The consumer pays via a bank transfer on the bank’s internet banking web/mobile app or at the ATM, and the bank will notify DOKU of the payment result.
- DOKU notifies PPRO of the result.
- PPRO responds to the notification.
- PPRO sends you a transaction response.
Tip
If the merchant does not receive a notify status from DOKU, run the Check Status function.
Indonesia Online Bank Transfer Integration
Specific input parameters for the TRANSACTION call
Field Name | M/O/C | Type | Regex | Description |
---|---|---|---|---|
specin.email | M | string | .* | The consumer’s email address |
specin.paymentchannel | O | string | .* | The payment channel that facilitates the transactions. This parameter can be used if the payment channels are listed on the merchant’s site, and the payment channel is known. When left blank/not provided, the consumer is redirected to DOKU's hosted payment selection page. Value required to bypass the DOKU payment page and redirect to an Indonesian bank's internet banking page: 41 (Bank Mandiri) 33 (Bank Danamon) 32 (CIMB Niaga) 36 (Permata) 44 (MayBank) 34 (BRI VA) 38 (BNI VA) |
specin.isflight | O | string | /^(yes|no)$/i | Indicates if the transaction: - is for a flight ( yes )- is not for a flight ( no )Default: no |
specin.flight | O* | string | ^(01|02)$ | Specifies if the flight is: - Domestic ( 01 )- International ( 02 ) |
specin.flighttype | O* | string | ^[0|1|2|3|4]$ | Specifies the type of flight. - One way ( 0 )- Return ( 1 )- Transit ( 2 )- Transit & Return ( 3 )- Multi-City ( 4 ) |
specin.bookingcode | O* | string | ^[a-zA-Z0-9]{1,20}$ | The booking code (reference number) generated by the airline |
specin.route | O* | string | ^[a-zA-Z]{3}-[a-zA-Z]{3}$ | Comma-separated list of the flight routes. Format: XXX-YYY E.g., SIN-HYD |
specin.flightdate | O* | string | ^[0-9]{8}$ | Comma-separated list of the date of the flights. Format: YYYYMMDD |
specin.flighttime | O* | string | ^[0-9]{6}$ | Comma-separated list of the duration of the flights. Format: HHMMSS |
specin.flightnumber | O* | string | .* | Comma-separated list of flight numbers using the IATA Standard. E.g., SQ123 , SQ321 |
specin.passengername | O* | string | .* | Comma-separated list of passenger names in a booking code. |
specin.passengertype | O* | string | .* | Comma-separated list of passenger types in a booking code: - A (Adult)- C (Child) |
specin.vat | O* | string | ^([0-9]{1,12}.[0-9]{2})$ | Value Added Tax cost |
specin.insurance | O* | string | ^([0-9]{1,12}.[0-9]{2})$ | Total flight insurance cost |
specin.fuelsurcharge | O* | string | ^([0-9]{1,12}.[0-9]{2})$ | Total fuel cost |
specin.thirdpartystatus | O* | string | ^[0|1]$ | Specifies if the flight was booked via a travel agent. - 0 : Booked via travel agent- 1 : Not booked via travel agent |
specin.ffnumber | O* | string | ^[a-zA-Z0-9]{1,16}$ | The frequent flyer number for the airlines. Leave 0 if there's no frequent flyer number. |
specin.shippingaddress | O | string | .* | The shipping address containing the street and number. Becomes mandatory when Kredivo is one of the merchant's supported payment methods and specin.paymentchannel is blank or not provided (the merchant is using DOKU's hosted payment selector page). |
specin.shippingcity | O | string | .* | The city name. Becomes mandatory when Kredivo is one of the merchant's supported payment methods and specin.paymentchannel is blank or not provided (the merchant is using DOKU's hosted payment selector page). |
specin.shippingcountry | O | string | ^.{2}$ | The ISO3166, alpha-2 country name. Becomes mandatory when Kredivo is one of the merchant's supported payment methods and specin.paymentchannel is blank or not provided (the merchant is using DOKU's hosted payment selector page). |
specin.shippingzipcode | O | string | .* | The zip code. Becomes mandatory when Kredivo is one of the merchant's supported payment methods and specin.paymentchannel is blank or not provided (the merchant is using DOKU's hosted payment selector page). |
specin.mobilephone | O | string | .* | The mobile phone number. Becomes mandatory when Kredivo is one of the merchant's supported payment methods and specin.paymentchannel is blank or not provided (the merchant is using DOKU's hosted payment selector page). |
*Required only if the value of specin.isflight is yes.
For standard input parameters, see Input parameters for the TRANSACTION call.
TRANSIENTIN parameters
Transientin Parameter | M/O | Type | RegEx | Description |
---|---|---|---|---|
transientin.orderitems | M | string | ^([\w\s\_\-\.]+,\\d+.\\d{2},\\d+,\\d+.\\d{2};?)+$ | The list of items being purchased formatted as a JSON array. See below for details about the data format. |
To find out more about transient input parameters, see this section.
transientin.orderItems format
The format per item is a serialized JSON array containing item objects.
Make sure you follow this format. Allowed characters: alphanumeric, blank space, a hyphen, underscore, and dot.
Each item contains the following fields:
name | The name of the item |
price | The price of the item in major units. The cents must be in 00 . |
quantity | The number of items bought. Integer. |
totalcost | The price multiplied by the quantity, in major units. The cents must be in 00 . |
Warning
If the format or the total cost of all the items is incorrect, the order details will not show on DOKU's payment page.
Example: [{"name":"table","price":"1000.00","quantity":2,"totalcost":"2000.00"},{"name":"Latop 2.0","price":"15000.00","quantity":2,"totalcost":"30000.00"}]
.
In the above example, there are two items in the basket.
- Item 1
- Description: table
- Unit price: 1000.00
- Qty: 2
- Total cost: 2000.00
- Item 2
- Description: Laptop 2.0
- Unit price: 15000.00
- Qty: 2
- Total cost: 30000.00
The total transaction amount must be 32000.
Specific output parameters for the TRANSACTION call
Field Name | Type | Description |
---|---|---|
SPECOUT.PAYMENTCHANNEL | string | The DOKU payment method used to make the payment. Emitted values: - 41 (Bank Mandiri)- 33 (Bank Danamon)- 32 (CIMB Niaga)- 36 (Permata)- 44 (MayBank)- 34 (BRI VA)- 38 (BNI VA) |
For standard output parameters, see Output parameters for the TRANSACTION call.
TRANSACTION call input
tag=doku
&txtype=TRANSACTION
&countrycode=ID
¤cy=IDR
&amount=3200000
&merchanttxid=MYp3MF6zHDQm
&login=johndoe
&password=5hfGDdsfF53G
&contractid=JOHNDOETESTCONTRACT
&channel=testchannel
&merchantredirecturl=https%3A%2F%2Fmerchant.com%2Fwork%2Fppro2%2Flanding.php
¬ificationurl=https%3A%2F%2Fmerchant.com%2Fwork%2Fppro2%2Fnotification.php
&accountholdername=Tester%20Doe
&specin.paymentchannel=32
&specin.bookingcode=245WJ
&specin.email=test%40test.com
&specin.ffnumber=134134
&specin.flight=01
&specin.flightdate=20191231
&specin.flightnumber=SQ321
&specin.flighttime=060000
&specin.flighttype=1
&specin.fuelsurcharge=1000.00
&specin.insurance=1000.00
&specin.isflight=no
&specin.mobilephone=628123456
&specin.passengername=Mary
&specin.passengertype=A
&specin.route=SIN-HYD
&specin.shippingaddress=Sudirman
&specin.shippingcity=Jakarta
&specin.shippingcountry=ID
&specin.shippingzipcode=12190
&specin.thirdpartystatus=0
&specin.vat=10000.00
&transientin.orderitems=[{"name":"Item.1","price":"1000.00","quantity":2,"totalcost":"2000.00"}
,{"name":"item-2 description","price":"15000.00","quantity":2,"totalcost":"30000.00"}]
&returnmode=urlencodeext
TRANSACTION call output
REQUESTSTATUS=SUCCEEDED
&STATUS=SUCCEEDED
&TXID=600520459
&ERRMSG=
&CHANNEL=testchannel
&TAG=doku
&REDIRECTSECRET=d6rSVahlxK0t0Du8tpD12VRE3PosHBUA
&SPECOUT.PAYMENTCHANNEL=32
Additional information
About the item format
Follow the item format strictly. Only the following character types are allowed in the item description:
- alphanumeric
- space
- hyphen
- underscore
- dot
Make sure that the total cost of all items equals the transaction amount.
If the format or the total cost of all items is incorrect, the order details will not show on the payment page.
Payment page integration options
There are two integration options:
- Using the DOKU-hosted payment selection page
- Redirecting straight to the specific payment method on the DOKU page
Note
For both options, you have the possibility to replace the DOKU logo with the merchant logo.
Using the DOKU-hosted payment selection page
If you don't provide a value for specin.paymentchannel
, the consumer is redirected to a payment method selection page with all the merchant's supported payment methods.
The following options are available:
- DOKU e-wallet (DOKU e-wallet)
- Bank transfer (Indonesian Online Banking Transfer)
- Convenience store (Alfamart, Indomaret)
- Wallet (OVO, LinkAja, Jenius Pay)
- Buy now, pay later (Kredivo)
Redirecting to the specific payment method on the DOKU page
To enable this option, make sure you populate the specin.paymentchannel
item with the value that corresponds to the payment method. This option allows you to bypass the payment method selection. The consumer is redirected to the DOKU-hosted page of the specific payment method.
Updated 12 months ago