Non-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. This method requires the transaction order.invoice_number (or Request-Id) as the identifier.

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.

Transaction Status Mapping

Here is the list of status that DOKU will provide for the transaction.status:

Name
Description
Final Status
Merchant Action
Applicable for Channels

PENDING

Transaction is waiting to be paid by the customer

NO

Wait for HTTP Notification or Call Check Status API to get final status

VIRTUAL_ACCOUNT, ONLINE_TO_OFFLINE, CREDIT_CARD_AUTHORIZE, PAYLATER

SUCCESS

Transaction is paid by the customer

YES

-

All Channels

FAILED

Transaction is failed to be paid

NO

Generate new payment request to DOKU

VIRTUAL_ACCOUNT,CREDIT_CARD, DIRECT_DEBIT, E_MONEY, PAYLATER

EXPIRED

Transaction due date is exceeded

YES

Generate new payment request to DOKU

VIRTUAL_ACCOUNT, ONLINE_TO_OFFLINE , PAYLATER

REFUNDED

Transaction fund is refunded to merchant

YES

-

CREDIT CARD, EMONEY, PAYLATER

TIMEOUT

Transaction is timeout

NO

Call Check Status API to get final status

E_MONEY

REDIRECT

Transaction is waiting for acquirer verification

NO

Wait for HTTP Notification or Call Check Status API to get final status

CREDIT_CARD

API Request

Type
Value

HTTP Method

GET

API endpoint (Sandbox)

https://api-sandbox.doku.com/orders/v1/status/{{order.invoice_number OR Request-Id}}

API endpoint (Production)

https://api.doku.com/orders/v1/status/{{order.invoice_number OR Request-Id}}

Here is the sample of notification request header:

Client-Id: MCH-0001-10791114622547
Request-Id: e71fe02a-bfef-4af9-a6f6-2cf1f03b00e7
Request-Timestamp: 2020-11-18T08:45:42Z
Signature: HMACSHA256=vl9DBTX5KhEiXmnpOD0TSm8PYQknuHPdyHSTSc3W6Ps=

Request Header Explanation

Parameter
Description

client-id

Client ID retrieved from DOKU Back Office

request-id

Unique random string (max 128 characters) generated from merchant side to protect duplicate request

request-timestamp

Timestamp request on UTC time in ISO8601 UTC+0 format. It means to proceed transaction on UTC+7 (WIB), merchant need to subtract time with 7. Ex: to proceed transaction on September 22th 2020 at 08:51:00 WIB, the timestamp should be 2020-09-22T01:51:00Z

signature

Security parameter that needs to be generated on merchant Backend and placed to the header request to ensure that the request is coming from valid merchant. Please refer to this section to generate the signature

Signature Generation for GET Method

For GET Method, you don't need to generate a Digest. Learn more on this section.

API Response

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 out yourself.

Convenience store

  • Alfa

  • Indomaret

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.

{
    "order": {
        "invoice_number": "INV-67220100000",
        "amount": 120000
    },
    "transaction": {
        "status": "SUCCESS",
        "date": "2021-12-29T02:37:35Z",
        "original_request_id": "INV-67220100000"
    },
    "service": {
        "id": "ONLINE_TO_OFFLINE"
    },
    "acquirer": {
        "id": "ALFA"
    },
    "channel": {
        "id": "ONLINE_TO_OFFLINE_ALFA"
    },
    "online_to_offline_info": {
        "created_date": "20211229093735",
        "expired_date": "20211229100732",
        "reusable_status": "false"
    },
    "online_to_offline_payment": {
        "identifier": [
            {
                "name": "AGENT_ID",
                "value": "ALFAMART"
            },
            {
                "name": "AGENT_STORE_ID",
                "value": "store"
            },
            {
                "name": "AGENT_TRX_ID",
                "value": "505045001763766906"
            }
        ]
    }
}

Alfa O2O Notification Explanation

Parameter
Type
Mandatory
Description

order.invoice_number

string

Mandatory

The invoice number that sent when initate the payment

order.amount

string

Mandatory

The amount of the transaction

transaction.status

string

Mandatory

The transaction status to be use to update the status on merchant side Possible value: SUCCESS, FAILED, TIMEOUT

transaction.date

string

Mandatory

The date when the transaction is completed by the customer in ISO 8601 format (UTC + 0)

transaction.original_request_id

string

Mandatory

The request ID that sent when initiate the payment

service.id

string

Mandatory

The service that is used for the transaction

acquirer.id

string

Mandatory

The acquirer that processed the transaction

channel.id

string

Mandatory

The channel of the transaction

jdm.journey_id

string

Mandatory

