Embedded Wallet
Integration Steps
Overview of integration process with DOKU Wallet SNAP.
1. Requirement
DOKU Partner credential. This data is generated by DOKU Integration Team and is provided to you upon account activation.
A website or application and test environment.
A prior knowledge of web site or application programming is required.
DOKU API has minimum requirements to run properly:
Dynamic language: Must use a language that supports a dynamic environment. Cannot be plain HTML.
Language: Can use any kind of web-enabled language such as Apache PHP, Microsoft ASP, Adobe ColdFusion, Sun Java, Ruby on Rails.
Frameworks: Virtually can use many of the different frameworks available such as CodeIgniter, Spring, etc.
Capable of using both the HTTP Method GET and POST.
Database: Any kind of database available in the market that supports basic SQL Statements.
2. Signature
X-Signature are one of header components that partners need to send
X-Signature ONLY for Get Token B2B and B2B2C
X-SIGNATURE = SHA256withRSA(PrivateKey, StringToSign)
SHA256withRSA is used to generate the signature with your Private Key.
Generate StringToSign:
StringToSign = client_ID+"|"+X-TIMESTAMP
X-Signature for Others API B2B / B2B2C
X-SIGNATURE = HMAC-SHA512(ClientSecret, StringToSign)
SHA-512 HMAC is used to generate the signature with your Client Secret.
Generate stringToSign:
HTTPMethod + ”:“+ EndpointUrl +":"+ B2BAccessToken + ":“+ Lowercase(HexEncode(SHA-256(minify(RequestBody)))) + ":“ + X-TimeStamp
3. Token
Before partners can access SNAP API DOKU, a partner must request a B2B / B2B2C token. Token B2B / B2B2C session expired 900s (access token will continue to be used as long as there is activity request API from a partners to DOKU), but when partners request access token B2B / B2B2C more than one element before time limit expired, the latest access token B2B / B2B2C will be processed.
a. Token B2B
Token B2B used all SNAP API DOKU.
Note: when you try to access another API with an access token that has already expired, you must re-sign on to get a new access token.
Credential partner from DOKU
BRN-0256-1676878043376Client's current local time in yyyyMMddTHH:mm:ss.SSST ZD format
2026-01-26T14:33:11+07:00Algorithm symmetric signature SHA256withRSA(PrivateKey, StringToSign) SHA256withRSA is used to generate the signature with your Private Key. Generate StringToSign : StringToSign = client_ID+"|"+X-TIMESTAMP
bySGzXdWfHaFF6L5VD/m/uMnAvZYnO6ry7lv5q4v0RB9sZ+yHqC1JPu8B2HLd7J4hVQhXvVaNqJmKt11KlpNpmq9qgtu2bqHt9qFIa5+0lZJjEYKFOFgjxVWSffF1EcTooeV3BUva1EedEsbjYgbaM3e8QszvNmKGkEEzv3qjkM=Grant type for get access token B2B"
client_credentialsOK
2007300SuccessfuleyJhbGciOiJSUzI1NiJ9.eyJleHAiOjE2NjYxNjU0NTYsIm5iZiI6MTY2NjE2NDU1NiwiaXNzIjoiRE9L VSIsImlhdCI6MTY2NjE2NDU1NiwianRpIjoiNzRmYmEyYzQtODlmZi00YTFhLWI2NWItMWExZTYwMmZmMj NjIiwiY2xpZW50SWQiOiIzMTg5In0.l-Nv7ajrTtscfRpDK2E7HY_8YN46Fb5KJfIoLB5M5fKzjwWfiYBE mx1gHRoilXhV4v-mAoa7ZTHgmIPW5WJHhNBI-5203fPyhvvkyK7ZgglB4rV7s3gzD9BWh8qm109Qj34PH1 IYQZyw02KOiOq3G1Hs_FKtBlcR9me1S_IlF2ar4uENMfL-wt2_rESU3u9lMm85imDfohSHVRANk1IJjONo VktRVBACZVxR1jOgVs-y-LTEkIETxXf7_JQGAfRbc5ezuj_lN8Zl0Vy70ZMGDAlZZwH2CRL9pBZCdpJLlQ 8-b1OWXEd_QXdFZU-jtyBGw5bxRy0wiWxKo5h68i77gABearer900POST /authorization/v1/access-token/b2b HTTP/1.1
X-CLIENT-KEY: text
X-TIMESTAMP: text
X-SIGNATURE: text
Content-Type: application/json
Accept: */*
Content-Length: 34
{
"grantType": "client_credentials"
}OK
{
"responseCode": "2007300",
"responseMessage": "Successful",
"accessToken": "eyJhbGciOiJSUzI1NiJ9.eyJleHAiOjE2NjYxNjU0NTYsIm5iZiI6MTY2NjE2NDU1NiwiaXNzIjoiRE9L VSIsImlhdCI6MTY2NjE2NDU1NiwianRpIjoiNzRmYmEyYzQtODlmZi00YTFhLWI2NWItMWExZTYwMmZmMj NjIiwiY2xpZW50SWQiOiIzMTg5In0.l-Nv7ajrTtscfRpDK2E7HY_8YN46Fb5KJfIoLB5M5fKzjwWfiYBE mx1gHRoilXhV4v-mAoa7ZTHgmIPW5WJHhNBI-5203fPyhvvkyK7ZgglB4rV7s3gzD9BWh8qm109Qj34PH1 IYQZyw02KOiOq3G1Hs_FKtBlcR9me1S_IlF2ar4uENMfL-wt2_rESU3u9lMm85imDfohSHVRANk1IJjONo VktRVBACZVxR1jOgVs-y-LTEkIETxXf7_JQGAfRbc5ezuj_lN8Zl0Vy70ZMGDAlZZwH2CRL9pBZCdpJLlQ 8-b1OWXEd_QXdFZU-jtyBGw5bxRy0wiWxKo5h68i77gA",
"tokenType": "Bearer",
"expiresIn": "900",
"additionalInfo": ""
}b. Token B2B2C
Token B2B2C is used for all SNAP API DOKU that involve customers for transaction activity.
Credential partner from DOKU
BRN-0256-1676878043376Client's current local time in yyyyMMddTHH:mm:ss.SSST ZD format
2026-01-26T14:33:11+07:00Algorithm symmetric signature SHA256withRSA(PrivateKey, StringToSign) SHA256withRSA is used to generate the signature with your Private Key. Generate StringToSign : StringToSign = client_ID+"|"+X-TIMESTAMP
bySGzXdWfHaFF6L5VD/m/uMnAvZYnO6ry7lv5q4v0RB9sZ+yHqC1JPu8B2HLd7J4hVQhXvVaNqJmKt11KlpNpmq9qgtu2bqHt9qFIa5+0lZJjEYKFOFgjxVWSffF1EcTooeV3BUva1EedEsbjYgbaM3e8QszvNmKGkEEzv3qjkM=Grant type for get access token B2B2C
authorization_codeAuthorization code that you get from redirect url after user login and consent
cfb5de1a-6a40-40e0-8549-0634bcaed8edOK
2007400SuccessfuleyJhbGciOiJSUzI1NiJ9.eyJleHAiOjE2Njg1MDI4ODMsImlzcyI6IkRPS1UiLCJjbGllbnRJZCI6IjI5 NjUiLCJhZGRpdGlvbmFsRGF0YSI6IntcImFjY291bnRJZFwiOlwiMTEzMDk2MjY0MlwifSJ9.HA91xn5bL tnp8pytgdQE0wo20yiFdDGfHGSBowm9KyMIdCvk6nrZKJCv3eSB7J7mqJwJ0IvnmU0CJQG2O6adzmNLeqL TXcigmED6b9zVd7A_JQPyg0w-GagP3QnTA0Z859vPgqGZQokRAgSrsmj026V5aFEIbdtyk-C44ESj31nmz D8twtyqWgY0hB7UG_TjL093tWYW3VIK-TZepuzdT24l996CriLjcIkLnSXj6LakkCLkKxG229QHtE6fkeu uTSgCgQWZvMAW3Id9sghqKL0IaFP4wlUfH0AFpPzrB059QT6sHxHQJfNd64FUV_n5jvF7AyQ4zHiImUGXx lKzJgBearer2022-11-15T16:01:23+07:00eyJhbGciOiJSUzI1NiJ9.eyJleHAiOjE2Njk3OTg4ODMsImlzcyI6IkRPS1UiLCJjbGllbnRJZCI6IjI5 NjUiLCJhZGRpdGlvbmFsRGF0YSI6IjFiNjRjNGM2LTdhMzYtNGEyMy04OGRiLWRmMzIxMmFkZDg1MCJ9.R o3EzNpe6xUrWggeSOfC4whcdEpVsPXnl6SPrWO63QO7b4nE0azgsCe0lSkJ9wW6KtA42fiHZiXBdZe8PJX L5zthbfdkt1DoZW73WW26uyiZSNZxifWGhURiDhAzbVGTvdAjdDosRQnTgaQhNWfOyKd6ZW0gGuneyfkvX otffNQ5yAKDqDcNxkvr1WFC_gTHL50F6eWIi-uwgwSO_BORk_76zJiJ_iVGmMz6ArZFzN7NgD-xQlko3q_ ivj9ZKh4Awy7SHI5gsfdq4RSLJyy9me-dh5smwj2mniVVbwVeod0DVsNfkgfmF6cBesaz0ufBctx3119LP c-lSQE-65028Q2022-11-30T16:01:23+07:00POST /authorization/v1/access-token/b2b2c HTTP/1.1
X-CLIENT-KEY: text
X-TIMESTAMP: text
X-SIGNATURE: text
Content-Type: application/json
Accept: */*
Content-Length: 84
{
"grantType": "authorization_code",
"authCode": "cfb5de1a-6a40-40e0-8549-0634bcaed8ed"
}OK
{
"responseCode": "2007400",
"responseMessage": "Successful",
"accessToken": "eyJhbGciOiJSUzI1NiJ9.eyJleHAiOjE2Njg1MDI4ODMsImlzcyI6IkRPS1UiLCJjbGllbnRJZCI6IjI5 NjUiLCJhZGRpdGlvbmFsRGF0YSI6IntcImFjY291bnRJZFwiOlwiMTEzMDk2MjY0MlwifSJ9.HA91xn5bL tnp8pytgdQE0wo20yiFdDGfHGSBowm9KyMIdCvk6nrZKJCv3eSB7J7mqJwJ0IvnmU0CJQG2O6adzmNLeqL TXcigmED6b9zVd7A_JQPyg0w-GagP3QnTA0Z859vPgqGZQokRAgSrsmj026V5aFEIbdtyk-C44ESj31nmz D8twtyqWgY0hB7UG_TjL093tWYW3VIK-TZepuzdT24l996CriLjcIkLnSXj6LakkCLkKxG229QHtE6fkeu uTSgCgQWZvMAW3Id9sghqKL0IaFP4wlUfH0AFpPzrB059QT6sHxHQJfNd64FUV_n5jvF7AyQ4zHiImUGXx lKzJg",
"tokenType": "Bearer",
"accessTokenExpiryTime": "2022-11-15T16:01:23+07:00",
"refreshToken": "eyJhbGciOiJSUzI1NiJ9.eyJleHAiOjE2Njk3OTg4ODMsImlzcyI6IkRPS1UiLCJjbGllbnRJZCI6IjI5 NjUiLCJhZGRpdGlvbmFsRGF0YSI6IjFiNjRjNGM2LTdhMzYtNGEyMy04OGRiLWRmMzIxMmFkZDg1MCJ9.R o3EzNpe6xUrWggeSOfC4whcdEpVsPXnl6SPrWO63QO7b4nE0azgsCe0lSkJ9wW6KtA42fiHZiXBdZe8PJX L5zthbfdkt1DoZW73WW26uyiZSNZxifWGhURiDhAzbVGTvdAjdDosRQnTgaQhNWfOyKd6ZW0gGuneyfkvX otffNQ5yAKDqDcNxkvr1WFC_gTHL50F6eWIi-uwgwSO_BORk_76zJiJ_iVGmMz6ArZFzN7NgD-xQlko3q_ ivj9ZKh4Awy7SHI5gsfdq4RSLJyy9me-dh5smwj2mniVVbwVeod0DVsNfkgfmF6cBesaz0ufBctx3119LP c-lSQE-65028Q",
"refreshTokenExpiryTime": "2022-11-30T16:01:23+07:00",
"additionalInfo": ""
}4. Account
a. Account Creation
At this stage is the process for registering a new account, where after a successful registration process the customer will get a DOKU ID that is unique among customers to one another.
For account creation complete partners need to request to 3 API:
Account Creation: Pre registration account data
Verify OTP: Validate account data with OTP ( User Interface provided by partners )
Binding Account: Binding account with partners and get B2BB2C / Authorization-Customer for payment

