SNAP

To get the status of a transaction, you can send a request to DOKU Check Status API. It will response with the transaction status.

HIT CHECK STATUS AFTER 60 SECONDS AFTER PAYMENT COMPLETION!

To get the status for the transaction, please ensure your application is already hit after 60 seconds after payment completion.

Virtual Account

API Request

Endpoint

TypeValue

HTTP Method

POST

API endpoint (Sandbox)

https://api-sandbox.doku.com/orders/v1.0/transfer-va/status

API endpoint (Production)

https://api.doku.com/orders/v1.0/transfer-va/status

Here is the sample of Check Status request header :

X-TIMESTAMP: 2020-12-21T14:56:11+07:00
X-SIGNATURE: ieNOENDdN4MnectGytx5UvmOfASZ2oGWMCJ8gVqkw3tB98ofgY9cbxSeY4IYoYeoKs+0QP4h8BTBhemlfeXp1w==
X-PARTNER-ID: 82150823919040624621823174737537
X-EXTERNAL-ID: 41807553358950093184162180797837
Authorization: bearer gp9HjjEj813Y9JGoqwOeOPWbnt4CUpvIJbU1mMU4a11MNDZ7Sg5u9a"
Content type: application/ json

Request Header Explanation

ParameterData Type MandatoryDescription

X-TIMESTAMP

string

Mandatory

Client's current local time with format : YYYY-MM-DDTHH:mm:ssZD

X-SIGNATURE

string

Mandatory

Represents signature of a request. Identify Signature Type used Value: 1. Symmetric Signature with Get Token (Default) HMAC_SHA512 (clientSecret, stringToSign) dengan formula stringToSign = HTTPMethod +”:“+ EndpointUrl +":"+ AccessToken +":“+ Lowercase(HexEncode(SHA-256(minify(RequestBody))))+ ":“ + TimeStamp Notes : 1. The full URL endpoint includes all parameters in the associated URL 2. For the minify(Request Body) parameter, if there is no Request Body then an empty string is used.

X-PARTNER-ID

string

Mandatory

Client ID for merchant that generated by DOKU

X-EXTERNAL-ID

string

Mandatory

Reference number that should be unique in the same day or to be known as Request ID

Authorization

string

Mandatory

Represents access_token of a request; Keyword starts with “Bearer ” followed by access_token (e.g. Bearer eyJraWQiOi...Jzc29zIiwiY)

Content type

string

Mandatory

The media type of the resource (e.g. application/json)

Request Body

Here is the sample of request body to get status of VA number:

{
   "partnerServiceId":"  088899",
   "customerNo":12345678901234567890,
   "virtualAccountNo":"  08889912345678901234567890",
   "inquiryRequestId":"abcdef-123456-abcdef",
   "paymentRequestId":"abcdef-123456-abcdef",
   "additionalInfo":{
   
   }
}
ParameterTypeMandatoryDescription

partnerServiceId

string (8)

Mandatory

Derivative of X-PARTNER-ID , similar to company code, 8 digit left padding space

customerNo

string (20)

Mandatory

Unique number (up to 20 digits)

virtualAccountNo

string (28)

Mandatory

partnerServiceId (8 digit left padding space) + customerNo (up to 20 digits). partnerServiceId + customerNo or virtualAccountNo

inquiryRequestId

string (128)

Conditional

Unique identifier from Inquiry. If not send, will return array of transaction based on virtualAccountNo

paymentRequestId

string (128)

Optional

Customer address

additionalInfo

string

Optional

Additional info

API Response

Response Body

The response will be similar to HTTP notification. Some parameters might not be presented in certain status cases, please check our Postman Collection to try it yourself.

{
   "responseCode":"2002600", 
   "responseMessage":"Success",
   "virtualAccountData":{
      "paymentFlagReason":{ 
         "english":"Success", 
         "indonesia":"Sukses"
      },
      "partnerServiceId":"  088899", 
      "customerNo":"12345678901234567890",
      "virtualAccountNo":"  08889912345678901234567890",
      "inquiryRequestId":"abcdef-123456-abcdef", 
      "paymentRequestId":"abcdef-123456-abcdef", 
      "trxId" : " test123" 
      "paidAmount":{ 
          "value":"12345678.00",
          "currency":"IDR"
       },
            "billAmount":{ 
               "value":"12345678.00",
               "currency":"IDR"
            },
            "additionalInfo":{
                "acquirer" : "BRI" 
            },
   }
}
ParameterTypeMandatoryDescription