Journey id for transaction

online_to_offline_info.created_date

string

Mandatory

Created date for Transaction

online_to_offline_info.expired_date

string

Mandatory

Expired date for Transaction

online_to_offline_info.reusable_status

string

Mandatory

Reusable status for Payment Code

online_to_offline_payment.identifier

array

Mandatory

Identifier for Transaction

e-Wallet

  • DANA

  • ShopeePay

  • DOKU e-Wallet

  • OVO Push Payment

  • OVO Recurring

  • Link Aja

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.

{
    "order": {
        "invoice_number": "INV-1724393502",
        "amount": 1.00
    },
    "transaction": {
        "status": "SUCCESS",
        "type": "SALE",
        "date": "2024-08-23T06:11:52Z",
        "original_request_id": "3348ca8d-f82b-41ce-aeb1-5d7efe8cf309",
        "service_code": "54"
    },
    "acquirer": {
        "id": "DANA",
        "name": "DANA Snap Direct Debit"
    },
    "channel": {
        "id": "EMONEY_DANA"
    },
    "additional_info": {
        "supportDeepLinkCheckoutUrl": "false",
        "origin": {
            "product": "CHECKOUT",
            "source": "direct",
            "system": "mid-jokul-checkout-system",
            "apiFormat": "JOKUL"
        },
        "line_items": [
            {
                "name": "Very Long Name Which Is Very Loooooong",
                "price": "1",
                "quantity": 1.0
            }
        ],
        "orderTitle": "INV-1724393502",
        "account": {
            "accountNo": "http://doku.com/",
            "accountName": "http://doku.com/"
        },
        "channelId": "http://doku.com/"
    },
    "emoney_payment": {
        "status": "PENDING",
        "date": "20240823131152",
        "approval_code": "v6GZT6pvyHh1basLKudYvkQbpVSs6dvvtbFijLdinbyBSgGdEpCsWmMdgsuYVoT7",
        "response_code": "2005400",
        "response_message": "Success"
    },
    "emoney_configuration": {
        "sub_merchant_id": "test"
    }
}
Parameter
Type
Mandatory
Description

order.invoice_number

string

Mandatory

Same as the request that merchant sent on the payment initiation

order.amount

number

Mandatory

Same as the request that merchant sent on the payment initiation

transaction.status

string

Mandatory

The transaction status to be use to update the status on merchant side Possible value: SUCCESS, FAILED, PENDING

transaction.date

string

Mandatory

The date when the transaction is completed by the customer in ISO 8601 format (UTC + 0)

transaction.service_code

string

Optional

Service Code

transaction.type

string

Conditional

Type for DANA transaction. Mandatory if transaction.status value SUCCESS or FAILED. Possible value: SALE

transaction.original_request_id

string

Mandatory

The request ID that sent when initiate the payment

service.id

string

Mandatory

The service that is used for the transaction

acquirer.id

string

Conditional

The acquirer that processed the transaction. Mandatory if transaction.status value SUCCESS.

channel.id

string

Mandatory

The channel of the transaction

additional_info

array

Optional

emoney_payment.status

string

Optional

Status of the Payment

emoney_payment.date

string

Optional

Date of the order

emoney_payment.approval_code

string

Optional

Approval Code from DOKU

emoney_payment.response_code

string

Optional

Response code for the order

emoney_payment.response_message

string

Optional

Response message for the Order

emoney_configuration.sub_merchant.id

string

Optional

Sub merchant ID

Direct Debit

{
    "order": {
        "amount": 500000,
        "invoice_number":"INV-20210217-0003"
    },
    "channel":{
        "id":"DIRECT_DEBIT_BRI"
    },
    "service":{
        "id":"DIRECT_DEBIT"
    },
    "acquirer":{
        "id":"BRI"
    },
    "transaction":{
        "date":"2021-02-17T09:50:17.235078",
        "status":"SUCCESS",
        "original_request_id":"20210217095009645"
    },
    "card_payment":{
        "payment_id":"432828221538",
        "response_code":"0000",
        "response_message":"SUCCESS",
        "masked_card_number":"************8232"
    }
}

Direct Debit Notification Explanation

Parameter
Type
Mandatory
Description

order.invoice_number

string

Mandatory

Same as the request that merchant sent on the payment initiation

order.amount

number

Mandatory

Same as the request that merchant sent on the payment initiation

transaction.status

string

Mandatory

The transaction status to be use to update the status on merchant side Possible value: SUCCESS, FAILED

transaction.date

string

Mandatory

The date when the transaction is completed by the customer in ISO 8601 format (UTC + 0)

transaction.original_request_id

string

Mandatory