Client's current local time in yyyyMMddTHH:mm:ss.SSST ZD format
2026-01-26T14:33:11+07:00Credential client ID from DOKU
BRN-0256-1676878043376Reference number that should be unique in the same day
BRN-0256-1676878043376_1769412783294SHA-512 HMAC is used to generate the signature with your Client Secret. Generate stringToSign : HTTPMethod + ”:“+ EndpointUrl +":"+ B2BAccessToken + ":“+ Lowercase(HexEncode(SHA-256(minify(RequestBody)))) + ":“ + X-TimeStamp
bySGzXdWfHaFF6L5VD/m/uMnAvZYnO6ry7lv5q4v0RB9sZ+yHqC1JPu8B2HLd7J4hVQhXvVaNqJmKt11KlpNpmq9qgtu2bqHt9qFIa5+0lZJjEYKFOFgjxVWSffF1EcTooeV3BUva1EedEsbjYgbaM3e8QszvNmKGkEEzv3qjkM=Represents access_token of a request, string starts with keyword “Bearer ” followed by Token B2B
eyJhbGciOiJSUzI1NiJ9.eyJleHAiOjE3Njk0MTM2MzQsImlzcyI6IkRPS1UiLCJjbGllbnRJZCI6IkJSTi0wMjU2LTE2NzY4NzgwNDMzNzYifQ.XPS6T9IKRh5JSI0hGcgkoEJEu1rG68sKf-3BVJNNWxipGPaI7HdGGHOUM3Fi_ivXCTgpgyHEqMC3Ht7kcrvvIwkMHCzxylAbcSKBzZhUm7N-uYdIzfcbTsXbpFk-OMhWF8YROYtlfmfz_PfPmpUYrnrU5vp2phBkrbZBNGVCw9fZBViF6ACuiHDFdcyLjSbM7fSdB0lt6_Tbjum9KeJKTUQNmCXmBX4nI_goFdPR_Y4AewPMDTI7bZUvClBFNrPHzjjaKj-0IxDjFxKeFapZH4BVv6rCbDAlIfQSzIUhTHMJZIE52qcvNMfRy4WGVtaOoaXKgJf3Hvsb3ZP5-cblmQf1a69bce-41bc-4abd-8c5c-01910574e404SNAPaccount1123001081212340010SNAPaccount11230010@doku.comhttps://doku.comOK
2000600Request has been processed successfullyd2059e29-aebe-4c60-be56-936f85f230e1f1a69bce-41bc-4abd-8c5c-01910574e404POST /snap-adapter/b2b/v1.0/registration-account-creation HTTP/1.1
X-TIMESTAMP: text
X-PARTNER-ID: text
X-EXTERNAL-ID: text
X-SIGNATURE: text
Authorization: text
Content-Type: application/json
Accept: */*
Content-Length: 184
{
"partnerReferenceNo": "f1a69bce-41bc-4abd-8c5c-01910574e404",
"name": "SNAPaccount11230010",
"phoneNo": 81212340010,
"email": "SNAPaccount11230010@doku.com",
"redirectUrl": "https://doku.com"
}OK
{
"responseCode": 2000600,
"responseMessage": "Request has been processed successfully",
"referenceNo": "d2059e29-aebe-4c60-be56-936f85f230e1",
"partnerReferenceNo": "f1a69bce-41bc-4abd-8c5c-01910574e404"
}b. Request OTP
With this API partners can request new OTP when customer OTP has expired. OTP expired time 5 Minutes

Client's current local time in yyyyMMddTHH:mm:ss.SSST ZD format
2026-01-26T14:33:11+07:00Credential client ID from DOKU
BRN-0256-1676878043376Reference number that should be unique in the same day
BRN-0256-1676878043376_1769412783294SHA-512 HMAC is used to generate the signature with your Client Secret. Generate stringToSign : HTTPMethod + ”:“+ EndpointUrl +":"+ B2BAccessToken + ":“+ Lowercase(HexEncode(SHA-256(minify(RequestBody)))) + ":“ + X-TimeStamp
bySGzXdWfHaFF6L5VD/m/uMnAvZYnO6ry7lv5q4v0RB9sZ+yHqC1JPu8B2HLd7J4hVQhXvVaNqJmKt11KlpNpmq9qgtu2bqHt9qFIa5+0lZJjEYKFOFgjxVWSffF1EcTooeV3BUva1EedEsbjYgbaM3e8QszvNmKGkEEzv3qjkM=Represents access_token of a request, string starts with keyword “Bearer ” followed by Token B2B
eyJhbGciOiJSUzI1NiJ9.eyJleHAiOjE3Njk0MTM2MzQsImlzcyI6IkRPS1UiLCJjbGllbnRJZCI6IkJSTi0wMjU2LTE2NzY4NzgwNDMzNzYifQ.XPS6T9IKRh5JSI0hGcgkoEJEu1rG68sKf-3BVJNNWxipGPaI7HdGGHOUM3Fi_ivXCTgpgyHEqMC3Ht7kcrvvIwkMHCzxylAbcSKBzZhUm7N-uYdIzfcbTsXbpFk-OMhWF8YROYtlfmfz_PfPmpUYrnrU5vp2phBkrbZBNGVCw9fZBViF6ACuiHDFdcyLjSbM7fSdB0lt6_Tbjum9KeJKTUQNmCXmBX4nI_goFdPR_Y4AewPMDTI7bZUvClBFNrPHzjjaKj-0IxDjFxKeFapZH4BVv6rCbDAlIfQSzIUhTHMJZIE52qcvNMfRy4WGVtaOoaXKgJf3Hvsb3ZP5-cblmQActivity ID partners from request Account Creation / Account Unbinding
AccountSNAP0002DOKU
DOKUAn identifier to uniquly identify a journey. On the first request of the journey, this must be equal to the X-EXTERNAL-ID.
BRN-0229-1689238428325_1692351887640OK
Respond Code for Result API
2008100Detailed Response Message
Request has been processed successfullyActivity ID from partners
f139057a-39f6-468d-a9ec-c30987b6752dActivity ID from DOKU
7f153090-68c5-4f4b-8902-ef779340818bString code for verification OTP
2db4fbf7e00b9931337f6e912c304f9de5c31a60POST /snap-adapter/b2b/v1.0/otp HTTP/1.1
X-TIMESTAMP: text
X-PARTNER-ID: text
X-EXTERNAL-ID: text
X-SIGNATURE: text
Authorization: text
Content-Type: application/json
Accept: */*
Content-Length: 180
{
"partnerReferenceNo": "AccountSNAP0002",
"bankCardToken": "DOKU",
"journeyID": "BRN-0229-1689238428325_1692351887640",
"additionalInfo": {
"deviceId": 12345679237,
"channel": "mobilephone"
}
}OK
{
"responseCode": 2008100,
"responseMessage": "Request has been processed successfully",
"partnerReferenceNo": "f139057a-39f6-468d-a9ec-c30987b6752d",
"referenceNo": "7f153090-68c5-4f4b-8902-ef779340818b",
"chargeToken": "2db4fbf7e00b9931337f6e912c304f9de5c31a60",
"additionalInfo": {
"deviceId": 12345679237,
"channel": "mobilephone"
}
}c. Verify OTP
Partners use API Verify OTP when user input OTP on partner side, this activity is required when we need to validate the account, example on flow journey Account Creation and Account Unbinding.
Client's current local time in yyyyMMddTHH:mm:ss.SSST ZD format
2026-01-26T14:33:11+07:00Credential client ID from DOKU
BRN-0256-1676878043376Reference number that should be unique in the same day
BRN-0256-1676878043376_1769412783294SHA-512 HMAC is used to generate the signature with your Client Secret. Generate stringToSign : HTTPMethod + ”:“+ EndpointUrl +":"+ B2BAccessToken + ":“+ Lowercase(HexEncode(SHA-256(minify(RequestBody)))) + ":“ + X-TimeStamp
bySGzXdWfHaFF6L5VD/m/uMnAvZYnO6ry7lv5q4v0RB9sZ+yHqC1JPu8B2HLd7J4hVQhXvVaNqJmKt11KlpNpmq9qgtu2bqHt9qFIa5+0lZJjEYKFOFgjxVWSffF1EcTooeV3BUva1EedEsbjYgbaM3e8QszvNmKGkEEzv3qjkM=Represents access_token of a request, string starts with keyword “Bearer ” followed by Token B2B
eyJhbGciOiJSUzI1NiJ9.eyJleHAiOjE3Njk0MTM2MzQsImlzcyI6IkRPS1UiLCJjbGllbnRJZCI6IkJSTi0wMjU2LTE2NzY4NzgwNDMzNzYifQ.XPS6T9IKRh5JSI0hGcgkoEJEu1rG68sKf-3BVJNNWxipGPaI7HdGGHOUM3Fi_ivXCTgpgyHEqMC3Ht7kcrvvIwkMHCzxylAbcSKBzZhUm7N-uYdIzfcbTsXbpFk-OMhWF8YROYtlfmfz_PfPmpUYrnrU5vp2phBkrbZBNGVCw9fZBViF6ACuiHDFdcyLjSbM7fSdB0lt6_Tbjum9KeJKTUQNmCXmBX4nI_goFdPR_Y4AewPMDTI7bZUvClBFNrPHzjjaKj-0IxDjFxKeFapZH4BVv6rCbDAlIfQSzIUhTHMJZIE52qcvNMfRy4WGVtaOoaXKgJf3Hvsb3ZP5-cblmQActivity ID partners from request AccountCreation
f1a69bce-41bc-4abd-8c5c-01910574e404Activity ID DOKU from respond AccountCreation
934fbec9-2f65-40e1-b7fa-71e62536b83cOne Time Password entered by the user
989029OK
2000400Request has been processed successfullyf139057a-39f6-468d-a9ec-c30987b6752d7f153090-68c5-4f4b-8902-ef779340818bSNAPsurya6@doku.com857100006YEShttps://sandbox.doku.com/snap-adapter-webview/create-pinPOST /snap-adapter/b2b/v1.0/otp-verification HTTP/1.1
X-TIMESTAMP: text
X-PARTNER-ID: text
X-EXTERNAL-ID: text
X-SIGNATURE: text
Authorization: text
Content-Type: application/json
Accept: */*
Content-Length: 185
{
"originalPartnerReferenceNo": "f1a69bce-41bc-4abd-8c5c-01910574e404",
"originalReferenceNo": "934fbec9-2f65-40e1-b7fa-71e62536b83c",
"otp": 989029,
"additionalInfo": "Additional Information"
}OK
{
"responseCode": 2000400,
"responseMessage": "Request has been processed successfully",
"originalPartnerReferenceNo": "f139057a-39f6-468d-a9ec-c30987b6752d",
"originalReferenceNo": "7f153090-68c5-4f4b-8902-ef779340818b",
"email": "SNAPsurya6@doku.com",
"phoneNo": 857100006,
"sendOtpFlag": "YES",
"additionalInfo": {
"deviceId": 12345679237
},
"qparamsURL": "https://sandbox.doku.com/snap-adapter-webview/create-pin",
"qparams": {
"token": "eyJhbGciOiJIUzUxMiJ9.eyJyZWRpc19rZXlfaWQiOiJzbmFwLWFkYXB0ZXI6OmFjY291bnQtY3JlYXRpb2 46OmNyZWF0ZS1waW46OjA4NTcxMDAwMDYxMTc1MTAwMDA2IiwiY3JlYXRlZCI6MTY2Njk1MzcxMDY2NiwiZX hwIjoxNjY3MDQwMTEwfQ.bUW2pO5k5OhLva8fn9UC4a3WTSAOpeSiHWlH467XZsC4BtTUBh7wOvaASbMpK99 k52Nc95PlxDMrlheFKlqPyw"
}
}d. Account Binding
Account Binding is flow to bind DOKU Wallet accounts to partner for get authCode (B2BB2C / Authorization-Customer for payment purposes)

Client's current local time in yyyyMMddTHH:mm:ss.SSST ZD format
2026-01-26T14:33:11+07:00Credential client ID from DOKU
Reference number that should be unique in the same day
BRN-0256-1676878043376_1769412783294SHA-512 HMAC is used to generate the signature with your Client Secret. Generate stringToSign : HTTPMethod + ”:“+ EndpointUrl +":"+ B2BAccessToken + ":“+ Lowercase(HexEncode(SHA-256(minify(RequestBody)))) + ":“ + X-TimeStamp
bySGzXdWfHaFF6L5VD/m/uMnAvZYnO6ry7lv5q4v0RB9sZ+yHqC1JPu8B2HLd7J4hVQhXvVaNqJmKt11KlpNpmq9qgtu2bqHt9qFIa5+0lZJjEYKFOFgjxVWSffF1EcTooeV3BUva1EedEsbjYgbaM3e8QszvNmKGkEEzv3qjkM=Represents access_token of a request, string starts with keyword “Bearer ” followed by Token B2B
eyJhbGciOiJSUzI1NiJ9.eyJleHAiOjE3Njk0MTM2MzQsImlzcyI6IkRPS1UiLCJjbGllbnRJZCI6IkJSTi0wMjU2LTE2NzY4NzgwNDMzNzYifQ.XPS6T9IKRh5JSI0hGcgkoEJEu1rG68sKf-3BVJNNWxipGPaI7HdGGHOUM3Fi_ivXCTgpgyHEqMC3Ht7kcrvvIwkMHCzxylAbcSKBzZhUm7N-uYdIzfcbTsXbpFk-OMhWF8YROYtlfmfz_PfPmpUYrnrU5vp2phBkrbZBNGVCw9fZBViF6ACuiHDFdcyLjSbM7fSdB0lt6_Tbjum9KeJKTUQNmCXmBX4nI_goFdPR_Y4AewPMDTI7bZUvClBFNrPHzjjaKj-0IxDjFxKeFapZH4BVv6rCbDAlIfQSzIUhTHMJZIE52qcvNMfRy4WGVtaOoaXKgJf3Hvsb3ZP5-cblmQActivity ID partners from request AccountCreation
f1a69bce-41bc-4abd-8c5c-01910574e404Partner URL when user finish binding
https://partner.com/redirectOK
2000700Request has been processed successfully934fbec9-2f65-40e1-b7fa-71e62536b83c478c40b2-e8af-49ed-bd6c-c36aa3a27ef71669794770461PTWZy7qpYcghttps://sandbox.doku.com/snap-adapter-webview/account-binding?token=eyJhbGciOiJI UzUxMiJ9.eyJyZWRpc19rZXlfaWQiOiJzbmFwLWFkYXB0ZXI6OmFjY291bnQtYmluZGluZzo6YXV0aGVu dGljYXRpb246OjYyODEyMTIzNDAwMTAxMTIwMzQwMDEwLTQ3OGM0MGIyLWU4YWYtNDllZC1iZDZjLWMzN mFhM2EyN2VmNyIsImNyZWF0ZWQiOjE2Njk3OTQ3NzA2ODQsImV4cCI6MTY2OTg4MTE3MH0.j9IzFhlw-g -t861S4f76B_k_jy-E_XvkFX1HxDdxD9V7sz49u7rPbuG8XadlPE7aOSsG7E4QjYGbUZIgH9LcNw&phon eNo=6281*****0010https://dwidobelyu-doku.free.beeceptor.comPOST /snap-adapter/b2b/v1.0/registration-account-binding HTTP/1.1
X-TIMESTAMP: text
X-PARTNER-ID: text
X-EXTERNAL-ID: text
X-SIGNATURE: text
Authorization: text
Content-Type: application/json
Accept: */*
Content-Length: 147
{
"partnerReferenceNo": "f1a69bce-41bc-4abd-8c5c-01910574e404",
"redirectUrl": "https://partner.com/redirect",
"successParams": {
"accountId": 1120340010
}
}OK
{
"responseCode": 2000700,
"responseMessage": "Request has been processed successfully",
"referenceNo": "934fbec9-2f65-40e1-b7fa-71e62536b83c",
"partnerReferenceNo": "478c40b2-e8af-49ed-bd6c-c36aa3a27ef7",
"linkId": "1669794770461PTWZy7qpYcg",
"nextAction": "https://sandbox.doku.com/snap-adapter-webview/account-binding?token=eyJhbGciOiJI UzUxMiJ9.eyJyZWRpc19rZXlfaWQiOiJzbmFwLWFkYXB0ZXI6OmFjY291bnQtYmluZGluZzo6YXV0aGVu dGljYXRpb246OjYyODEyMTIzNDAwMTAxMTIwMzQwMDEwLTQ3OGM0MGIyLWU4YWYtNDllZC1iZDZjLWMzN mFhM2EyN2VmNyIsImNyZWF0ZWQiOjE2Njk3OTQ3NzA2ODQsImV4cCI6MTY2OTg4MTE3MH0.j9IzFhlw-g -t861S4f76B_k_jy-E_XvkFX1HxDdxD9V7sz49u7rPbuG8XadlPE7aOSsG7E4QjYGbUZIgH9LcNw&phon eNo=6281*****0010",
"redirectUrl": "https://dwidobelyu-doku.free.beeceptor.com",
"userInfo": {
"publicUserId": 1120340010
}
}e. Query Account Binding
This API to check the binding status of an account.

