LinkAja

Integrate LinkAja and allow merchants to accept payments made directly from the consumer's LinkAja wallet.

Payment Method Properties

Available country codesID
Processing (Presentation) currenciesIDR
Settlement currenciesUSD*
Consumer currenciesIDR
Channel member tagdoku
Scheme name in the settlement fileDOKU

See the SPECIN.PAYMENTCHANNEL below to find out how to display the DOKU payment selection page or redirect directly to Linkaja.
Minimum transaction amountIDR 10,000
Maximum transaction amountNon-KYC users: IDR 2,000,000

KYC users: IDR 10,000,000
Session timeout1 hour
RefundNo
Refund ValidityN/A
ChargebackNo
Integration TypeAsynchronous
SandboxPPRO-hosted

🚧

Important

The cent subunit is no longer used. Set the cent amount to 00 for all the IDR transactions.

👍

Note

*IDR is not an exportable currency. PPRO displays IDR to the consumer, but receives the amount converted to USD by DOKU at settlement time. This conversion will be reflected in the aggregate settlement file.

Transaction Flow

E-Wallet

  1. The consumer checks out on the merchant's webpage.
  2. You send the Transaction request to PPRO.
  3. PPRO builds and sends you a redirect URL.
  4. The merchant forwards the redirect URL to the consumer's browser.
  5. The consumer selects the LinkAja option on the DOKU payment page.
  6. DOKU redirects the consumer to the LinkAja login page.
  7. LinkAja displays the login page.
  8. The consumer authenticates (via LinkAja ID, PIN, and SMS).
  9. They complete the payment and LinkAja notifies DOKU of the result.
  10. DOKU notifies PPRO of the transaction result.
  11. PPRO responds to the notification.
  12. PPRO redirects the consumer back to the merchant’s webpage.
  13. PPRO sends you a transaction response.

📘

Tip

If the merchant does not receive a notify status from DOKU, run the Check Status function.

Kredivo Integration

Specific input parameters for the TRANSACTION call

Field NameM/O/CTypeRegexDescription
specin.emailMstring.*The consumer’s email address
specin.paymentchannelOstring.*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 LinkAja: 50
specin.isflightOstring/^(yes|no)$/iIndicates if the transaction:

- is for a flight (yes)

- is not for a flight (no)

Default: no
specin.flightO*string^(01|02)$Specifies if the flight is:

- Domestic (01)

- International (02)
specin.flighttypeO*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.bookingcodeO*string^[a-zA-Z0-9]{1,20}$The booking code (reference number) generated by the airline
specin.routeO*string^[a-zA-Z]{3}-[a-zA-Z]{3}$Comma-separated list of the flight routes. Format: XXX-YYY

E.g., SIN-HYD
specin.flightdateO*string^[0-9]{8}$Comma-separated list of the date of the flights. Format: YYYYMMDD
specin.flighttimeO*string^[0-9]{6}$Comma-separated list of the duration of the flights.

Format: HHMMSS
specin.flightnumberO*string.*Comma-separated list of flight numbers using the IATA Standard. E.g., SQ123, SQ321
specin.passengernameO*string.*Comma-separated list of passenger names in a booking code.
specin.passengertypeO*string.*Comma-separated list of passenger types in a booking code:

- A (Adult)

- C (Child)
specin.vatO*string^([0-9]{1,12}.[0-9]{2})$Value Added Tax cost
specin.insuranceO*string^([0-9]{1,12}.[0-9]{2})$Total flight insurance cost
specin.fuelsurchargeO*string^([0-9]{1,12}.[0-9]{2})$Total fuel cost
specin.thirdpartystatusO*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.ffnumberO*string^[a-zA-Z0-9]{1,16}$The frequent flyer number for the airlines. Leave 0 if there's no frequent flyer number.
specin.shippingaddressOstring.*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.shippingcityOstring.*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.shippingcountryOstring^.{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.shippingzipcodeOstring.*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.mobilephoneOstring.*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 ParameterM/OTypeRegExDescription
transientin.orderitemsMstring^([\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:

nameThe name of the item
priceThe price of the item in major units. The cents must be in 00.
quantityThe number of items bought. Integer.
totalcostThe 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 NameTypeDescription
SPECOUT.PAYMENTCHANNELstringThe DOKU payment method used to make the payment.

Emitted value: 37

For standard output parameters, see Output parameters for the TRANSACTION call.

TRANSACTION call input

tag=doku
&txtype=TRANSACTION
&countrycode=ID
&currency=IDR
&amount=3200000
&merchanttxid=MYp3MF6zHDQm
&login=johndoe
&password=5hfGDdsfF53G
&contractid=JOHNDOETESTCONTRACT
&channel=testchannel
&merchantredirecturl=https%3A%2F%2Fmerchant.com%2Fwork%2Fppro2%2Flanding.php
&notificationurl=https%3A%2F%2Fmerchant.com%2Fwork%2Fppro2%2Fnotification.php
&accountholdername=Tester%20Doe
&specin.paymentchannel=50
&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=50