The request ID that sent when initiate the payment

service.id

string

Mandatory

The service that is used for the transaction

acquirer.id

string

Mandatory

The acquirer that processed the transaction

channel.id

string

Mandatory

The channel of the transaction

card_payment.masked_card_number

string

Optional

The masked card number that charged for this transaction

card_payment.payment_id

string

Optional

The token that will be use for this transaction

card_payment.response_code

string

Optional

DOKU / Acquirer response code Possible value: see here

card_payment.response_message

string

Optional

DOKU / Acquirer response code Possible value: see here

Cards

  • Sale

  • Recurring

  • Authorize

  • Capture

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.

{
    "order": {
        "invoice_number": "INV-1645668870",
        "amount": 90000
    },
    "transaction": {
        "status": "SUCCESS",
        "date": "2022-02-24T02:15:05Z",
        "type": "RECURRING",
        "original_request_id": "091773eb-a482-408d-949d-73281d91f610"
    },
    "service": {
        "id": "CREDIT_CARD"
    },
    "acquirer": {
        "id": "BANK_MANDIRI"
    },
    "channel": {
        "id": "CREDIT_CARD"
    },
    "card_payment": {
        "card_masked": "461700*******6656",
        "approval_code": "194462",
        "response_code": "00",
        "response_message": "PAYMENT APPROVED",
        "type": "RECURRING",
        "acquiring_off_us_status": "FALSE",
        "request_id": "091773eb-a482-408d-949d-73281d91f610",
        "card_type": "Debit",
        "three_dsecure_status": "TRUE",
        "issuer": "PT. BANK MANDIRI (PERSERO), Tbk",
        "transaction_status": "SUCCESS",
        "brand": "VISA",
        "date": "2022-02-24T02:15:05Z"

    }
}

Credit Card Notification Explanation

Parameter
Type
Mandatory
Description

order.invoice_number

string

Mandatory

Same as the request that merchant sent on the payment initiation

order.amount

number

Mandatory

Same as the request that merchant sent on the payment initiation

transaction.status

string

Mandatory

The transaction status to be use to update the status on merchant side Possible value: SUCCESS, FAILED, PENDING

transaction.date

string

Mandatory

The date when the transaction is completed by the customer in ISO 8601 format (UTC + 0)

transaction.type

string

Conditional

Type for Credit Card Transaction. Mandatory if transaction.status value SUCCESS or FAILED. Possible value: SALE, INSTALLMENT, MOTO, AUTHORIZE, CAPTURE, RECURRING, REFUND

transaction.original_request_id

string

Mandatory

The request ID that sent when initiate the payment

service.id

string

Mandatory

The service that is used for the transaction

acquirer.id

string

Conditional

The acquirer that processed the transaction. Mandatory if transaction.status value SUCCESS.

channel.id

string

Mandatory

The channel of the transaction

card_payment.card_masked

string

Conditional

The masked card number that charged for this transaction. Mandatory if transaction.status value SUCCESS or FAILED.

card_payment.approval_code

string

Conditional

Acquirer approval code for this transaction. Mandatory if transaction.status value SUCCESS or FAILED.

card_payment.response_code

string

Conditional

Acquirer response code. Mandatory if transaction.status value SUCCESS or FAILED.

card_payment.response_message

string

Conditional

Acquirer response code Mandatory if transaction.status value SUCCESS or FAILED.

card_payment.type

string

Conditional

Type for Credit Card Transaction. Mandatory if transaction.status value SUCCESS or FAILED. Possible value: SALE, INSTALLMENT, MOTO, AUTHORIZE, CAPTURE, RECURRING, REFUND

card_payment.acquiring_off_us_status

string

Mandatory

Payment acquiring_off_us_status Possible value: true, false

card_payment.request_id

string

Mandatory

Request ID for transaction

card_payment.card_type

string

Conditional

Card type. Mandatory if transaction.status value SUCCESS or FAILED. Possible value: CREDIT, DEBIT

card_payment.three_dsecure_status

string

Optional

Three dsecure status Possible value: TRUE, FALSE

card_payment.issuer

string

Conditional

Card issuer. Mandatory if transaction.status value SUCCESS or FAILED.

card_payment.transaction_status

string

Mandatory

Transaction status Possible value: SUCCESS, FAILED, PENDING

card_payment.brand

string

Conditional

Card brand. Mandatory if transaction.status value SUCCESS or FAILED.

card_payment.date

string

Optional

Transaction card date

card_payment.authorize_id

string

Optional

Transaction authorize ID

card_payment.authentication_id

string

Optional

Transaction authentication ID

Parameter
Type
Mandatory
Description

order.invoice_number