Additional Info
The authcode can be found in the account binding inquiry API response. The value will be in the form of cipher text which is the result of encryption using AES-1. To get the raw text, partners need to encrypt the authCode obtained from the API. From the partner side, there are 2 values that will be used:
cipherText: authCode obtained from the account inquiry response
secretKey: key provided by DOKU
To decrypt it, we need to create a Cipher instance to decrypt with AES and decode the cipherText using BASE64Decoder. Here's the sample code :
Convert secretKey from String to bytes
Create a cryptographic key from the secret key
Create a Cipher instance for AES
Set Cipher to decrypt with secretKey
Decode cipherText to bytes
Decrypt cipher text
Convert rawText from bytes to String
Client's current local time in yyyyMMddTHH:mm:ss.SSST ZD format
2026-01-26T14:33:11+07:00Credential client ID from DOKU
BRN-0256-1676878043376Reference number that should be unique in the same day
BRN-0256-1676878043376_1769412783294SHA-512 HMAC is used to generate the signature with your Client Secret. Generate stringToSign : HTTPMethod + ”:“+ EndpointUrl +":"+ B2BAccessToken + ":“+ Lowercase(HexEncode(SHA-256(minify(RequestBody)))) + ":“ + X-TimeStamp
bySGzXdWfHaFF6L5VD/m/uMnAvZYnO6ry7lv5q4v0RB9sZ+yHqC1JPu8B2HLd7J4hVQhXvVaNqJmKt11KlpNpmq9qgtu2bqHt9qFIa5+0lZJjEYKFOFgjxVWSffF1EcTooeV3BUva1EedEsbjYgbaM3e8QszvNmKGkEEzv3qjkM=Represents access_token of a request, string starts with keyword “Bearer ” followed by Token B2B
eyJhbGciOiJSUzI1NiJ9.eyJleHAiOjE3Njk0MTM2MzQsImlzcyI6IkRPS1UiLCJjbGllbnRJZCI6IkJSTi0wMjU2LTE2NzY4NzgwNDMzNzYifQ.XPS6T9IKRh5JSI0hGcgkoEJEu1rG68sKf-3BVJNNWxipGPaI7HdGGHOUM3Fi_ivXCTgpgyHEqMC3Ht7kcrvvIwkMHCzxylAbcSKBzZhUm7N-uYdIzfcbTsXbpFk-OMhWF8YROYtlfmfz_PfPmpUYrnrU5vp2phBkrbZBNGVCw9fZBViF6ACuiHDFdcyLjSbM7fSdB0lt6_Tbjum9KeJKTUQNmCXmBX4nI_goFdPR_Y4AewPMDTI7bZUvClBFNrPHzjjaKj-0IxDjFxKeFapZH4BVv6rCbDAlIfQSzIUhTHMJZIE52qcvNMfRy4WGVtaOoaXKgJf3Hvsb3ZP5-cblmQIdentifier activity ID from partners
f1a69bce-41bc-4abd-8c5c-01910574e404OK
2000800Request has been processed successfully0987dc7e-a391-420a-887a-425595acaabd"f314e49a-c2e8-4db1-bbac-335120ea6a731508091937POST /snap-adapter/b2b/v1.0/registration-account-inquiry HTTP/1.1
X-TIMESTAMP: text
X-PARTNER-ID: text
X-EXTERNAL-ID: text
X-SIGNATURE: text
Authorization: text
Content-Type: application/json
Accept: */*
Content-Length: 103
{
"partnerReferenceNo": "f1a69bce-41bc-4abd-8c5c-01910574e404",
"additionalInfo": {
"accountId": 1120340010
}
}OK
{
"responseCode": 2000800,
"responseMessage": "Request has been processed successfully",
"referenceNo": "0987dc7e-a391-420a-887a-425595acaabd\"",
"partnerReferenceNo": "f314e49a-c2e8-4db1-bbac-335120ea6a73",
"accountNo": 1508091937,
"additionalInfo": {
"linkId": "1669794770461PTWZy7qpY2d",
"remarks": 3189,
"authCode": "Y/YkpGWMVp644b4C7GI2V2aPzqjg3RlzSB9euMhRkoXq1rD+hBhc8xy7rfGsWIxQ",
"merchantId": "Already bound with related merchant"
}
}f. Account Unbinding
This is the process when customers want to unbinding their DOKU account from merchants. To complete the unbinding account process OTP must send to API Verify OTP.

Client's current local time in yyyyMMddTHH:mm:ss.SSST ZD format
2026-01-26T14:33:11+07:00Credential client ID from DOKU
BRN-0256-1676878043376Reference number that should be unique in the same day
BRN-0256-1676878043376_1769412783294SHA-512 HMAC is used to generate the signature with your Client Secret. Generate stringToSign : HTTPMethod + ”:“+ EndpointUrl +":"+ B2BAccessToken + ":“+ Lowercase(HexEncode(SHA-256(minify(RequestBody)))) + ":“ + X-TimeStamp
bySGzXdWfHaFF6L5VD/m/uMnAvZYnO6ry7lv5q4v0RB9sZ+yHqC1JPu8B2HLd7J4hVQhXvVaNqJmKt11KlpNpmq9qgtu2bqHt9qFIa5+0lZJjEYKFOFgjxVWSffF1EcTooeV3BUva1EedEsbjYgbaM3e8QszvNmKGkEEzv3qjkM=Represents access_token of a request, string starts with keyword “Bearer ” followed by Token B2B
eyJhbGciOiJSUzI1NiJ9.eyJleHAiOjE3Njk0MTM2MzQsImlzcyI6IkRPS1UiLCJjbGllbnRJZCI6IkJSTi0wMjU2LTE2NzY4NzgwNDMzNzYifQ.XPS6T9IKRh5JSI0hGcgkoEJEu1rG68sKf-3BVJNNWxipGPaI7HdGGHOUM3Fi_ivXCTgpgyHEqMC3Ht7kcrvvIwkMHCzxylAbcSKBzZhUm7N-uYdIzfcbTsXbpFk-OMhWF8YROYtlfmfz_PfPmpUYrnrU5vp2phBkrbZBNGVCw9fZBViF6ACuiHDFdcyLjSbM7fSdB0lt6_Tbjum9KeJKTUQNmCXmBX4nI_goFdPR_Y4AewPMDTI7bZUvClBFNrPHzjjaKj-0IxDjFxKeFapZH4BVv6rCbDAlIfQSzIUhTHMJZIE52qcvNMfRy4WGVtaOoaXKgJf3Hvsb3ZP5-cblmQIdentifier activity ID from partners
f1a69bce-41bc-4abd-8c5c-01910574e404Identifier provided from Account Binding
1669794770461PTWZy7qpY2dCredential client ID from DOKU
3189OK
2000900Request has been processed successfully8f560a36-fc69-407a-9b62-6565d15263b2f68f64b5-842e-4298-87c4-6ee7bd2024673189SnpFXl9hINuzcA9gxGwgcJk8inProgressPOST /snap-adapter/b2b/v1.0/registration-account-unbinding HTTP/1.1
X-TIMESTAMP: text
X-PARTNER-ID: text
X-EXTERNAL-ID: text
X-SIGNATURE: text
Authorization: text
Content-Type: application/json
Accept: */*
Content-Length: 202
{
"partnerReferenceNo": "f1a69bce-41bc-4abd-8c5c-01910574e404",
"linkId": "1669794770461PTWZy7qpY2d",
"merchantId": 3189,
"additionalInfo": {
"deviceId": 12345679237,
"channel": "mobilephone",
"phoneNo": 6281000004
}
}OK
{
"responseCode": 2000900,
"responseMessage": "Request has been processed successfully",
"referenceNo": "8f560a36-fc69-407a-9b62-6565d15263b2",
"partnerReferenceNo": "f68f64b5-842e-4298-87c4-6ee7bd202467",
"merchantId": 3189,
"linkId": "SnpFXl9hINuzcA9gxGwgcJk8",
"unlinkResult": "inProgress",
"additionalInfo": {
"channel": "mobilephone",
"deviceId": 12345679237,
"phoneNo": 1802100004
}
}g. Balance Inquiry
With this API, partners can check for customer balance that has been verified by DOKU, so that partners can equate customer data, between partners and DOKU.