responseCode

String (7)

Mandatory

Response Code

responseMessage

String (150)

Mandatory

Response Description

virtualAccountData.paymentFlagReason

String (200)

Optional

Reason for Payment Status multi language

virtualAccountData.partnerServiceId

String

Mandatory

Derivative of X-PARTNER-ID , similar to company code,

virtualAccountData.customerNo

String

Mandatory

Unique number

virtualAccountData.virtualAccountNo

String

Mandatory

partnerServiceId (8 digit left padding space) + customerNo (up to 20 digits)

virtualAccountData.inquiryRequestId

String

Conditional

Unique identifier from Inquiry

virtualAccountData.paymentRequestId

String

Conditional

Unique identifier for this Payment from PJP. Mandatory if Payment happened.

virtualAccountData.trxId virtual_account_number

String

Optional

The virtual account number that used for the transaction

virtualAccountData.paidAmount

Object

Mandatory

Paid Amount with 2 decimal

virtualAccountData.paidAmount.billAmount

Object

Mandatory

Transaction Amount.

virtualAccountData.additionalInfo.acquirer

Object

Mandatory

Acquirer Name

Direct Debit

API Request

Endpoint

TypeValue

HTTP Method

POST

API endpoint (Sandbox)

https://api-sandbox.doku.com/orders/v1.0/debit/status

API endpoint (Production)

https://api.doku.com/orders/v1.0/debit/status

Here is the sample of Check Status request header :

X-TIMESTAMP: 2020-12-21T14:56:11+07:00
X-SIGNATURE: ieNOENDdN4MnectGytx5UvmOfASZ2oGWMCJ8gVqkw3tB98ofgY9cbxSeY4IYoYeoKs+0QP4h8BTBhemlfeXp1w==
X-PARTNER-ID: 82150823919040624621823174737537
X-EXTERNAL-ID: 41807553358950093184162180797837
Authorization: bearer gp9HjjEj813Y9JGoqwOeOPWbnt4CUpvIJbU1mMU4a11MNDZ7Sg5u9a"
Content type: application/ json

Request Header Explanation

ParameterData Type MandatoryDescription

X-TIMESTAMP

string

Mandatory

Client's current local time with format : YYYY-MM-DDTHH:mm:ssZD

X-SIGNATURE

string

Mandatory

Represents signature of a request. Identify Signature Type used Value: 1. Symmetric Signature with Get Token (Default) HMAC_SHA512 (clientSecret, stringToSign) dengan formula stringToSign = HTTPMethod +”:“+ EndpointUrl +":"+ AccessToken +":“+ Lowercase(HexEncode(SHA-256(minify(RequestBody))))+ ":“ + TimeStamp Notes : 1. The full URL endpoint includes all parameters in the associated URL 2. For the minify(Request Body) parameter, if there is no Request Body then an empty string is used.

X-PARTNER-ID

string

Mandatory

Client ID for merchant that generated by DOKU

X-EXTERNAL-ID

string

Mandatory

Reference number that should be unique in the same day or to be known as Request ID

Authorization

string

Mandatory

Represents access_token of a request; Keyword starts with “Bearer ” followed by access_token (e.g. Bearer eyJraWQiOi...Jzc29zIiwiY)

Content type

string

Mandatory

The media type of the resource (e.g. application/json)

Request Body

Here is the sample of request body to get status of Direct Debit :

{
   "originalPartnerReferenceNo":"2020102900000000000001",
   "originalReferenceNo":"2020102977770000000009",
   "originalExternalId":"30443786930722726463280097920912",
   "serviceCode":"55",
   "transactionDate":"2020-12-21T14:56:11+07:00",
   "amount":{
      "value":"12345678.00",
      "currency":"IDR"
   },
   "merchantId":"23489182303312",
   "subMerchantId":"23489182303312",
   "externalStoreId":"183908924912387",
   "additionalInfo":{
      "deviceId":"12345679237",
      "channel":"mobilephone"
   }
}
ParameterTypeMandatoryDescription