string

Mandatory

Same as the request that merchant sent on the payment initiation

order.amount

number

Mandatory

Same as the request that merchant sent on the payment initiation

transaction.status

string

Mandatory

The transaction status to be use to update the status on merchant side Possible value: SUCCESS, FAILED, PENDING

transaction.date

string

Mandatory

The date when the transaction is completed by the customer in ISO 8601 format (UTC + 0)

transaction.type

string

Conditional

Type for Credit Card Transaction. Mandatory if transaction.status value SUCCESS or FAILED. Possible value: SALE, INSTALLMENT, MOTO, AUTHORIZE, CAPTURE, RECURRING, REFUND

transaction.original_request_id

string

Mandatory

The request ID that sent when initiate the payment

service.id

string

Mandatory

The service that is used for the transaction

acquirer.id

string

Conditional

The acquirer that processed the transaction. Mandatory if transaction.status value SUCCESS.

channel.id

string

Mandatory

The channel of the transaction

card_payment.card_masked

string

Conditional

The masked card number that charged for this transaction. Mandatory if transaction.status value SUCCESS or FAILED.

card_payment.approval_code

string

Conditional

Acquirer approval code for this transaction. Mandatory if transaction.status value SUCCESS or FAILED.

card_payment.response_code

string

Conditional

Acquirer response code. Mandatory if transaction.status value SUCCESS or FAILED.

card_payment.response_message

string

Conditional

Acquirer response code Mandatory if transaction.status value SUCCESS or FAILED.

card_payment.type

string

Conditional

Type for Credit Card Transaction. Mandatory if transaction.status value SUCCESS or FAILED. Possible value: SALE, INSTALLMENT, MOTO, AUTHORIZE, CAPTURE, RECURRING, REFUND

card_payment.acquiring_off_us_status

string

Mandatory

Payment acquiring_off_us_status Possible value: true, false

card_payment.request_id

string

Mandatory

Request ID for transaction

card_payment.card_type

string

Conditional

Card type. Mandatory if transaction.status value SUCCESS or FAILED. Possible value: CREDIT, DEBIT

card_payment.three_dsecure_status

string

Optional

Three dsecure status Possible value: TRUE, FALSE

card_payment.issuer

string

Conditional

Card issuer. Mandatory if transaction.status value SUCCESS or FAILED.

card_payment.transaction_status

string

Mandatory

Transaction status Possible value: SUCCESS, FAILED, PENDING

card_payment.brand

string

Conditional

Card brand. Mandatory if transaction.status value SUCCESS or FAILED.

card_payment.date

string

Optional

Transaction card date

card_payment.authorize_id

string

Optional

Transaction authorize ID

card_payment.authentication_id

string

Optional

Credit Card Notification Explanation

Paylater

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.

{
    "order": {
        "invoice_number": "invoice-000001014123sdd4",
        "amount": 110000
    },
    "transaction": {
        "status": "PENDING",
        "date": "2024-07-12T06:47:40Z",
        "original_request_id": "93337206-946b-4949-b0c9-15cd04556e09"
    },
    "service": {
        "id": "PEER_TO_PEER"
    },
    "acquirer": {
        "id": "AKULAKU",
        "name": "Akulaku"
    },
    "channel": {
        "id": "PEER_TO_PEER_AKULAKU"
    },
    "peer_to_peer_payment": {
        "status": "PENDING",
        "date": "2024-07-12T06:47:40Z",
        "identifier": [
            {
                "name": "merchant_unique_reference",
                "value": "TEST-ABC-000104"
            },
            {
                "name": "akulaku_unique_reference",
                "value": "MCH-0008-1218873017641TEST-ABC-000104"
            },
            {
                "name": "order_id",
                "value": "MCH-0008-1218873017641TEST-ABC-000104"
            }
        ]
    }
}
Parameter
Type
Mandatory
Description

service.id

string

Mandatory

The service that is used for the transaction

acquirer.id

string

Mandatory

The acquirer that processed the transaction

channel.id

string

Mandatory

The channel of the transaction

order.invoice_number

string

Mandatory

Same as the request that merchant sent on the payment initiation

order.amount

number

Mandatory

Same as the request that merchant sent on the payment initiation

transaction.status

string

Mandatory

The transaction status to be use to update the status on merchant side Possible value: SUCCESS, PENDING

transaction.date

string

Mandatory

The date when the transaction is completed by the customer in ISO 8601 format (UTC + 0)

transaction.original_request_id

string

Mandatory

The request ID that sent when initiate the payment

payment. merchant_unique_reference

string

Mandatory

The merchant unique reference that sent when initiate the payment

Last updated