Client's current local time in yyyyMMddTHH:mm:ss.SSST ZD format
2026-01-26T14:33:11+07:00Credential client ID from DOKU
BRN-0256-1676878043376Reference number that should be unique in the same day
BRN-0256-1676878043376_1769412783294SHA-512 HMAC is used to generate the signature with your Client Secret. Generate stringToSign : HTTPMethod + ”:“+ EndpointUrl +":"+ B2BAccessToken + ":“+ Lowercase(HexEncode(SHA-256(minify(RequestBody)))) + ":“ + X-TimeStamp
bySGzXdWfHaFF6L5VD/m/uMnAvZYnO6ry7lv5q4v0RB9sZ+yHqC1JPu8B2HLd7J4hVQhXvVaNqJmKt11KlpNpmq9qgtu2bqHt9qFIa5+0lZJjEYKFOFgjxVWSffF1EcTooeV3BUva1EedEsbjYgbaM3e8QszvNmKGkEEzv3qjkM=Represents access_token of a request, string starts with keyword “Bearer ” followed by Token B2B
eyJhbGciOiJSUzI1NiJ9.eyJleHAiOjE3Njk0MTM2MzQsImlzcyI6IkRPS1UiLCJjbGllbnRJZCI6IkJSTi0wMjU2LTE2NzY4NzgwNDMzNzYifQ.XPS6T9IKRh5JSI0hGcgkoEJEu1rG68sKf-3BVJNNWxipGPaI7HdGGHOUM3Fi_ivXCTgpgyHEqMC3Ht7kcrvvIwkMHCzxylAbcSKBzZhUm7N-uYdIzfcbTsXbpFk-OMhWF8YROYtlfmfz_PfPmpUYrnrU5vp2phBkrbZBNGVCw9fZBViF6ACuiHDFdcyLjSbM7fSdB0lt6_Tbjum9KeJKTUQNmCXmBX4nI_goFdPR_Y4AewPMDTI7bZUvClBFNrPHzjjaKj-0IxDjFxKeFapZH4BVv6rCbDAlIfQSzIUhTHMJZIE52qcvNMfRy4WGVtaOoaXKgJf3Hvsb3ZP5-cblmQRepresents access_token of a request belong customer; string starts with keyword “Bearer ” followed by Token B2B2C
eyJhbGciOiJSUzI1NiJ9.eyJleHAiOjE3NTEwOTMxMTYsImlzcyI6IkRPS1UiLCJjbGllbnRJZCI6IkJSTi0wMjU2LTE2NzY4NzgwNDMzNzYiLCJhY2NvdW50SWQiOiIxMTMwOTYyNjQyIn0.obDKu1k0ioPnAy89PzdhOx9w5ZqqTN_0I26A_N5MgXbxub8szGpwpsaZD5lNme9CMydJT8pBr4cuYb1uU-FUbAVg2I9OsEmioHLHHUhbAhfykOREOm9PXkU4A3e3_7jjt77XuJGTat-0ZG1tGn21GNbaCUa4TswE61PcUu-XM7rPoOSZkwxR_YPg7vWrR9cSNIJV3iECWGWD-t_cGgbi0Jt3Yj-eCA9JIjQGa9o8fPwvW1xmWLcLw6MhUdppYLphd5ulhLTCLeI4wpr8RXP9Kq0K0trcEBrVDFELD9PykcPuG8A_yW8lgjoTcJaep85CHlS07w-9TakwEND0Wu4Y8wActivity ID from partnersOK
Respond Code for Result API
2001100Detailed Response Message
Request has been processed successfully9e5bfe5d-6270-4737-ad45-1091f97c8b6d1eb0db4aa2e642208e71e9252428d91217139626343John DoePOST /snap-adapter/b2b2c/v1.0/balance-inquiry HTTP/1.1
X-TIMESTAMP: text
X-PARTNER-ID: text
X-EXTERNAL-ID: text
X-SIGNATURE: text
Authorization: text
Authorization-Customer: text
Content-Type: application/json
Accept: */*
Content-Length: 50
{
"partnerReferenceNo": "Activity ID from partners"
}OK
{
"responseCode": 2001100,
"responseMessage": "Request has been processed successfully",
"referenceNo": "9e5bfe5d-6270-4737-ad45-1091f97c8b6d",
"partnerReferenceNo": "1eb0db4aa2e642208e71e9252428d912",
"accountNo": 17139626343,
"name": "John Doe",
"accountInfo": {
"balanceType": "Cash",
"amount": {
"value": 1095086.98,
"currency": "IDR"
}
}
}5. Authorize Payment and Capture
a. Auth Payment
Enables partners to authorize payments without immediate capture. This API is ideal for scenarios where payment verification is required before final processing.

Endpoint to authorize a payment transaction.
10000.00Payment authorized successfully.
10000.00Bad request.
Internal server error.
POST /dw/b2b2c/v1.0/auth/payment HTTP/1.1
Content-Type: application/json
Accept: */*
Content-Length: 81
{
"partnerReferenceNo": {},
"merchantId": {},
"amount": "10000.00",
"mcc": {},
"items": {}
}{
"responseCode": {},
"responseMessage": {},
"referenceNo": {},
"partnerReferenceNo": {},
"amount": "10000.00",
"paidTime": {},
"additionalInfo": {}
}b. Capture Payment
Enables partners to Capture payments after Authorize Payment. When Split Settlement Rules are defined, then the capture amount can be transferred to DOKU ID

Endpoint to capture a payment transaction.
False : Amount of Auth payment can be partially captured True : Capture full amount of Authorize payment, can captured less than Auth Payment amount, rest of hold balance will be returned to user
Payment capture successfully.
200650010000.00Bad request.
Internal server error.
POST /dw/b2b2c/v1.0/auth/capture HTTP/1.1
Content-Type: application/json
Accept: */*
Content-Length: 395
{
"originalReferenceNo": {},
"originalPartnerReferenceNo": {},
"merchantId": {},
"partnerCaptureNo": {},
"captureAmount": {},
"title": {},
"lastCapture": false,
"additionalInfo": {
"splitSettlementRules": {
"routes": [
{
"destinationType": "SETTLEMENT_BANK_ACCOUNT",
"destinationAccount": "SBA-001-00001",
"partnerReferenceNo": "2020102900000000000032",
"remark": "Driver Fee for invoice #xxxxx",
"amount": {
"type": "FIX"
}
}
]
}
}
}{
"responseCode": "2006500",
"responseMessage": {},
"originalReferenceNo": {},
"originalPartnerReferenceNo": {},
"captureAmount": "10000.00",
"captureTime": {},
"additionalInfo": {}
}c. Void Auth Payment
Enable Customer to Cancel order by using Void Auth Payment API, Authorized Amount will be released to Active Balance to be used in the next transaction.

Endpoint to Cancel Void payment transaction.
void successfully.
2006700Bad request.
Internal server error.
POST /dw/b2b2c/v1.0/auth/void HTTP/1.1
Content-Type: application/json
Accept: */*
Content-Length: 105
{
"originalReferenceNo": {},
"originalPartnerReferenceNo": {},
"merchantId": {},
"partnerVoidNo": {},
"reason": {}
}{
"responseCode": "2006700",
"responseMessage": {},
"originalReferenceNo": {},
"originalPartnerReferenceNo": {},
"voidNo": {},
"partnerVoidNo": {},
"voidAmount": {},
"voidTime": {}
}6. Purchase
Partners can provide an online payment facility using PIN authentication that can facilitate customers in making the transaction at any merchant that has been integrated. DOKU will provide a webview payment page to input the PIN and proceed with the payment.
a. Purchase Web