originalPartnerReferenceNo

string

Optional

Original transaction identifier on service consumer system

originalReferenceNo

string

Optional

Original transaction identifier on service provider system

originalExternalId

string

Optional

Original External-ID on header message

serviceCode

string

Mandatory

API type indicator. Use : 55 for Check Status API

transactionDate

string

Optional

transaction date : ISO 8601

amount

object

Optional

Value and Currency

merchantId

string

Optional

Merchant identifier that is unique per each merchant

subMerchantId

string

Optional

Sub merchant ID

externalStoreId

string

Optional

External Store ID for merchant

additionalInfo

object

Optional

Additional information

API Response

Response Body

The response will be similar to HTTP notification. Some parameters might not be presented in certain status cases, please check our Postman Collection to try it yourself.

{
   "responseCode":"2005500",
   "responseMessage":"Request has been processed successfully",
   "originalPartnerReferenceNo":"2020102900000000000001",
   "originalReferenceNo":"2020102977770000000009",
   "approvalCode":"201039000200",
   "originalExternalId":"30443786930722726463280097920912",
   "serviceCode":"55",
   "latestTransactionStatus":"00",
   "transactionStatusDesc":"success",
   "originalResponseCode":"2005500",
   "originalResponseMessage":"Request has been processed successfully",
   "sessionId":"883737GHY8839",
   "requestID":"3763773",
   "refundHistory":[
      {
         "refundNo":"96194816941239812",
         "partnerReferenceNo":"239850918204981205970",
         "refundAmount":{
            "value":"12345678.00",
            "currency":"IDR"
         },
         "refundStatus":"00",
         "refundDate":"2020-12-23T07:44:16+07:00",
         "reason":"Customer Complain"
      },
      {
         "refundNo":"96194123981251341",
         "partnerReferenceNo":"2398509123131981205970",
         "refundAmount":{
            "value":"112345678.00",
            "currency":"IDR"
         },
         "refundStatus":"00",
         "refundDate":"2020-12-23T07:54:16+07:00",
         "reason":"Customer Complain"
      }
   ],
   "transAmount":{
      "value":"112345678.00",
      "currency":"IDR"
   },
   "feeAmount":{
      "value":"112345678.00",
      "currency":"IDR"
   },
   "paidTime":"2020-12-21T14:56:11+07:00",
   "additionalInfo":{
      "deviceId":"12345679237",
      "channel":"mobilephone"
   }
}

ParameterTypeMandatoryDescription

responseCode

String (7)

Mandatory

Response Code

responseMessage

String (150)

Mandatory

Response Description

originalReferenceNo

String (200)

Conditional

Original transaction identifier on service provider system.

originalPartnerReferenceNo

String

Optional

Original transaction identifier on service consumer system

approvalCode

String

Optional

Unique number

originalExternalId

String

Optional

Original External-ID on header message

serviceCode

String

Mandatory

Transaction type indicator (service code of the original transaction request)

latestTransactionStatus

String

Mandatory

Unique identifier for this Payment from PJP. Mandatory if Payment happened. 00 = Success 01 = Initiated 02 = Paying 03 = Pending 04 = Refunded 05 = Canceled 06 = Failed 07 = Not Found

transactionStatusDesc

String

Optional

Description status transaction

originalResponseCode

String

Optional

Response code

originalResponseMessage

String

Optional

Response description

sessionId

String

Optional

Transaction invoice ID

requestID

String

Optional

Transaction request ID

refundNo

String

Conditional

Transaction Identifier on Service Provider System

partnerRefundNo

String

Conditional

ReferenceNumber from PJP AIS for the refund.

refundAmount

object

Optional

Net amount of the refund

refundStatus

String

Conditional

00 = Success 03 = Pending 04 = Failed

refundDate

String

Conditional

(ISO 8601) Transaction date : dd-MM-yyyy ( Mandatory ) HH:mm:Ss ( Optional )

transAmount

object

Optional

Transaction amount that will be paid using this payment method If it's IDR then value includes 2 decimal digits.

feeAmount

String

Optional

Fee amount that will be paid using this payment method If it's IDR then value includes 2 decimal digits.

paidTime

String

Conditional

transaction date : ISO 8601

additionalInfo

object

Mandatory

Additional information

Last updated