Client's current local time in yyyyMMddTHH:mm:ss.SSST ZD format
2026-01-26T14:33:11+07:00Credential client ID from DOKU
BRN-0256-1676878043376Reference number that should be unique in the same day
BRN-0256-1676878043376_1769412783294SHA-512 HMAC is used to generate the signature with your Client Secret. Generate stringToSign : HTTPMethod + ”:“+ EndpointUrl +":"+ B2BAccessToken + ":“+ Lowercase(HexEncode(SHA-256(minify(RequestBody)))) + ":“ + X-TimeStamp
bySGzXdWfHaFF6L5VD/m/uMnAvZYnO6ry7lv5q4v0RB9sZ+yHqC1JPu8B2HLd7J4hVQhXvVaNqJmKt11KlpNpmq9qgtu2bqHt9qFIa5+0lZJjEYKFOFgjxVWSffF1EcTooeV3BUva1EedEsbjYgbaM3e8QszvNmKGkEEzv3qjkM=Represents access_token of a request, string starts with keyword “Bearer ” followed by Token B2B
eyJhbGciOiJSUzI1NiJ9.eyJleHAiOjE3Njk0MTM2MzQsImlzcyI6IkRPS1UiLCJjbGllbnRJZCI6IkJSTi0wMjU2LTE2NzY4NzgwNDMzNzYifQ.XPS6T9IKRh5JSI0hGcgkoEJEu1rG68sKf-3BVJNNWxipGPaI7HdGGHOUM3Fi_ivXCTgpgyHEqMC3Ht7kcrvvIwkMHCzxylAbcSKBzZhUm7N-uYdIzfcbTsXbpFk-OMhWF8YROYtlfmfz_PfPmpUYrnrU5vp2phBkrbZBNGVCw9fZBViF6ACuiHDFdcyLjSbM7fSdB0lt6_Tbjum9KeJKTUQNmCXmBX4nI_goFdPR_Y4AewPMDTI7bZUvClBFNrPHzjjaKj-0IxDjFxKeFapZH4BVv6rCbDAlIfQSzIUhTHMJZIE52qcvNMfRy4WGVtaOoaXKgJf3Hvsb3ZP5-cblmQRepresents access_token of a request belong customer; string starts with keyword “Bearer ” followed by Token B2B2C
eyJhbGciOiJSUzI1NiJ9.eyJleHAiOjE3NTEwOTMxMTYsImlzcyI6IkRPS1UiLCJjbGllbnRJZCI6IkJSTi0wMjU2LTE2NzY4NzgwNDMzNzYiLCJhY2NvdW50SWQiOiIxMTMwOTYyNjQyIn0.obDKu1k0ioPnAy89PzdhOx9w5ZqqTN_0I26A_N5MgXbxub8szGpwpsaZD5lNme9CMydJT8pBr4cuYb1uU-FUbAVg2I9OsEmioHLHHUhbAhfykOREOm9PXkU4A3e3_7jjt77XuJGTat-0ZG1tGn21GNbaCUa4TswE61PcUu-XM7rPoOSZkwxR_YPg7vWrR9cSNIJV3iECWGWD-t_cGgbi0Jt3Yj-eCA9JIjQGa9o8fPwvW1xmWLcLw6MhUdppYLphd5ulhLTCLeI4wpr8RXP9Kq0K0trcEBrVDFELD9PykcPuG8A_yW8lgjoTcJaep85CHlS07w-9TakwEND0Wu4Y8wTransaction ID from partners
f1a69bce-41bc-4abd-8c5c-01910574e404Charge token for the transaction
2db4fbf7e00b9931337f6e912c304f9de5c31a606067OK
2005400Request has been processed successfullyc8c73c4635794cdcae7d9fe325251088c8c73c4635794cdcae7d9fe325251088https://sandbox.doku.com/snap-adapter-webview/direct-debit?token=eyJhbGciOiJIUzU xMiJ9.eyJyZWRpc19rZXlfaWQiOiJzbmFwLWFkYXB0ZXI6OmRpcmVjdC1kZWJpdDo6MTQ1NTM0MDAwNC1 jOGM3M2M0NjM1Nzk0Y2RjYWU3ZDlmZTMyNTI1MTA4OCIsImNyZWF0ZWQiOjE2NjkwODc0OTI1MTgsImV4 cCI6MTY2OTE3Mzg5Mn0.wIL92PT2km7rQ0oHWytEVknE0X6URdIJz4f7s-TQ9E3uH4txLGo2a-GMYdh-w acTcXjl252XS87_634ajnM_dgPOST /snap-adapter/b2b2c/v1.0/debit/payment-host-to-host HTTP/1.1
X-TIMESTAMP: text
X-PARTNER-ID: text
X-EXTERNAL-ID: text
X-SIGNATURE: text
Authorization: text
Authorization-Customer: text
Content-Type: application/json
Accept: */*
Content-Length: 359
{
"partnerReferenceNo": "f1a69bce-41bc-4abd-8c5c-01910574e404",
"chargeToken": "2db4fbf7e00b9931337f6e912c304f9de5c31a60",
"amount": {
"value": 1000,
"currency": "IDR"
},
"urlParam": [
{
"url": "http://test.com",
"type": "PAY_RETURN",
"isDeepLink": "Y"
}
],
"merchantId": "6067",
"additionalInfo": {
"basket": [
{
"name": "cimol",
"price": 1000,
"qty": 2,
"total": 2000
}
],
"promoCode": "promo123"
}
}OK
{
"responseCode": 2005400,
"responseMessage": "Request has been processed successfully",
"referenceNo": "c8c73c4635794cdcae7d9fe325251088",
"partnerReferenceNo": "c8c73c4635794cdcae7d9fe325251088",
"webRedirectUrl": "https://sandbox.doku.com/snap-adapter-webview/direct-debit?token=eyJhbGciOiJIUzU xMiJ9.eyJyZWRpc19rZXlfaWQiOiJzbmFwLWFkYXB0ZXI6OmRpcmVjdC1kZWJpdDo6MTQ1NTM0MDAwNC1 jOGM3M2M0NjM1Nzk0Y2RjYWU3ZDlmZTMyNTI1MTA4OCIsImNyZWF0ZWQiOjE2NjkwODc0OTI1MTgsImV4 cCI6MTY2OTE3Mzg5Mn0.wIL92PT2km7rQ0oHWytEVknE0X6URdIJz4f7s-TQ9E3uH4txLGo2a-GMYdh-w acTcXjl252XS87_634ajnM_dg",
"additionalInfo": {
"dokuId": 1455340004
}
}b. Query Purchase

Endpoint to checks tatus transaction.
To check the status of a Capture Payment transaction, use the partnerCaptureNo returned in the Capture Payment API response as the originalPartnerReferenceNo in the Check Status API request.
Unique service API 55 - Check Status Purchase web 63 - Check Status Authorize Payment 65 - Check Status Capture Payment 67 - Check Status Void Auth Payment
67Possible values: Payment authorized successfully.
Unique service API
67Unique service API
0510000.00CanceledBad request.
Internal server error.
POST /dw/b2b/v1.0/debit/status HTTP/1.1
Content-Type: application/json
Accept: */*
Content-Length: 93
{
"originalReferenceNo": {},
"originalPartnerReferenceNo": {},
"merchantId": {},
"serviceCode": "67"
}{
"responseCode": {},
"responseMessage": {},
"originalReferenceNo": {},
"originalPartnerReferenceNo": {},
"serviceCode": "67",
"latestTransactionStatus": "05",
"transAmount": "10000.00",
"transactionStatusDesc": "Canceled",
"paidTime": {}
}c. Cancel Purchase
Partners can cancel the transaction or reverse immediately after successful transaction processing in the DOKU system, it can be used in case of time-out or other problems that occur on the merchant side.

Client's current local time in yyyyMMddTHH:mm:ss.SSST ZD format
2026-01-26T14:33:11+07:00Credential client ID from DOKU
BRN-0256-1676878043376Reference number that should be unique in the same day
BRN-0256-1676878043376_1769412783294SHA-512 HMAC is used to generate the signature with your Client Secret. Generate stringToSign : HTTPMethod + ”:“+ EndpointUrl +":"+ B2BAccessToken + ":“+ Lowercase(HexEncode(SHA-256(minify(RequestBody)))) + ":“ + X-TimeStamp
bySGzXdWfHaFF6L5VD/m/uMnAvZYnO6ry7lv5q4v0RB9sZ+yHqC1JPu8B2HLd7J4hVQhXvVaNqJmKt11KlpNpmq9qgtu2bqHt9qFIa5+0lZJjEYKFOFgjxVWSffF1EcTooeV3BUva1EedEsbjYgbaM3e8QszvNmKGkEEzv3qjkM=Represents access_token of a request, string starts with keyword “Bearer ” followed by Token B2B
eyJhbGciOiJSUzI1NiJ9.eyJleHAiOjE3Njk0MTM2MzQsImlzcyI6IkRPS1UiLCJjbGllbnRJZCI6IkJSTi0wMjU2LTE2NzY4NzgwNDMzNzYifQ.XPS6T9IKRh5JSI0hGcgkoEJEu1rG68sKf-3BVJNNWxipGPaI7HdGGHOUM3Fi_ivXCTgpgyHEqMC3Ht7kcrvvIwkMHCzxylAbcSKBzZhUm7N-uYdIzfcbTsXbpFk-OMhWF8YROYtlfmfz_PfPmpUYrnrU5vp2phBkrbZBNGVCw9fZBViF6ACuiHDFdcyLjSbM7fSdB0lt6_Tbjum9KeJKTUQNmCXmBX4nI_goFdPR_Y4AewPMDTI7bZUvClBFNrPHzjjaKj-0IxDjFxKeFapZH4BVv6rCbDAlIfQSzIUhTHMJZIE52qcvNMfRy4WGVtaOoaXKgJf3Hvsb3ZP5-cblmQRepresents access_token of a request belong customer; string starts with keyword “Bearer ” followed by Token B2B2C
eyJhbGciOiJSUzI1NiJ9.eyJleHAiOjE3NTEwOTMxMTYsImlzcyI6IkRPS1UiLCJjbGllbnRJZCI6IkJSTi0wMjU2LTE2NzY4NzgwNDMzNzYiLCJhY2NvdW50SWQiOiIxMTMwOTYyNjQyIn0.obDKu1k0ioPnAy89PzdhOx9w5ZqqTN_0I26A_N5MgXbxub8szGpwpsaZD5lNme9CMydJT8pBr4cuYb1uU-FUbAVg2I9OsEmioHLHHUhbAhfykOREOm9PXkU4A3e3_7jjt77XuJGTat-0ZG1tGn21GNbaCUa4TswE61PcUu-XM7rPoOSZkwxR_YPg7vWrR9cSNIJV3iECWGWD-t_cGgbi0Jt3Yj-eCA9JIjQGa9o8fPwvW1xmWLcLw6MhUdppYLphd5ulhLTCLeI4wpr8RXP9Kq0K0trcEBrVDFELD9PykcPuG8A_yW8lgjoTcJaep85CHlS07w-9TakwEND0Wu4Y8wOriginal Transaction ID from partners
5b4c663897ff488b9db50f789f0c9079Reason cancelation
Customer request cancelationOK
2005700Request has been processed successfullyinv_pm_20221019143243557inv_pm_202210191432435572022-10-18T11:15:07.376Z2022-10-18T11:11:00.000ZPOST /snap-adapter/b2b2c/v1.0/debit/cancel HTTP/1.1
X-TIMESTAMP: text
X-PARTNER-ID: text
X-EXTERNAL-ID: text
X-SIGNATURE: text
Authorization: text
Authorization-Customer: text
Content-Type: application/json
Accept: */*
Content-Length: 146
{
"originalPartnerReferenceNo": "5b4c663897ff488b9db50f789f0c9079",
"reason": "Customer request cancelation",
"additionalInfo": {
"approvalCode": 320139
}
}OK
{
"responseCode": 2005700,
"responseMessage": "Request has been processed successfully",
"originalReferenceNo": "inv_pm_20221019143243557",
"originalPartnerReferenceNo": "inv_pm_20221019143243557",
"cancelTime": "2022-10-18T11:15:07.376Z",
"transactionDate": "2022-10-18T11:11:00.000Z"
}d. Refund Purchase
Partners can request a refund when the transaction has already settled.

Client's current local time in yyyyMMddTHH:mm:ss.SSST ZD format
2026-01-26T14:33:11+07:00Credential client ID from DOKU
BRN-0256-1676878043376Reference number that should be unique in the same day
BRN-0256-1676878043376_1769412783294SHA-512 HMAC is used to generate the signature with your Client Secret. Generate stringToSign : HTTPMethod + ”:“+ EndpointUrl +":"+ B2BAccessToken + ":“+ Lowercase(HexEncode(SHA-256(minify(RequestBody)))) + ":“ + X-TimeStamp
bySGzXdWfHaFF6L5VD/m/uMnAvZYnO6ry7lv5q4v0RB9sZ+yHqC1JPu8B2HLd7J4hVQhXvVaNqJmKt11KlpNpmq9qgtu2bqHt9qFIa5+0lZJjEYKFOFgjxVWSffF1EcTooeV3BUva1EedEsbjYgbaM3e8QszvNmKGkEEzv3qjkM=Represents access_token of a request, string starts with keyword “Bearer ” followed by Token B2B
eyJhbGciOiJSUzI1NiJ9.eyJleHAiOjE3Njk0MTM2MzQsImlzcyI6IkRPS1UiLCJjbGllbnRJZCI6IkJSTi0wMjU2LTE2NzY4NzgwNDMzNzYifQ.XPS6T9IKRh5JSI0hGcgkoEJEu1rG68sKf-3BVJNNWxipGPaI7HdGGHOUM3Fi_ivXCTgpgyHEqMC3Ht7kcrvvIwkMHCzxylAbcSKBzZhUm7N-uYdIzfcbTsXbpFk-OMhWF8YROYtlfmfz_PfPmpUYrnrU5vp2phBkrbZBNGVCw9fZBViF6ACuiHDFdcyLjSbM7fSdB0lt6_Tbjum9KeJKTUQNmCXmBX4nI_goFdPR_Y4AewPMDTI7bZUvClBFNrPHzjjaKj-0IxDjFxKeFapZH4BVv6rCbDAlIfQSzIUhTHMJZIE52qcvNMfRy4WGVtaOoaXKgJf3Hvsb3ZP5-cblmQRepresents access_token of a request belong customer; string starts with keyword “Bearer ” followed by Token B2B2C
eyJhbGciOiJSUzI1NiJ9.eyJleHAiOjE3NTEwOTMxMTYsImlzcyI6IkRPS1UiLCJjbGllbnRJZCI6IkJSTi0wMjU2LTE2NzY4NzgwNDMzNzYiLCJhY2NvdW50SWQiOiIxMTMwOTYyNjQyIn0.obDKu1k0ioPnAy89PzdhOx9w5ZqqTN_0I26A_N5MgXbxub8szGpwpsaZD5lNme9CMydJT8pBr4cuYb1uU-FUbAVg2I9OsEmioHLHHUhbAhfykOREOm9PXkU4A3e3_7jjt77XuJGTat-0ZG1tGn21GNbaCUa4TswE61PcUu-XM7rPoOSZkwxR_YPg7vWrR9cSNIJV3iECWGWD-t_cGgbi0Jt3Yj-eCA9JIjQGa9o8fPwvW1xmWLcLw6MhUdppYLphd5ulhLTCLeI4wpr8RXP9Kq0K0trcEBrVDFELD9PykcPuG8A_yW8lgjoTcJaep85CHlS07w-9TakwEND0Wu4Y8wOriginal Transaction ID from partners
5b4c663897ff488b9db50f789f0c9079Reason for refund
Customer request refundTransaction ID on service consumer system, when for refund payment.
123456OK
2005800Request has been processed successfully4f00d3a6819b439580731b7b77dbbf054f00d3a6819b439580731b7b77dbbf051234561234562022-11-11T10:02:46+07:00"POST /snap-adapter/b2b2c/v1.0/debit/refund HTTP/1.1
X-TIMESTAMP: text
X-PARTNER-ID: text
X-EXTERNAL-ID: text
X-SIGNATURE: text
Authorization: text
Authorization-Customer: text
Content-Type: application/json
Accept: */*
Content-Length: 166
{
"originalPartnerReferenceNo": "5b4c663897ff488b9db50f789f0c9079",
"reason": "Customer request refund",
"partnerRefundNo": 123456,
"additionalInfo": {
"approvalCode": 320139
}
}OK
{
"responseCode": 2005800,
"responseMessage": "Request has been processed successfully",
"originalReferenceNo": "4f00d3a6819b439580731b7b77dbbf05",
"originalPartnerReferenceNo": "4f00d3a6819b439580731b7b77dbbf05",
"refundNo": 123456,
"partnerRefundNo": 123456,
"refundTime": "2022-11-11T10:02:46+07:00\""
}7. Transaction History
a. Transaction History List
This API allows partners to get history from an account with 1 month range time and the oldest transaction is 1 year behind.

Client's current local time in yyyyMMddTHH:mm:ss.SSST ZD format
2026-01-26T14:33:11+07:00Credential client ID from DOKU
BRN-0256-1676878043376Reference number that should be unique in the same day
BRN-0256-1676878043376_1769412783294SHA-512 HMAC is used to generate the signature with your Client Secret. Generate stringToSign : HTTPMethod + ”:“+ EndpointUrl +":"+ B2BAccessToken + ":“+ Lowercase(HexEncode(SHA-256(minify(RequestBody)))) + ":“ + X-TimeStamp
bySGzXdWfHaFF6L5VD/m/uMnAvZYnO6ry7lv5q4v0RB9sZ+yHqC1JPu8B2HLd7J4hVQhXvVaNqJmKt11KlpNpmq9qgtu2bqHt9qFIa5+0lZJjEYKFOFgjxVWSffF1EcTooeV3BUva1EedEsbjYgbaM3e8QszvNmKGkEEzv3qjkM=Represents access_token of a request, string starts with keyword “Bearer ” followed by Token B2B
eyJhbGciOiJSUzI1NiJ9.eyJleHAiOjE3Njk0MTM2MzQsImlzcyI6IkRPS1UiLCJjbGllbnRJZCI6IkJSTi0wMjU2LTE2NzY4NzgwNDMzNzYifQ.XPS6T9IKRh5JSI0hGcgkoEJEu1rG68sKf-3BVJNNWxipGPaI7HdGGHOUM3Fi_ivXCTgpgyHEqMC3Ht7kcrvvIwkMHCzxylAbcSKBzZhUm7N-uYdIzfcbTsXbpFk-OMhWF8YROYtlfmfz_PfPmpUYrnrU5vp2phBkrbZBNGVCw9fZBViF6ACuiHDFdcyLjSbM7fSdB0lt6_Tbjum9KeJKTUQNmCXmBX4nI_goFdPR_Y4AewPMDTI7bZUvClBFNrPHzjjaKj-0IxDjFxKeFapZH4BVv6rCbDAlIfQSzIUhTHMJZIE52qcvNMfRy4WGVtaOoaXKgJf3Hvsb3ZP5-cblmQRepresents access_token of a request belong customer; string starts with keyword “Bearer ” followed by Token B2B2C
eyJhbGciOiJSUzI1NiJ9.eyJleHAiOjE3NTEwOTMxMTYsImlzcyI6IkRPS1UiLCJjbGllbnRJZCI6IkJSTi0wMjU2LTE2NzY4NzgwNDMzNzYiLCJhY2NvdW50SWQiOiIxMTMwOTYyNjQyIn0.obDKu1k0ioPnAy89PzdhOx9w5ZqqTN_0I26A_N5MgXbxub8szGpwpsaZD5lNme9CMydJT8pBr4cuYb1uU-FUbAVg2I9OsEmioHLHHUhbAhfykOREOm9PXkU4A3e3_7jjt77XuJGTat-0ZG1tGn21GNbaCUa4TswE61PcUu-XM7rPoOSZkwxR_YPg7vWrR9cSNIJV3iECWGWD-t_cGgbi0Jt3Yj-eCA9JIjQGa9o8fPwvW1xmWLcLw6MhUdppYLphd5ulhLTCLeI4wpr8RXP9Kq0K0trcEBrVDFELD9PykcPuG8A_yW8lgjoTcJaep85CHlS07w-9TakwEND0Wu4Y8wActivity ID from partners
5b4c663897ff488b9db50f789f0c9079Starting time range ISO-8601
2022-10-31T17:00:00.000ZEnding time range ISO-8601
2022-11-30T16:59:59.000ZMaximum number of transaction returned in one pagination Default 10
10Current page number Default 0
OK
2001200Request has been processed successfullyPOST /snap-adapter/b2b2c/v1.0/transaction-history-list HTTP/1.1
X-TIMESTAMP: text
X-PARTNER-ID: text
X-EXTERNAL-ID: text
X-SIGNATURE: text
Authorization: text
Authorization-Customer: text
Content-Type: application/json
Accept: */*
Content-Length: 229
{
"partnerReferenceNo": "5b4c663897ff488b9db50f789f0c9079",
"fromDateTime": "2022-10-31T17:00:00.000Z",
"toDateTime": "2022-11-30T16:59:59.000Z",
"pageSize": 10,
"pageNumber": 0,
"additionalInfo": {
"accountId": 1020340010,
"lastRefId": 123456
}
}OK
{
"responseCode": 2001200,
"responseMessage": "Request has been processed successfully",
"detailData": {
"dateTime": "2022-11-11T03:51:42.000Z",
"amount": {
"value": 1700.77,
"currency": "IDR"
},
"remark": "Get Refund From payment with invoice null",
"status": "SUCCESS",
"type": "REFUND"
},
"additionalInfo": {
"refId": "Zqxdxfbs_Bcl1lxCWFjbdA",
"transactionId": 678354996
}
}b. Transaction History Detail
This API allows partners to get transaction details from an account.

Client's current local time in yyyyMMddTHH:mm:ss.SSST ZD format
2026-01-26T14:33:11+07:00Credential client ID from DOKU
BRN-0256-1676878043376Reference number that should be unique in the same day
BRN-0256-1676878043376_1769412783294SHA-512 HMAC is used to generate the signature with your Client Secret. Generate stringToSign : HTTPMethod + ”:“+ EndpointUrl +":"+ B2BAccessToken + ":“+ Lowercase(HexEncode(SHA-256(minify(RequestBody)))) + ":“ + X-TimeStamp
bySGzXdWfHaFF6L5VD/m/uMnAvZYnO6ry7lv5q4v0RB9sZ+yHqC1JPu8B2HLd7J4hVQhXvVaNqJmKt11KlpNpmq9qgtu2bqHt9qFIa5+0lZJjEYKFOFgjxVWSffF1EcTooeV3BUva1EedEsbjYgbaM3e8QszvNmKGkEEzv3qjkM=Represents access_token of a request, string starts with keyword “Bearer ” followed by Token B2B
eyJhbGciOiJSUzI1NiJ9.eyJleHAiOjE3Njk0MTM2MzQsImlzcyI6IkRPS1UiLCJjbGllbnRJZCI6IkJSTi0wMjU2LTE2NzY4NzgwNDMzNzYifQ.XPS6T9IKRh5JSI0hGcgkoEJEu1rG68sKf-3BVJNNWxipGPaI7HdGGHOUM3Fi_ivXCTgpgyHEqMC3Ht7kcrvvIwkMHCzxylAbcSKBzZhUm7N-uYdIzfcbTsXbpFk-OMhWF8YROYtlfmfz_PfPmpUYrnrU5vp2phBkrbZBNGVCw9fZBViF6ACuiHDFdcyLjSbM7fSdB0lt6_Tbjum9KeJKTUQNmCXmBX4nI_goFdPR_Y4AewPMDTI7bZUvClBFNrPHzjjaKj-0IxDjFxKeFapZH4BVv6rCbDAlIfQSzIUhTHMJZIE52qcvNMfRy4WGVtaOoaXKgJf3Hvsb3ZP5-cblmQRepresents access_token of a request belong customer; string starts with keyword “Bearer ” followed by Token B2B2C
eyJhbGciOiJSUzI1NiJ9.eyJleHAiOjE3NTEwOTMxMTYsImlzcyI6IkRPS1UiLCJjbGllbnRJZCI6IkJSTi0wMjU2LTE2NzY4NzgwNDMzNzYiLCJhY2NvdW50SWQiOiIxMTMwOTYyNjQyIn0.obDKu1k0ioPnAy89PzdhOx9w5ZqqTN_0I26A_N5MgXbxub8szGpwpsaZD5lNme9CMydJT8pBr4cuYb1uU-FUbAVg2I9OsEmioHLHHUhbAhfykOREOm9PXkU4A3e3_7jjt77XuJGTat-0ZG1tGn21GNbaCUa4TswE61PcUu-XM7rPoOSZkwxR_YPg7vWrR9cSNIJV3iECWGWD-t_cGgbi0Jt3Yj-eCA9JIjQGa9o8fPwvW1xmWLcLw6MhUdppYLphd5ulhLTCLeI4wpr8RXP9Kq0K0trcEBrVDFELD9PykcPuG8A_yW8lgjoTcJaep85CHlS07w-9TakwEND0Wu4Y8wTransaction ID from partners
f1a69bce-41bc-4abd-8c5c-01910574e404OK
2001300Request has been processed successfullyRendH9Bpwly4CDRxzeAXIwe73771a15652c5aace3f05d0feaa8cb82b40e5cd2022-11-23T11:39:41.000ZTransfer Cash Wallet To Bank AccountSUCCESSSEND_MONEYPOST /snap-adapter/b2b2c/v1.0/transaction-history-detail HTTP/1.1
X-TIMESTAMP: text
X-PARTNER-ID: text
X-EXTERNAL-ID: text
X-SIGNATURE: text
Authorization: text
Authorization-Customer: text
Content-Type: application/json
Accept: */*
Content-Length: 61
{
"partnerReferenceNo": "f1a69bce-41bc-4abd-8c5c-01910574e404"
}OK
{
"responseCode": 2001300,
"responseMessage": "Request has been processed successfully",
"referenceNo": "RendH9Bpwly4CDRxzeAXIw",
"partnerReferenceNo": "e73771a15652c5aace3f05d0feaa8cb82b40e5cd",
"amount": {
"value": 10000,
"currency": "IDR"
},
"dateTime": "2022-11-23T11:39:41.000Z",
"remark": "Transfer Cash Wallet To Bank Account",
"status": "SUCCESS",
"type": "SEND_MONEY"
}8. Transfer
a. Transfer Bank Account Inquiry
This API allows partners to get BANK beneficiary information, so customers can see and confirm the transfer activity

Client's current local time in yyyyMMddTHH:mm:ss.SSST ZD format
2026-01-26T14:33:11+07:00Credential client ID from DOKU
BRN-0256-1676878043376Reference number that should be unique in the same day
BRN-0256-1676878043376_1769412783294SHA-512 HMAC is used to generate the signature with your Client Secret. Generate stringToSign : HTTPMethod + ”:“+ EndpointUrl +":"+ B2BAccessToken + ":“+ Lowercase(HexEncode(SHA-256(minify(RequestBody)))) + ":“ + X-TimeStamp
bySGzXdWfHaFF6L5VD/m/uMnAvZYnO6ry7lv5q4v0RB9sZ+yHqC1JPu8B2HLd7J4hVQhXvVaNqJmKt11KlpNpmq9qgtu2bqHt9qFIa5+0lZJjEYKFOFgjxVWSffF1EcTooeV3BUva1EedEsbjYgbaM3e8QszvNmKGkEEzv3qjkM=Represents access_token of a request, string starts with keyword “Bearer ” followed by Token B2B
eyJhbGciOiJSUzI1NiJ9.eyJleHAiOjE3Njk0MTM2MzQsImlzcyI6IkRPS1UiLCJjbGllbnRJZCI6IkJSTi0wMjU2LTE2NzY4NzgwNDMzNzYifQ.XPS6T9IKRh5JSI0hGcgkoEJEu1rG68sKf-3BVJNNWxipGPaI7HdGGHOUM3Fi_ivXCTgpgyHEqMC3Ht7kcrvvIwkMHCzxylAbcSKBzZhUm7N-uYdIzfcbTsXbpFk-OMhWF8YROYtlfmfz_PfPmpUYrnrU5vp2phBkrbZBNGVCw9fZBViF6ACuiHDFdcyLjSbM7fSdB0lt6_Tbjum9KeJKTUQNmCXmBX4nI_goFdPR_Y4AewPMDTI7bZUvClBFNrPHzjjaKj-0IxDjFxKeFapZH4BVv6rCbDAlIfQSzIUhTHMJZIE52qcvNMfRy4WGVtaOoaXKgJf3Hvsb3ZP5-cblmQpartnerReferenceNo
f1a69bce-41bc-4abd-8c5c-01910574e404customerNumber
1020340010beneficiaryAccountNumber
18520102416246OK
2001200Request has been processed successfullyf1a69bce-41bc-4abd-8c5c-01910574e404f1a69bce-41bc-4abd-8c5c-01910574e40418520102416246John DoePOST /snap-adapter/b2b/v1.0/emoney/bank-account-inquiry HTTP/1.1
X-TIMESTAMP: text
X-PARTNER-ID: text
X-EXTERNAL-ID: text
X-SIGNATURE: text
Authorization: text
Content-Type: application/json
Accept: */*
Content-Length: 204
{
"partnerReferenceNo": "f1a69bce-41bc-4abd-8c5c-01910574e404",
"customerNumber": 1020340010,
"amount": {
"value": 1000,
"currency": "IDR"
},
"beneficiaryAccountNumber": 18520102416246,
"additionalInfo": {
"bankCode": 2
}
}OK
{
"responseCode": 2001200,
"responseMessage": "Request has been processed successfully",
"referenceNo": "f1a69bce-41bc-4abd-8c5c-01910574e404",
"partnerReferenceNo": "f1a69bce-41bc-4abd-8c5c-01910574e404",
"beneficiaryAccountNumber": 18520102416246,
"beneficiaryAccountName": "John Doe",
"beneficiaryBankCode": "text",
"amount": {
"value": 1000,
"currency": "IDR"
}
}b. Transfer Bank Account Payment
This API allows partners to trigger transfer balance from account balance to BANK Account

Client's current local time in yyyyMMddTHH:mm:ss.SSST ZD format
2026-01-26T14:33:11+07:00Credential client ID from DOKU
BRN-0256-1676878043376Reference number that should be unique in the same day
BRN-0256-1676878043376_1769412783294SHA-512 HMAC is used to generate the signature with your Client Secret. Generate stringToSign : HTTPMethod + ”:“+ EndpointUrl +":"+ B2BAccessToken + ":“+ Lowercase(HexEncode(SHA-256(minify(RequestBody)))) + ":“ + X-TimeStamp
bySGzXdWfHaFF6L5VD/m/uMnAvZYnO6ry7lv5q4v0RB9sZ+yHqC1JPu8B2HLd7J4hVQhXvVaNqJmKt11KlpNpmq9qgtu2bqHt9qFIa5+0lZJjEYKFOFgjxVWSffF1EcTooeV3BUva1EedEsbjYgbaM3e8QszvNmKGkEEzv3qjkM=Represents access_token of a request, string starts with keyword “Bearer ” followed by Token B2B
eyJhbGciOiJSUzI1NiJ9.eyJleHAiOjE3Njk0MTM2MzQsImlzcyI6IkRPS1UiLCJjbGllbnRJZCI6IkJSTi0wMjU2LTE2NzY4NzgwNDMzNzYifQ.XPS6T9IKRh5JSI0hGcgkoEJEu1rG68sKf-3BVJNNWxipGPaI7HdGGHOUM3Fi_ivXCTgpgyHEqMC3Ht7kcrvvIwkMHCzxylAbcSKBzZhUm7N-uYdIzfcbTsXbpFk-OMhWF8YROYtlfmfz_PfPmpUYrnrU5vp2phBkrbZBNGVCw9fZBViF6ACuiHDFdcyLjSbM7fSdB0lt6_Tbjum9KeJKTUQNmCXmBX4nI_goFdPR_Y4AewPMDTI7bZUvClBFNrPHzjjaKj-0IxDjFxKeFapZH4BVv6rCbDAlIfQSzIUhTHMJZIE52qcvNMfRy4WGVtaOoaXKgJf3Hvsb3ZP5-cblmQRepresents access_token of a request belong customer; string starts with keyword “Bearer ” followed by Token B2B2C
eyJhbGciOiJSUzI1NiJ9.eyJleHAiOjE3NTEwOTMxMTYsImlzcyI6IkRPS1UiLCJjbGllbnRJZCI6IkJSTi0wMjU2LTE2NzY4NzgwNDMzNzYiLCJhY2NvdW50SWQiOiIxMTMwOTYyNjQyIn0.obDKu1k0ioPnAy89PzdhOx9w5ZqqTN_0I26A_N5MgXbxub8szGpwpsaZD5lNme9CMydJT8pBr4cuYb1uU-FUbAVg2I9OsEmioHLHHUhbAhfykOREOm9PXkU4A3e3_7jjt77XuJGTat-0ZG1tGn21GNbaCUa4TswE61PcUu-XM7rPoOSZkwxR_YPg7vWrR9cSNIJV3iECWGWD-t_cGgbi0Jt3Yj-eCA9JIjQGa9o8fPwvW1xmWLcLw6MhUdppYLphd5ulhLTCLeI4wpr8RXP9Kq0K0trcEBrVDFELD9PykcPuG8A_yW8lgjoTcJaep85CHlS07w-9TakwEND0Wu4Y8wTransaction ID from partners
f1a69bce-41bc-4abd-8c5c-01910574e404Customer number
1020340010Account type
tabunganBeneficiary account number
18520102416246Beneficiary bank code
2OK
2001300Request has been processed successfullyf1a69bce-41bc-4abd-8c5c-01910574e404f1a69bce-41bc-4abd-8c5c-01910574e4042022-11-11T17:37:37.473Z319874POST /snap-adapter/b2b2c/v1.0/emoney/transfer-bank HTTP/1.1
X-TIMESTAMP: text
X-PARTNER-ID: text
X-EXTERNAL-ID: text
X-SIGNATURE: text
Authorization: text
Authorization-Customer: text
Content-Type: application/json
Accept: */*
Content-Length: 293
{
"partnerReferenceNo": "f1a69bce-41bc-4abd-8c5c-01910574e404",
"customerNumber": 1020340010,
"accountType": "tabungan",
"beneficiaryAccountNumber": 18520102416246,
"beneficiaryBankCode": 2,
"amount": {
"value": 1000,
"currency": "IDR"
},
"additionalInfo": {
"referenceNo": "f1a69bce-41bc-4abd-8c5c-01910574e404"
}
}OK
{
"responseCode": 2001300,
"responseMessage": "Request has been processed successfully",
"referenceNo": "f1a69bce-41bc-4abd-8c5c-01910574e404",
"partnerReferenceNo": "f1a69bce-41bc-4abd-8c5c-01910574e404",
"transactionDate": "2022-11-11T17:37:37.473Z",
"referenceNumber": 319874
}9. Top Up
Use this API for a cashback feature where the wallet balance is sent directly from the partner's wallet account to the customer's wallet account.
The amount of cashback would be conditioned by the business policy of each partner. Initially, the partner needs to deposit the amount to the partner's DOKUID Corporate before being able to credit/ topup to the customer’s wallet account.
a. Account Inquiry Top Up
This API allows partners to get DOKU account information, so customers can see and confirm the transfer activity.

Client's current local time in yyyyMMddTHH:mm:ss.SSST ZD format
2026-01-26T14:33:11+07:00Credential client ID from DOKU
BRN-0256-1676878043376Reference number that should be unique in the same day
BRN-0256-1676878043376_1769412783294SHA-512 HMAC is used to generate the signature with your Client Secret. Generate stringToSign : HTTPMethod + ”:“+ EndpointUrl +":"+ B2BAccessToken + ":“+ Lowercase(HexEncode(SHA-256(minify(RequestBody)))) + ":“ + X-TimeStamp
bySGzXdWfHaFF6L5VD/m/uMnAvZYnO6ry7lv5q4v0RB9sZ+yHqC1JPu8B2HLd7J4hVQhXvVaNqJmKt11KlpNpmq9qgtu2bqHt9qFIa5+0lZJjEYKFOFgjxVWSffF1EcTooeV3BUva1EedEsbjYgbaM3e8QszvNmKGkEEzv3qjkM=Represents access_token of a request, string starts with keyword “Bearer ” followed by Token B2B
eyJhbGciOiJSUzI1NiJ9.eyJleHAiOjE3Njk0MTM2MzQsImlzcyI6IkRPS1UiLCJjbGllbnRJZCI6IkJSTi0wMjU2LTE2NzY4NzgwNDMzNzYifQ.XPS6T9IKRh5JSI0hGcgkoEJEu1rG68sKf-3BVJNNWxipGPaI7HdGGHOUM3Fi_ivXCTgpgyHEqMC3Ht7kcrvvIwkMHCzxylAbcSKBzZhUm7N-uYdIzfcbTsXbpFk-OMhWF8YROYtlfmfz_PfPmpUYrnrU5vp2phBkrbZBNGVCw9fZBViF6ACuiHDFdcyLjSbM7fSdB0lt6_Tbjum9KeJKTUQNmCXmBX4nI_goFdPR_Y4AewPMDTI7bZUvClBFNrPHzjjaKj-0IxDjFxKeFapZH4BVv6rCbDAlIfQSzIUhTHMJZIE52qcvNMfRy4WGVtaOoaXKgJf3Hvsb3ZP5-cblmQRepresents access_token of a request belong customer; string starts with keyword “Bearer ” followed by Token B2B2C
eyJhbGciOiJSUzI1NiJ9.eyJleHAiOjE3NTEwOTMxMTYsImlzcyI6IkRPS1UiLCJjbGllbnRJZCI6IkJSTi0wMjU2LTE2NzY4NzgwNDMzNzYiLCJhY2NvdW50SWQiOiIxMTMwOTYyNjQyIn0.obDKu1k0ioPnAy89PzdhOx9w5ZqqTN_0I26A_N5MgXbxub8szGpwpsaZD5lNme9CMydJT8pBr4cuYb1uU-FUbAVg2I9OsEmioHLHHUhbAhfykOREOm9PXkU4A3e3_7jjt77XuJGTat-0ZG1tGn21GNbaCUa4TswE61PcUu-XM7rPoOSZkwxR_YPg7vWrR9cSNIJV3iECWGWD-t_cGgbi0Jt3Yj-eCA9JIjQGa9o8fPwvW1xmWLcLw6MhUdppYLphd5ulhLTCLeI4wpr8RXP9Kq0K0trcEBrVDFELD9PykcPuG8A_yW8lgjoTcJaep85CHlS07w-9TakwEND0Wu4Y8wpartnerReferenceNo
f1a69bce-41bc-4abd-8c5c-01910574e404transactionDate
2022-11-11T17:37:37.473ZOK
2001400Request has been processed successfullyf1a69bce-41bc-4abd-8c5c-01910574e404f1a69bce-41bc-4abd-8c5c-01910574e4041020340010John Doe5000000POST /snap-adapter/b2b2c/v1.0/emoney/account-inquiry HTTP/1.1
X-TIMESTAMP: text
X-PARTNER-ID: text
X-EXTERNAL-ID: text
X-SIGNATURE: text
Authorization: text
Authorization-Customer: text
Content-Type: application/json
Accept: */*
Content-Length: 147
{
"partnerReferenceNo": "f1a69bce-41bc-4abd-8c5c-01910574e404",
"amount": {
"value": 1000,
"currency": "IDR"
},
"transactionDate": "2022-11-11T17:37:37.473Z"
}OK
{
"responseCode": 2001400,
"responseMessage": "Request has been processed successfully",
"referenceNo": "f1a69bce-41bc-4abd-8c5c-01910574e404",
"partnerReferenceNo": "f1a69bce-41bc-4abd-8c5c-01910574e404",
"customerNumber": 1020340010,
"customerName": "John Doe",
"customerMonthlyInLimit": 5000000,
"maxAmount": {
"value": 1000,
"currency": "IDR"
}
}b. Account Top Up
This API allows partners to trigger transfer balance from their corporate account balance to DOKU Customer Account.
Client's current local time in yyyyMMddTHH:mm:ss.SSST ZD format
2026-01-26T14:33:11+07:00Credential client ID from DOKU
BRN-0256-1676878043376Reference number that should be unique in the same day
BRN-0256-1676878043376_1769412783294SHA-512 HMAC is used to generate the signature with your Client Secret. Generate stringToSign : HTTPMethod + ”:“+ EndpointUrl +":"+ B2BAccessToken + ":“+ Lowercase(HexEncode(SHA-256(minify(RequestBody)))) + ":“ + X-TimeStamp
bySGzXdWfHaFF6L5VD/m/uMnAvZYnO6ry7lv5q4v0RB9sZ+yHqC1JPu8B2HLd7J4hVQhXvVaNqJmKt11KlpNpmq9qgtu2bqHt9qFIa5+0lZJjEYKFOFgjxVWSffF1EcTooeV3BUva1EedEsbjYgbaM3e8QszvNmKGkEEzv3qjkM=Represents access_token of a request, string starts with keyword “Bearer ” followed by Token B2B
eyJhbGciOiJSUzI1NiJ9.eyJleHAiOjE3Njk0MTM2MzQsImlzcyI6IkRPS1UiLCJjbGllbnRJZCI6IkJSTi0wMjU2LTE2NzY4NzgwNDMzNzYifQ.XPS6T9IKRh5JSI0hGcgkoEJEu1rG68sKf-3BVJNNWxipGPaI7HdGGHOUM3Fi_ivXCTgpgyHEqMC3Ht7kcrvvIwkMHCzxylAbcSKBzZhUm7N-uYdIzfcbTsXbpFk-OMhWF8YROYtlfmfz_PfPmpUYrnrU5vp2phBkrbZBNGVCw9fZBViF6ACuiHDFdcyLjSbM7fSdB0lt6_Tbjum9KeJKTUQNmCXmBX4nI_goFdPR_Y4AewPMDTI7bZUvClBFNrPHzjjaKj-0IxDjFxKeFapZH4BVv6rCbDAlIfQSzIUhTHMJZIE52qcvNMfRy4WGVtaOoaXKgJf3Hvsb3ZP5-cblmQRepresents access_token of a request belong customer; string starts with keyword “Bearer ” followed by Token B2B2C
eyJhbGciOiJSUzI1NiJ9.eyJleHAiOjE3NTEwOTMxMTYsImlzcyI6IkRPS1UiLCJjbGllbnRJZCI6IkJSTi0wMjU2LTE2NzY4NzgwNDMzNzYiLCJhY2NvdW50SWQiOiIxMTMwOTYyNjQyIn0.obDKu1k0ioPnAy89PzdhOx9w5ZqqTN_0I26A_N5MgXbxub8szGpwpsaZD5lNme9CMydJT8pBr4cuYb1uU-FUbAVg2I9OsEmioHLHHUhbAhfykOREOm9PXkU4A3e3_7jjt77XuJGTat-0ZG1tGn21GNbaCUa4TswE61PcUu-XM7rPoOSZkwxR_YPg7vWrR9cSNIJV3iECWGWD-t_cGgbi0Jt3Yj-eCA9JIjQGa9o8fPwvW1xmWLcLw6MhUdppYLphd5ulhLTCLeI4wpr8RXP9Kq0K0trcEBrVDFELD9PykcPuG8A_yW8lgjoTcJaep85CHlS07w-9TakwEND0Wu4Y8wTransaction ID from partners
f1a69bce-41bc-4abd-8c5c-01910574e404Customer number
1020340010Session ID
192837465Notes for top up transaction
notesOK
2001500Request has been processed successfullyf1a69bce-41bc-4abd-8c5c-01910574e404f1a69bce-41bc-4abd-8c5c-01910574e4041928374651020340010POST /snap-adapter/b2b2c/v1.0/emoney/topup HTTP/1.1
X-TIMESTAMP: text
X-PARTNER-ID: text
X-EXTERNAL-ID: text
X-SIGNATURE: text
Authorization: text
Authorization-Customer: text
Content-Type: application/json
Accept: */*
Content-Length: 227
{
"partnerReferenceNo": "f1a69bce-41bc-4abd-8c5c-01910574e404",
"customerNumber": 1020340010,
"amount": {
"value": 1000,
"currency": "IDR"
},
"sessionId": 192837465,
"notes": "notes",
"additionalInfo": {
"deviceId": null,
"channel": "mobilephone"
}
}OK
{
"responseCode": 2001500,
"responseMessage": "Request has been processed successfully",
"referenceNo": "f1a69bce-41bc-4abd-8c5c-01910574e404",
"partnerReferenceNo": "f1a69bce-41bc-4abd-8c5c-01910574e404",
"sessionId": 192837465,
"customerNumber": 1020340010
}c. Query Top Up
This API allows partners to check status top up.
Client's current local time in yyyyMMddTHH:mm:ss.SSST ZD format
2026-01-26T14:33:11+07:00Credential client ID from DOKU
BRN-0256-1676878043376Reference number that should be unique in the same day
BRN-0256-1676878043376_1769412783294SHA-512 HMAC is used to generate the signature with your Client Secret. Generate stringToSign : HTTPMethod + ”:“+ EndpointUrl +":"+ B2BAccessToken + ":“+ Lowercase(HexEncode(SHA-256(minify(RequestBody)))) + ":“ + X-TimeStamp
bySGzXdWfHaFF6L5VD/m/uMnAvZYnO6ry7lv5q4v0RB9sZ+yHqC1JPu8B2HLd7J4hVQhXvVaNqJmKt11KlpNpmq9qgtu2bqHt9qFIa5+0lZJjEYKFOFgjxVWSffF1EcTooeV3BUva1EedEsbjYgbaM3e8QszvNmKGkEEzv3qjkM=Represents access_token of a request, string starts with keyword “Bearer ” followed by Token B2B
eyJhbGciOiJSUzI1NiJ9.eyJleHAiOjE3Njk0MTM2MzQsImlzcyI6IkRPS1UiLCJjbGllbnRJZCI6IkJSTi0wMjU2LTE2NzY4NzgwNDMzNzYifQ.XPS6T9IKRh5JSI0hGcgkoEJEu1rG68sKf-3BVJNNWxipGPaI7HdGGHOUM3Fi_ivXCTgpgyHEqMC3Ht7kcrvvIwkMHCzxylAbcSKBzZhUm7N-uYdIzfcbTsXbpFk-OMhWF8YROYtlfmfz_PfPmpUYrnrU5vp2phBkrbZBNGVCw9fZBViF6ACuiHDFdcyLjSbM7fSdB0lt6_Tbjum9KeJKTUQNmCXmBX4nI_goFdPR_Y4AewPMDTI7bZUvClBFNrPHzjjaKj-0IxDjFxKeFapZH4BVv6rCbDAlIfQSzIUhTHMJZIE52qcvNMfRy4WGVtaOoaXKgJf3Hvsb3ZP5-cblmQRepresents access_token of a request belong customer; string starts with keyword “Bearer ” followed by Token B2B2C
eyJhbGciOiJSUzI1NiJ9.eyJleHAiOjE3NTEwOTMxMTYsImlzcyI6IkRPS1UiLCJjbGllbnRJZCI6IkJSTi0wMjU2LTE2NzY4NzgwNDMzNzYiLCJhY2NvdW50SWQiOiIxMTMwOTYyNjQyIn0.obDKu1k0ioPnAy89PzdhOx9w5ZqqTN_0I26A_N5MgXbxub8szGpwpsaZD5lNme9CMydJT8pBr4cuYb1uU-FUbAVg2I9OsEmioHLHHUhbAhfykOREOm9PXkU4A3e3_7jjt77XuJGTat-0ZG1tGn21GNbaCUa4TswE61PcUu-XM7rPoOSZkwxR_YPg7vWrR9cSNIJV3iECWGWD-t_cGgbi0Jt3Yj-eCA9JIjQGa9o8fPwvW1xmWLcLw6MhUdppYLphd5ulhLTCLeI4wpr8RXP9Kq0K0trcEBrVDFELD9PykcPuG8A_yW8lgjoTcJaep85CHlS07w-9TakwEND0Wu4Y8woriginalPartnerReferenceNo
977ebb3b8bdf4520b7ec8ead6c16567aoriginalReferenceNo
977ebb3b8bdf4520b7ec8ead6c16567aoriginalExternalId
977ebb3b8bdf4520b7ec8ead6c16567aserviceCode
50OK
2001600Request has been processed successfully977ebb3b8bdf4520b7ec8ead6c16567a977ebb3b8bdf4520b7ec8ead6c16567a977ebb3b8bdf4520b7ec8ead6c16567a50Request has been processed successfullyPOST /snap-adapter/b2b2c/v1.0/emoney/topup-status HTTP/1.1
X-TIMESTAMP: text
X-PARTNER-ID: text
X-EXTERNAL-ID: text
X-SIGNATURE: text
Authorization: text
Authorization-Customer: text
Content-Type: application/json
Accept: */*
Content-Length: 261
{
"originalPartnerReferenceNo": "977ebb3b8bdf4520b7ec8ead6c16567a",
"originalReferenceNo": "977ebb3b8bdf4520b7ec8ead6c16567a",
"originalExternalId": "977ebb3b8bdf4520b7ec8ead6c16567a",
"serviceCode": 50,
"additionalInfo": {
"deviceId": 12345679237,
"channel": "mobilephone"
}
}OK
{
"responseCode": 2001600,
"responseMessage": "Request has been processed successfully",
"originalPartnerReferenceNo": "977ebb3b8bdf4520b7ec8ead6c16567a",
"originalReferenceNo": "977ebb3b8bdf4520b7ec8ead6c16567a",
"originalExternalId": "977ebb3b8bdf4520b7ec8ead6c16567a",
"serviceCode": 50,
"amount": {
"value": 1000,
"currency": "IDR"
},
"latestTransactionStatus": 0,
"transactionStatusDesc": "Request has been processed successfully",
"additionalInfo": {
"deviceId": 12345679237,
"channel": "mobilephone",
"approvalCode": 320139
}
}Appendix
DOKU e-Wallet Customer Type
Max Balance
Rp2.000.000
Rp20.000.000
Max Monthly Transaction Limit
Rp20.000.000/month
Rp40.000.000/month
Purchase
✅
✅
Transfer
❌
✅
Cash Out
❌
✅
Response Code
Response code has 3 parts of information, 3 digits for HTTP Code, 2 digits for Service Code and the last is for Case Code, like the example below.
200 ”ServiceCode” 00
Successful
401 ”ServiceCode” 01
Access Token Invalid ( B2B / B2B2B Token )
401 ”ServiceCode” 00
Unauthorized Signature
400 ”ServiceCode” 02
Invalid Mandatory Field
400 ”ServiceCode” 01
Invalid Field Format
409 ”ServiceCode” 00
Conflict ( Using same External-ID )
404 ”ServiceCode” 11
Account Information Invalid
404 ”ServiceCode” 15
OTP/Verification Code Invalid
403 ”ServiceCode” 18
Inactive Account
403 ”ServiceCode” 05
Account Frozen/Abnormal
403 ”ServiceCode” 02
Exceeds Top Up Amount Limit
403 ”ServiceCode” 14
Insufficient Fund
404 ”ServiceCode” 08
Invalid Merchant
400 ”ServiceCode” 00
Parsing Error
404 ”ServiceCode” 01
Transaction Not Found
404 ”ServiceCode” 04
Transaction Cancelled
04
Verify OTP
06
Account Creation
07
Account Binding
08
Account Inquiry
09
Account Unbinding
11
Balance Inquiry
12
Transaction History List
13
Transaction History Detail
54
Purchase
55
Query Purchase
57
Cancel Purchase
58
Refund Purchase
37
Account Inquiry Top Up
39
Query Top Up
38
Account Top Up
42
Transfer BANK Account Inquiry
43
Transfer Bank Payment
63
Authorize Payment
65
Capture Payment
67
Void Auth Payment
Last updated