# HTTP Notification Sample - Non SNAP

After setting up your `Notification URL`, we will send the notification for certain events such as when the Virtual Account has been paid by your customers, Credit Card has been charged, Credit Card failed, and etc.

Once the customers finish the payment, DOKU will send the notification to your defined `Notification URL`.&#x20;

### Virtual Account

Here is the sample notification that DOKU will send to merchant's server :

<table data-full-width="false"><thead><tr><th>Type</th><th>Value</th></tr></thead><tbody><tr><td>HTTP Method</td><td>POST</td></tr></tbody></table>

Here is the sample of notification request header :

```json
Client-Id: MCH-0001-10791114622547
Request-Id: 479b663f-5c9d-400d-8e80-3e548a8f7639
Request-Timestamp: 2020-08-11T08:45:42Z
Signature: HMACSHA256=vl9DBTX5KhEiXmnpOD0TSm8PYQknuHPdyHSTSc3W6Ps=
```

<table><thead><tr><th width="190">Parameter</th><th>Description</th></tr></thead><tbody><tr><td><strong>Client-Id</strong></td><td>Client ID you retrieved from DOKU Back Office</td></tr><tr><td><strong>Request-Id</strong></td><td>Unique random string (max 128 characters) that generated by DOKU to make sure no duplicate notification</td></tr><tr><td><strong>Request-Timestamp</strong></td><td>Time Stamp request on UTC time in ISO8601 format</td></tr><tr><td><strong>Signature</strong></td><td>Verify the Signature to ensure the Notification Authenticity coming from DOKU. Please refer to <a href="/pages/VogdJfoJtS2yXvClOsrc">this section</a></td></tr></tbody></table>

Here is the sample notification request body :

{% tabs %}
{% tab title="BCA VA" %}

```json
{
    "service": {
        "id": "VIRTUAL_ACCOUNT"
    },
    "acquirer": {
        "id": "BCA"
    },
    "channel": {
        "id": "VIRTUAL_ACCOUNT_BCA"
    },
    "transaction": {
        "status": "SUCCESS",
        "date": "2021-01-27T03:24:23Z",
        "original_request_id": "15022aab-444f-4b04-afa8-ddfce89432ec"
    },
    "order": {
        "invoice_number": "INV-20210124-0001",
        "amount": 150000
    },
    "virtual_account_info": {
        "virtual_account_number": "1900600000000046"
    },
    "virtual_account_payment": {
        "identifer": [
            {
                "name": "REQUEST_ID",
                "value": "7892931"
            },
            {
                "name": "REFERENCE",
                "value": "6769200"
            },
            {
                "name": "CHANNEL_TYPE",
                "value": "6010"
            }
        ]
    }
}
```

{% endtab %}

{% tab title="Mandiri VA" %}

```json
{
    "service": {
        "id": "VIRTUAL_ACCOUNT"
    },
    "acquirer": {
        "id": "BANK_MANDIRI"
    },
    "channel": {
        "id": "VIRTUAL_ACCOUNT_BANK_MANDIRI"
    },
    "transaction": {
        "status": "SUCCESS",
        "date": "2021-01-27T07:24:50Z",
        "original_request_id": "cc682442-6c22-493e-8121-b9ef6b3fa728"
    },
    "order": {
        "invoice_number": "INV-20210124-0001",
        "amount": 150000
    },
    "virtual_account_info": {
        "virtual_account_number": "8889940000000213"
    },
    "virtual_account_payment": {
        "identifier": [
            {
                "name": "TRANSACTION_ID",
                "value": "8341422"
            },
            {
                "name": "CHANNEL_ID",
                "value": "001"
            }
        ]
    }
}
```

{% endtab %}

{% tab title="BSI VA" %}

```json
{
    "service": {
        "id": "VIRTUAL_ACCOUNT"
    },
    "acquirer": {
        "id": "BANK_SYARIAH_MANDIRI"
    },
    "channel": {
        "id": "VIRTUAL_ACCOUNT_BANK_SYARIAH_MANDIRI"
    },
    "transaction": {
        "status": "SUCCESS",
        "date": "2021-01-27T06:00:20Z",
        "original_request_id": "d24a5644-6078-4249-8740-4a6dcd92df5a"
    },
    "order": {
        "invoice_number": "INV-20210124-0001",
        "amount": 150000
    },
    "virtual_account_info": {
        "virtual_account_number": "6059000000000205"
    },
    "virtual_account_payment": {
        "identifier": [
            {
                "name": "PAY_TERMINAL_ID",
                "value": ""
            },
            {
                "name": "BANK_REFERENCE",
                "value": "1232990188"
            },
            {
                "name": "PAY_CHANNEL",
                "value": "6019"
            }
        ]
    }
}

```

{% endtab %}

{% tab title="BRI VA " %}

```json
{
    "service": {
        "id": "VIRTUAL_ACCOUNT"
    },
    "acquirer": {
        "id": "BRI"
    },
    "channel": {
        "id": "VIRTUAL_ACCOUNT_BRI"
    },
    "transaction": {
        "status": "SUCCESS",
        "date": "2020-08-11T09:06:18Z",
        "original_request_id": "e5a8a8b8-7eab-4be3-91d8-5e2d7ab7cc25"
    },
    "order": {
        "invoice_number": "INV-20210124-0001",
        "amount": 150000
    },
    "virtual_account_info": {
        "virtual_account_number": "1236260000000004"
    },
    "virtual_account_payment": {
        "identifier": [
            {
                "name": "TRANSAKSI_ID",
                "value": "127503812"
            },
            {
                "name": "TERMINAL_ID",
                "value": "1"
            }
        ]
    }
}
```

{% endtab %}

{% tab title="BNI VA" %}

```json
{
  "service": {
    "id": "VIRTUAL_ACCOUNT"
  },
  "acquirer": {
    "id": "BNI"
  },
  "channel": {
    "id": "VIRTUAL_ACCOUNT_BNI"
  },
  "order": {
    "invoice_number": "INV-1640337742",
    "amount": 20000
  },
  "virtual_account_info": {
    "virtual_account_number": "8803300000000098",
    "merchant_unique_reference": "UNIQUE_00003",
    "billing_type": "FIXED",
    "identifier":[
      {
        "name": "BILLING_NUMBER",
        "value": "3280300000000001234"
      }
    ]
  },
  "virtual_account_payment": {
    "identifier": [
      {
        "name": "TRX_ID",
        "value": "11901640337564039UNIQUE_00003"
      },
      {
        "name": "PAYMENT_NTB",
        "value": "228853"
      }
    ]
  },
  "transaction": {
    "status": "SUCCESS",
    "date": "2021-12-24T16:23:39Z",
    "original_request_id": "456b001e-adc8-4fb8-a976-95831fb61468"
  }
}
```

{% endtab %}

{% tab title="DOKU VA" %}

```json
{
    "service": {
        "id": "VIRTUAL_ACCOUNT"
    },
    "acquirer": {
        "id": "DOKU"
    },
    "channel": {
        "id": "VIRTUAL_ACCOUNT_DOKU"
    },
    "transaction": {
        "status": "SUCCESS",
        "date": "2021-01-22T07:06:28Z",
        "original_request_id": "09e0defe-a071-45b3-9feb-ac134374628c"
    },
    "order": {
        "invoice_number": "INV-20210124-0001",
        "amount": 150000
    },
    "virtual_account_info": {
        "virtual_account_number": "8000100000000323"
    },
    "virtual_account_payment": {
        "identifier": [
            {
                "name": "TRACE_NUMBER",
                "value": "19832"
            },
            {
                "name": "TRANSACTION_NUMBER",
                "value": "d094700e379f0fb3b543e25c77f8e4b3e068f057"
            },
            {
                "name": "HOST_REFERENCE_NUMBER",
                "value": ""
            }
        ]
    }
}
```

{% endtab %}

{% tab title="CIMB VA" %}

```json
{
    "service": {
        "id": "VIRTUAL_ACCOUNT"
    },
    "acquirer": {
        "id": "CIMB"
    },
    "channel": {
        "id": "VIRTUAL_ACCOUNT_BANK_CIMB"
    },
    "transaction": {
        "status": "SUCCESS",
        "date": "2020-08-11T09:06:18Z",
        "original_request_id": "e5a8a8b8-7eab-4be3-91d8-5e2d7ab7cc25"
    },
    "order": {
        "invoice_number": "INV-20210124-0001",
        "amount": 150000
    },
    "virtual_account_info": {
        "virtual_account_number": "1236260000000004"
    },
    "virtual_account_payment": {
        "identifier": [
            {
                "name": "TRANSAKSI_ID",
                "value": "127503812"
            },
            {
                "name": "TERMINAL_ID",
                "value": "1"
            }
        ]
    }
}
```

{% endtab %}

{% tab title="PERMATA VA" %}

```json
{
    "service": {
        "id": "VIRTUAL_ACCOUNT"
    },
    "acquirer": {
        "id": "BANK_PERMATA"
    },
    "channel": {
        "id": "VIRTUAL_ACCOUNT_BANK_PERMATA"
    },
    "transaction": {
        "status": "SUCCESS",
        "date": "2020-08-11T09:06:18Z",
        "original_request_id": "e5a8a8b8-7eab-4be3-91d8-5e2d7ab7cc25"
    },
    "order": {
        "invoice_number": "INV-20210124-0001",
        "amount": 150000
    },
    "virtual_account_info": {
        "virtual_account_number": "1236260000000004"
    },
    "virtual_account_payment": {
        "identifier": [
            {
                "name": "TRANSAKSI_ID",
                "value": "127503812"
            },
            {
                "name": "TERMINAL_ID",
                "value": "1"
            }
        ]
    }
}
```

{% endtab %}

{% tab title="DANAMON VA" %}

```json
{
  "acquirer": {
    "id": "BANK_DANAMON",
    "name": "Bank Danamon"
  },
  "service": {
    "id": "VIRTUAL_ACCOUNT",
    "name": "Virtual Account"
  },
  "channel": {
    "id": "VIRTUAL_ACCOUNT_BANK_DANAMON",
    "name": "Virtual Account Bank Danamon"
  },
  "order": {
    "invoice_number": "INV-1635748123946513",
    "amount": 20000
  },
  "virtual_account_info": {
    "virtual_account_number": "8922600000000063"
  },
  "virtual_account_payment": {
    "reference_number": "AFNGf6wAWrFe2LSmpfXviRXYv7nPK1LOsao9TtLC",
    "date": "20211206152845",
    "identifier": [
      {
        "name": "USER_REF_NO",
        "value": "AFNGf6wAWrFe2LSmpfXviRXYv7nPK1LOsao9TtLC"
      },
      {
        "name": "PAY_ACCOUNT",
        "value": "706913838473"
      },
      {
        "name": "PAY_BANK",
        "value": "Danamon"
      },
      {
        "name": "PAY_DESC",
        "value": "Payment Simulator for 8922600000000063"
      },
      {
        "name": "PAY_AMOUNT",
        "value": "20000"
      },
      {
        "name": "BILL_AMOUNT",
        "value": "20000"
      }
    ]
  },
  "transaction": {
    "status": "SUCCESS",
    "original_request_id": "b693d940-bd15-4b85-9d02-57844c4039e3",
    "date": "2021-12-06T08:28:45Z"
  }
}
```

{% endtab %}
{% endtabs %}

#### Virtual Account Notification Explanation&#x20;

<table><thead><tr><th>Parameter</th><th width="82">Type</th><th width="114">Mandatory</th><th>Description</th></tr></thead><tbody><tr><td><code>service.id</code></td><td>string</td><td>Mandatory</td><td>The service that is used for the transaction</td></tr><tr><td><code>acquirer.id</code></td><td>string</td><td>Mandatory</td><td>The acquirer that processed the transaction</td></tr><tr><td><code>channel.id</code></td><td>string</td><td>Mandatory</td><td>The channel of the transaction</td></tr><tr><td><code>transaction.status</code></td><td>string</td><td>Mandatory</td><td>The transaction status to be use to update the status on merchant side<br><em>Possible value: <code>SUCCESS</code> since VA only notify when payment is success</em></td></tr><tr><td><code>transaction.date</code></td><td>string</td><td>Mandatory</td><td>The date when the transaction is completed by the customer in ISO 8601 format (UTC + 0)</td></tr><tr><td><code>transaction.original_request_id</code></td><td>string</td><td>Mandatory</td><td>The request ID that sent when initiate the payment</td></tr><tr><td><code>order.invoice_number</code></td><td>string</td><td>Mandatory</td><td>Same as the request that merchant sent on the payment initiation</td></tr><tr><td><code>order.amount</code></td><td>number</td><td>Mandatory</td><td>Same as the request that merchant sent on the payment initiation</td></tr><tr><td><code>virtual_account_info.</code><br><code>virtual_account_number</code></td><td>string</td><td>Mandatory</td><td>The virtual account number that used for the transaction</td></tr><tr><td><code>virtual_account_payment.identifier</code></td><td>string</td><td>Optional</td><td>List of transaction identifier that coming from the acquiring. Merchant can save these data for reference</td></tr></tbody></table>

### Credit Card

Here is the sample notification that DOKU will send to merchant's server.

<table data-full-width="false"><thead><tr><th>Type</th><th>Value</th></tr></thead><tbody><tr><td>HTTP Method</td><td>POST</td></tr></tbody></table>

Here is the sample notification **request header** :&#x20;

```
Client-Id: MCH-0001-10791114622547
Request-Id: 370c993c-e5ee-4dfc-9e47-0474b55c7b4b
Request-Timestamp: 2020-08-11T08:45:42Z
Signature: HMACSHA256=vl9DBTX5KhEiXmnpOD0TSm8PYQknuHPdyHSTSc3W6Ps
```

<table><thead><tr><th width="143">Parameter</th><th>Description</th></tr></thead><tbody><tr><td><strong>Client-Id</strong></td><td>Client ID you retrieved from DOKU Back Office</td></tr><tr><td><strong>Request-Id</strong></td><td>Unique random string (max 128 characters) that generated by DOKU to make sure no duplicate notification</td></tr><tr><td><strong>Request-Timestamp</strong></td><td>Time Stamp request on UTC time in ISO8601 format</td></tr><tr><td><strong>Signature</strong></td><td>Verify the Signature to ensure the Notification Authenticity coming from DOKU. Please refer to <a href="/pages/VogdJfoJtS2yXvClOsrc">this section</a></td></tr></tbody></table>

Here is the sample notification **request body** :&#x20;

```json
{
  "order": {
    "invoice_number": "INV-1672986414",
    "amount": 90000
  },
  "customer": {
    "id": "W7rbKhPYh76VSHYwHRaGDIbBhgTebgAoWtX",
    "name": "Anton Budiman",
    "email": "anton@doku.com"
  },
  "transaction": {
    "type": "SALE",
    "status": "SUCCESS",
    "date": "2023-01-06T06:27:14Z",
    "original_request_id": "a438194b-ed79-421a-adb6-062496b08c7b"
  },
  "service": {
    "id": "CREDIT_CARD"
  },
  "acquirer": {
    "id": "BANK_MANDIRI"
  },
  "channel": {
    "id": "CREDIT_CARD"
  },
  "card_payment": {
    "masked_card_number": "557338******1101",
    "approval_code": "448998",
    "response_code": "00",
    "response_message": "PAYMENT APPROVED",
    "issuer": "PT. BANK MANDIRI (PERSERO), Tbk"
  },
  "authorize_id": "16920747459243358",
}
```

#### Credit Card Notification Explanation

<table><thead><tr><th width="271">Parameter</th><th width="112">Type</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td><code>order.invoice_number</code></td><td>string</td><td>Mandatory</td><td>Same as the request that merchant sent on the payment initiation</td></tr><tr><td><code>order.amount</code></td><td>number</td><td>Mandatory</td><td>Same as the request that merchant sent on the payment initiation</td></tr><tr><td><code>customer.id</code></td><td>string</td><td>Mandatory</td><td>Same as the request that merchant sent on the payment initiation</td></tr><tr><td><code>customer.name</code></td><td>string</td><td>Optional</td><td>Same as the request that merchant sent on the payment initiation</td></tr><tr><td><code>customer.email</code></td><td>string</td><td>Optional</td><td>Same as the request that merchant sent on the payment initiation</td></tr><tr><td><code>transaction.type</code></td><td>string</td><td>Mandatory</td><td>Transaction Type<br>Possible value: <code>SALE, INSTALLMENT, AUTHORIZE, MOTO</code></td></tr><tr><td><code>transaction.status</code></td><td>string</td><td>Mandatory</td><td>The transaction status to be use to update the status on merchant side<br>Possible value: <code>SUCCESS, FAILED</code></td></tr><tr><td><code>transaction.date</code></td><td>string</td><td>Mandatory</td><td>The date when the transaction is completed by the customer in ISO 8601 format (UTC + 0)</td></tr><tr><td><code>transaction.original_request_id</code></td><td>string</td><td>Mandatory</td><td>The request ID that sent when initiate the payment</td></tr><tr><td><code>service.id</code></td><td>string</td><td>Mandatory</td><td>The service that is used for the transaction</td></tr><tr><td><code>acquirer.id</code></td><td>string</td><td>Mandatory</td><td>The acquirer that processed the transaction</td></tr><tr><td><code>channel.id</code></td><td>string</td><td>Mandatory</td><td>The channel of the transaction`</td></tr><tr><td><code>authorize_id</code></td><td>string</td><td>Optional</td><td>Used to capture transaction in<br><code>Authorize Capture</code> transaction</td></tr><tr><td><code>card_payment.masked_card_number</code></td><td>string</td><td>Optional</td><td>The masked card number that charged for this transaction</td></tr><tr><td><code>card_payment.approval_code</code></td><td>string</td><td>Optional</td><td>Acquirer approval code for this transaction</td></tr><tr><td><code>card_payment.response_code</code></td><td>string</td><td>Optional</td><td>DOKU / Acquirer response code</td></tr><tr><td><code>card_payment.response_message</code></td><td>string</td><td>Optional</td><td>DOKU / Acquirer response message</td></tr><tr><td><code>card_payment.issuer</code></td><td>string</td><td>Optional</td><td>Card Issuer</td></tr></tbody></table>

### Convenience Store

Here is the sample notification that DOKU will send to merchant's server.

<table data-full-width="false"><thead><tr><th>Type</th><th>Value</th></tr></thead><tbody><tr><td>HTTP Method</td><td>POST</td></tr></tbody></table>

Here is the sample notification **request header** :&#x20;

```
Client-Id: MCH-0001-10791114622547
Request-Id: 370c993c-e5ee-4dfc-9e47-0474b55c7b4b
Request-Timestamp: 2020-08-11T08:45:42Z
Signature: HMACSHA256=vl9DBTX5KhEiXmnpOD0TSm8PYQknuHPdyHSTSc3W6Ps
```

<table><thead><tr><th width="143">Parameter</th><th>Description</th></tr></thead><tbody><tr><td><strong>Client-Id</strong></td><td>Client ID you retrieved from DOKU Back Office</td></tr><tr><td><strong>Request-Id</strong></td><td>Unique random string (max 128 characters) that generated by DOKU to make sure no duplicate notification</td></tr><tr><td><strong>Request-Timestamp</strong></td><td>Time Stamp request on UTC time in ISO8601 format</td></tr><tr><td><strong>Signature</strong></td><td>Verify the Signature to ensure the Notification Authenticity coming from DOKU. Please refer to <a href="/pages/VogdJfoJtS2yXvClOsrc">this section</a></td></tr></tbody></table>

Here is the sample notification **request body** :&#x20;

{% tabs %}
{% tab title="Alfa Group" %}

```json
{
    "service": {
        "id": "ONLINE_TO_OFFLINE"
    },
    "acquirer": {
        "id": "ALFA"
    },
    "channel": {
        "id": "ONLINE_TO_OFFLINE_ALFA"
    },
    "transaction": {
        "status": "SUCCESS",
        "date": "2021-08-12T07:06:28Z",
        "original_request_id": "5b8e438f-fac1-4103-9e0e-ebfdc38b5acb"
    },
    "order": {
        "invoice_number": "INV-20210125-0001",
        "amount": 150000
    },
    "online_to_offline_info": {
        "payment_code": "73"
    },
    "online_to_offline_payment": {
        "identifier": [
            {
                "name": "AGENT_ID",
                "value": "ALFAMART"
            },
            {
                "name": "AGENT_STORE_ID",
                "value": "store"
            },
            {
                "name": "AGENT_TRX_ID",
                "value": "1246"
            }
        ]
    }
}
```

{% endtab %}

{% tab title="Alfa Group for Insurance" %}

```json
{
    "service": {
        "id": "ONLINE_TO_OFFLINE"
    },
    "acquirer": {
        "id": "ALFA"
    },
    "channel": {
        "id": "ONLINE_TO_OFFLINE_ALFA"
    },
    "order": {
        "invoice_number": "INV-20210125-0001",
        "amount": 150000
    },
    "transaction": {
        "status": "SUCCESS",
        "date": "2021-01-22T07:06:28Z",
        "original_request_id": "2103"
    },
    "online_to_offline_info": {
        "payment_code": "8896512345678123"
    },
    "online_to_offline_payment": {
        "identifier": [
            {
                "name": "AGENT_ID",
                "value": "100001"
            },
            {
                "name": "AGENT_STORE_ID",
                "value": "10000232"
            },
            {
                "name": "AGENT_TRX_ID",
                "value": "c1aa04bf421e5b38c3d18933e9994d3f289def65"
            }
        ]
    },
    "additional_info": {
        "insurance_info": {
            "policy_type": "Dana Pendidikan",
            "policy_number": "9090901234",
            "policy_account_name": "Andreas",
            "policy_status": "aktif",
            "bill_due_date": "21 May 2021"
        }
    }
}
```

{% endtab %}

{% tab title="Indomaret" %}

```json
{
    "service": {
        "id": "ONLINE_TO_OFFLINE"
    },
    "acquirer": {
        "id": "INDOMARET"
    },
    "channel": {
        "id": "ONLINE_TO_OFFLINE_INDOMARET"
    },
    "transaction": {
        "status": "SUCCESS",
        "date": "2021-08-12T07:06:28Z",
        "original_request_id": "5b8e438f-fac1-4103-9e0e-ebfdc38b5acb"
    },
    "order": {
        "invoice_number": "INV-20210125-0001",
        "amount": 150000
    },
    "online_to_offline_info": {
        "payment_code": "73"
    },
    "online_to_offline_payment": {
        "identifier": [
            {
                "name": "AGENT_ID",
                "value": "INDOMARET"
            },
            {
                "name": "AGENT_STORE_ID",
                "value": "store"
            },
            {
                "name": "AGENT_TRX_ID",
                "value": "1246"
            }
        ]
    }
}
```

{% endtab %}
{% endtabs %}

#### Convenience Store Notification Explanation

<table><thead><tr><th width="199">Parameter</th><th width="100">Type</th><th width="117">Mandatory</th><th>Description</th></tr></thead><tbody><tr><td><code>service.id</code></td><td>string</td><td>Mandatory</td><td>The service that is used for the transaction</td></tr><tr><td><code>acquirer.id</code></td><td>string</td><td>Mandatory</td><td>The acquirer that processed the transaction</td></tr><tr><td><code>channel.id</code></td><td>string</td><td>Mandatory</td><td>The channel of the transaction</td></tr><tr><td><code>transaction.status</code></td><td>string</td><td>Mandatory</td><td>The transaction status to be use to update the status on merchant side<br>Possible value: <code>SUCCESS</code> since Convenience Store only notify when payment is success</td></tr><tr><td><code>transaction.date</code></td><td>string</td><td>Mandatory</td><td>The date when the transaction is completed by the customer in ISO 8601 format (UTC + 0)</td></tr><tr><td><code>transaction.original_request_id</code></td><td>string</td><td>Mandatory</td><td>The request ID that sent when initiate the payment</td></tr><tr><td><code>order.invoice_number</code></td><td>string</td><td>Mandatory</td><td>The invoice number that sent when initate the payment</td></tr><tr><td><code>order.amount</code></td><td>string</td><td>Mandatory</td><td>The amount of the transaction</td></tr><tr><td><code>online_to_offline_info.</code><br><code>payment_code</code></td><td>string</td><td>Mandatory</td><td>The payment code number that used for the transaction</td></tr><tr><td><code>online_to_offline_payment.identifier</code></td><td>array</td><td>Optional</td><td>Same as the inquiry response</td></tr><tr><td><code>additional_info</code></td><td>json</td><td>Optional</td><td>Same as the additional_info from the request</td></tr></tbody></table>

### E-wallet

Here is the sample notification that DOKU will send to merchant's server.

<table data-full-width="false"><thead><tr><th>Type</th><th>Value</th></tr></thead><tbody><tr><td>HTTP Method</td><td>POST</td></tr></tbody></table>

Here is the sample notification **request header** :&#x20;

```
Client-Id: MCH-0001-10791114622547
Request-Id: 370c993c-e5ee-4dfc-9e47-0474b55c7b4b
Request-Timestamp: 2020-08-11T08:45:42Z
Signature: HMACSHA256=vl9DBTX5KhEiXmnpOD0TSm8PYQknuHPdyHSTSc3W6Ps
```

<table><thead><tr><th width="143">Parameter</th><th>Description</th></tr></thead><tbody><tr><td><strong>Client-Id</strong></td><td>Client ID you retrieved from DOKU Back Office</td></tr><tr><td><strong>Request-Id</strong></td><td>Unique random string (max 128 characters) that generated by DOKU to make sure no duplicate notification</td></tr><tr><td><strong>Request-Timestamp</strong></td><td>Time Stamp request on UTC time in ISO8601 format</td></tr><tr><td><strong>Signature</strong></td><td>Verify the Signature to ensure the Notification Authenticity coming from DOKU. Please refer to <a href="/pages/VogdJfoJtS2yXvClOsrc">this section</a></td></tr></tbody></table>

Here is the sample notification **request body** :&#x20;

{% tabs %}
{% tab title="Shopeepay" %}

```json
{
    "service":{
        "id": "EMONEY"
    },
    "acquirer":{
        "id": "SHOPEE_PAY"
    },
    "channel":{
        "id": "EMONEY_SHOPEE_PAY"
    },
    "order":{
        "invoice_number": "INV-20210124-0001",
        "amount": 150000
    },
    "transaction":{
        "status": "SUCCESS",
        "date": "2021-07-09T02:06:14Z",
        "original_request_id": "24bb5232-3fe6-47a5-b0b0-d0fc3c6b5fdb"
    },
    "shopeepay_configuration":{
        "merchant_ext_id": "846609710695590",
        "store_ext_id": "99012984"
    },
    "shopeepay_payment":{
        "transaction_status": "3",
        "transaction_message": "SUCCESS",
        "identifier": [
            {
                "name": "PAYMENT_REFERENCE_ID",
                "value": "INV-20210124-0001"
            },
            {
                "name": "TRANSACTION_SN",
                "value": "5928618974087420594542231456745334310931540501886465026193020656"
            },
            {
                "name": "USER_ID_HASH",
                "value": "1933182965027045219980555801600298133716162755914500208775934992"
            }
        ]
    }
}
```

#### Shopeepay Notification Explanation

<table><thead><tr><th width="165">Parameter</th><th width="90">Type</th><th width="123">Mandatory</th><th>Description</th></tr></thead><tbody><tr><td><code>service.id</code></td><td>string</td><td>Mandatory</td><td>The service that is used for the transaction</td></tr><tr><td><code>acquirer.id</code></td><td>string</td><td>Mandatory</td><td>The acquirer that processed the transaction</td></tr><tr><td><code>channel.id</code></td><td>string</td><td>Mandatory</td><td>The channel of the transaction</td></tr><tr><td><code>order.invoice_number</code></td><td>string</td><td>Mandatory</td><td>The invoice number that sent when initate the payment</td></tr><tr><td><code>order.amount</code></td><td>string</td><td>Mandatory</td><td>The amount of the transaction</td></tr><tr><td><code>transaction.status</code></td><td>string</td><td>Mandatory</td><td>The transaction status to be use to update the status on merchant side<br>Possible value: <code>SUCCESS, FAILED</code></td></tr><tr><td><code>transaction.date</code></td><td>string</td><td>Mandatory</td><td>The date when the transaction is completed by the customer in ISO 8601 format (UTC + 0)</td></tr><tr><td><code>transaction.original_request_id</code></td><td>string</td><td>Mandatory</td><td>The request ID that sent when initiate the payment</td></tr><tr><td><code>shopeepay_configuration.</code><br><code>merchant_ext_id</code></td><td>string</td><td>Optional</td><td>The credential from ShopeePay</td></tr><tr><td><code>shopeepay_configuration.</code><br><code>store_ext_id</code></td><td>string</td><td>Optional </td><td>The credential from ShopeePay</td></tr><tr><td><code>shopeepay_payment.</code><br><code>transaction_status</code></td><td>string</td><td>Optional</td><td>The status code from ShopeePay<br>Possible value: <code>3</code> for success, <code>4</code> for failed</td></tr><tr><td><code>shopeepay_payment.</code><br><code>transaction_message</code></td><td>string</td><td>Optional</td><td>The status message from ShopeePay<br>Possible value: <code>SUCCESS, FAILED</code></td></tr><tr><td><code>shopeepay_payment.identifier</code></td><td>array</td><td>Optional</td><td>List of transaction identifier that coming from the acquiring. Merchant can save these data for reference</td></tr></tbody></table>
{% endtab %}

{% tab title="OVO Open API" %}
DOKU OVO Open API will publish 3 scenarios that are in the process before payment to after payment. Here are the cases that will be published :

1. [Binding](#binding)
2. [Payment](#payment)
3. [Refund](#refund)

#### Binding

```json
{
    "service":{
        "id":"EMONEY"
    },
    "acquirer":{
        "id":"OVO"
    },
    "channel":{
        "id":"EMONEY_OVO"
    },
    "customer":{
        "id":"123123123",
        "name":"Joko",
        "email":"joko@gmail.com",
        "phone":"081287458232",
        "additional_info":"Test"
    },
    "wallet": {
        "issuer": "OVO",
        "token_id": "410d3bce942991550d81f20171234df3",
        "masked_phone_number": "****0621",
        "status":"SUCCESS"
    }
}
```

#### OVO Open API - Binding Notification Explanation

<table><thead><tr><th width="195">Parameter</th><th width="82">Type</th><th width="126">Mandatory</th><th>Description</th></tr></thead><tbody><tr><td><code>service.id</code></td><td>string</td><td>Mandatory</td><td>The service that is used for the transaction</td></tr><tr><td><code>acquirer.id</code></td><td>string</td><td>Mandatory</td><td>The acquirer that processed the transaction</td></tr><tr><td><code>channel.id</code></td><td>string</td><td>Mandatory</td><td>The channel of the transaction</td></tr><tr><td><code>customer.id</code></td><td>string</td><td>Mandatory</td><td>Merchant customer ID</td></tr><tr><td><code>customer.name</code></td><td>string</td><td>Optional</td><td>Customer name that sent when initiate the payment</td></tr><tr><td><code>customer.email</code></td><td>string</td><td>Optional</td><td>Customer email that sent when initiate the payment</td></tr><tr><td><code>customer.phone</code></td><td>string</td><td>Optional</td><td>Customer phone that sent when initiate the payment</td></tr><tr><td><code>customer.additional_info</code></td><td>string</td><td>Mandatory</td><td>Customer additional_info that sent when initate the payment</td></tr><tr><td><code>wallet.issuer</code></td><td>string</td><td>Mandatory</td><td>Wallet issuer that receive on API Get List Token OVO Response</td></tr><tr><td><code>wallet.token_id</code></td><td>string</td><td>Mandatory</td><td>Wallet token ID that receive on API Get List Token OVO Response</td></tr><tr><td><code>wallet.masked_phone_number</code></td><td>string</td><td>Mandatory</td><td>Wallet Masked Phone Number that receive on API Get List Token OVO Response</td></tr><tr><td><code>wallet.status</code></td><td>string</td><td>Mandatory</td><td>Wallet Status</td></tr></tbody></table>

#### Payment

```json
{
    "service":{
        "id":"EMONEY"
    },
    "acquirer":{
        "id":"OVO"
    },
    "channel":{
        "id":"EMONEY_OVO"
    },
    "customer":{
        "id":"123123123",
        "name":"Joko",
        "email":"joko@gmail.com",
        "phone":"081287458232",
        "additional_info":"Test"
    },
    "order":{
        "invoice_number":"INV-20210124-0001",
        "amount":200000
    },
    "transaction":{
        "status":"SUCCESS",
        "date":"2021-06-11T02:17:59Z",
        "original_request_id":"4bb5232-3fe6-47a5-b0b0-d0fc3c6b5fdb"
    },
    "ovo_payment": {
        "ovo_id":"08227631610000",
        "cash_used": 19000,
        "point_used": 1000,
        "response_code":OVO123213,
        "response_message":Blablabla
    },
    "additional_info":{
        "message":"no additional info",
        "test": "test"
    }
}
```

#### OVO Open API - Payment Notification Explanation

| 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                                               |
| customer.id                       | string | Mandatory | Merchant customer id                                                         |
| customer.name                     | string | Optional  | Customer name that sent when initiate the payment                            |
| customer.email                    | string | Optional  | Customer email that sent when initiate the payment                           |
| customer.phone                    | string | Optional  | Customer phone number that sent when initiate the payment                    |
| customer.additional\_info         | string | Optional  | Customer additional\_info that sent when initate the payment                 |
| order.invoice\_number             | string | Mandatory | Merchant transaction id unique per client id                                 |
| order.amount                      | string | Mandatory | Total amount in IDR                                                          |
| transaction.status                | string | Mandatory | <p>Status of transaction<br>Possible value :<code>SUCCESS, FAILED</code></p> |
| transaction.date                  | string | Mandatory | Transaction requested to Bank on UTC time in ISO8601 format                  |
| transaction.original\_request\_id | string | Mandatory | Request ID to DOKU API when generate payment / refund                        |
| transaction.message               | string | Mandatory | Transaction message                                                          |
| additional\_info.message          | string | Mandatory | Additional info message                                                      |
| additional\_info.test             | string | Mandatory | Additional info test                                                         |

#### Refund

```json
{
    "service":{
        "id":"EMONEY"
    },
    "acquirer":{
        "id":"OVO"
    },
    "channel":{
        "id":"EMONEY_OVO"
    },
    "customer":{
        "id":"123123123"
    },
    "order":{
        "invoice_number":"INV-20210124-0001"
    },
    "transaction":{
        "status":"REFUNDED",
        "date":"2021-06-11T02:17:59Z",
        "original_request_id":"4bb5232-3fe6-47a5-b0b0-d0fc3c6b5fdb"
    },
    "ovo_payment": {
        "ovo_id":"08227631610000"
    },
    "refund": {
        "id": "864271549283077864271549287589",
        "amount": 6000,
        "ovo_cash": 5000,
        "ovo_point": 1000,
        "reason": "Cancel Order",
        "response_code": OVO123213,
        "response_message": Blablabla
    },
    "additional_info":{
        "message":"no additional info",
        "test":"test"
    }
}
```

| Parameter     | Type | Mandatory | Description |
| ------------- | ---- | --------- | ----------- |
|               |      |           |             |
|               |      |           |             |
|               |      |           |             |
| {% endtab %}  |      |           |             |
| {% endtabs %} |      |           |             |

### Direct Debit

Here is the sample notification that DOKU will send to merchant's server.

<table data-full-width="false"><thead><tr><th>Type</th><th>Value</th></tr></thead><tbody><tr><td>HTTP Method</td><td>POST</td></tr></tbody></table>

Here is the sample notification **request header** :&#x20;

```
Client-Id: MCH-0001-10791114622547
Request-Id: af0fa6bf-5295-42ff-9291-8dfd51976bf0
Request-Timestamp: 2020-08-11T08:45:42Z
Signature: HMACSHA256=vl9DBTX5KhEiXmnpOD0TSm8PYQknuHPdyHSTSc3W6Ps=
```

<table><thead><tr><th width="143">Parameter</th><th>Description</th></tr></thead><tbody><tr><td><strong>Client-Id</strong></td><td>Client ID you retrieved from DOKU Back Office</td></tr><tr><td><strong>Request-Id</strong></td><td>Unique random string (max 128 characters) that generated by DOKU to make sure no duplicate notification</td></tr><tr><td><strong>Request-Timestamp</strong></td><td>Time Stamp request on UTC time in ISO8601 format</td></tr><tr><td><strong>Signature</strong></td><td>Verify the Signature to ensure the Notification Authenticity coming from DOKU. Please refer to <a href="/pages/VogdJfoJtS2yXvClOsrc">this section</a></td></tr></tbody></table>

Here is the sample notification **request body** :&#x20;

```json
{
    "order": {
        "invoice_number": "INV-20210118-0001",
        "amount": 90000
    },
    "transaction": {
        "status": "SUCCESS",
        "date": "2021-02-17T16:33:26.362464",
        "original_request_id": "b6a465ea-bb65-48b2-a22b-3e8fb51cf22e"
    },
    "service": {
        "id": "DIRECT_DEBIT"
    },
    "acquirer": {
        "id": "BRI"
    },
    "channel": {
        "id": "DIRECT_DEBIT_BRI"
    },
    "card_payment": {
        "masked_card_number": "************8232",
        "response_code": "0000",
        "response_message": "SUCCESS",
        "payment_id": "510119432113"
    }
}
```

**Direct Debit Notification Explanation**

<table><thead><tr><th>Parameter</th><th width="123">Type</th><th width="139">Mandatory</th><th>Description</th></tr></thead><tbody><tr><td><code>order.invoice_number</code></td><td><code>string</code></td><td>Mandatory</td><td>Same as the request that merchant sent on the payment initiation</td></tr><tr><td><code>order.amount</code></td><td><code>number</code></td><td>Mandatory</td><td>Same as the request that merchant sent on the payment initiation</td></tr><tr><td><code>transaction.status</code></td><td><code>string</code></td><td>Mandatory</td><td>The transaction status to be use to update the status on merchant side<br>Possible value: <code>SUCCESS, FAILED</code></td></tr><tr><td><code>transaction.date</code></td><td><code>string</code></td><td>Mandatory</td><td>The date when the transaction is completed by the customer in ISO 8601 format (UTC + 0)</td></tr><tr><td><code>transaction.original_request_id</code></td><td><code>string</code></td><td>Mandatory</td><td>The request ID that sent when initiate the payment</td></tr><tr><td><code>service.id</code></td><td><code>string</code></td><td>Mandatory</td><td>The service that is used for the transaction</td></tr><tr><td><code>acquirer.id</code></td><td><code>string</code></td><td>Mandatory</td><td>The acquirer that processed the transaction</td></tr><tr><td><code>channel.id</code></td><td><code>string</code></td><td>Mandatory</td><td>The channel of the transaction</td></tr><tr><td><code>card_payment.masked_card_number</code></td><td><code>string</code></td><td>Optional</td><td>The masked card number that charged for this transaction</td></tr><tr><td><code>card_payment.approval_code</code></td><td><code>string</code></td><td>Optional</td><td>Acquirer approval code for this transaction</td></tr><tr><td><code>card_payment.response_code</code></td><td><code>string</code></td><td>Optional</td><td>DOKU / Acquirer response code</td></tr><tr><td><code>card_payment.response_message</code></td><td><code>string</code></td><td>Optional</td><td>DOKU / Acquirer response code</td></tr></tbody></table>

### Paylater

Here is the sample notification that DOKU will send to merchant's server.

<table data-full-width="false"><thead><tr><th>Type</th><th>Value</th></tr></thead><tbody><tr><td>HTTP Method</td><td>POST</td></tr></tbody></table>

Here is the sample notification **request header** :&#x20;

```
Client-Id: MCH-0001-10791114622547
Request-Id: 370c993c-e5ee-4dfc-9e47-0474b55c7b4b
Request-Timestamp: 2020-08-11T08:45:42Z
Signature: HMACSHA256=vl9DBTX5KhEiXmnpOD0TSm8PYQknuHPdyHSTSc3W6Ps
```

<table><thead><tr><th width="143">Parameter</th><th>Description</th></tr></thead><tbody><tr><td><strong>Client-Id</strong></td><td>Client ID you retrieved from DOKU Back Office</td></tr><tr><td><strong>Request-Id</strong></td><td>Unique random string (max 128 characters) that generated by DOKU to make sure no duplicate notification</td></tr><tr><td><strong>Request-Timestamp</strong></td><td>Time Stamp request on UTC time in ISO8601 format</td></tr><tr><td><strong>Signature</strong></td><td>Verify the Signature to ensure the Notification Authenticity coming from DOKU. Please refer to <a href="/pages/VogdJfoJtS2yXvClOsrc">this section</a></td></tr></tbody></table>

Here is the sample notification **request body** :&#x20;

```json
{
    "service": {
        "id": "PEER_TO_PEER"
    },
    "acquirer": {
        "id": "AKULAKU"
    },
    "channel": {
        "id": "PEER_TO_PEER_AKULAKU"
    },
    "order": {
        "invoice_number": "INV-20210707-0001",
        "amount": 90000
    },
    "transaction": {
        "status": "SUCCESS",
        "date": "2021-07-07T08:48:42Z",
        "original_request_id": "baec7d95-f30a-4b78-b711-6ebe0ccdf50b"
    },
    "peer_to_peer_info": {
               "virtual_account_number": "2900800000000003",
               "created_date": "20200313095850",
               "expired_date": "20200313155850",
               "status": "SUCCESS",
               "merchant_unique_reference": "60123",
               "identifier": [
                  {
                     "name": "AKULAKU_UNIQUE_REFERENCE",
                     "value": "BRN-0288-1654748429432TEST-ABC-768"    
                  },
                  {
                     "name": "ORDER_ID",
                     "value": "BRN-0288-1654748429432TEST-ABC-768"
                  }
               ]
            },
    "payment": {
        "merchant_unique_reference": "MUR-20210707-0001"
    }
}
```

Akulaku Notification Explanation

| 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 | <p>The transaction status to be use to update the status on merchant side<br>Possible value: <code>SUCCESS, FAILED</code></p> |
| `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                                                                            |
| <p><code>payment.</code><br><code>merchant\_unique\_reference</code></p> | `string` | Mandatory | The merchant unique reference that sent when initiate the payment                                                             |

### QRIS

Here is the sample notification that DOKU will send to the merchant's server.

| Type  | HTTP Method |
| ----- | ----------- |
| Value | Post        |

Here is the sample notification request header :

```
Client-Id: MCH-0001-10791114622547
Request-Id: 370c993c-e5ee-4dfc-9e47-0474b55c7b4b
Request-Timestamp: 2020-08-11T08:45:42Z
Signature: HMACSHA256=vl9DBTX5KhEiXmnpOD0TSm8PYQknuHPdyHSTSc3W6Ps
```

<table><thead><tr><th width="210.01171875">Parameter</th><th>Description</th></tr></thead><tbody><tr><td>Client-Id</td><td>Client ID you retrieved from DOKU Back Office</td></tr><tr><td>Request-Id</td><td>Unique random string (max 128 characters) that generated by DOKU to make sure no duplicate notification</td></tr><tr><td>Request-Timestamp</td><td>Time Stamp request on UTC time in ISO8601 format</td></tr><tr><td>Signature</td><td>Verify the Signature to ensure the Notification Authenticity coming from DOKU. Please refer to this section</td></tr></tbody></table>

Here is the sample notification request body :

```json
{
  "service": {
    "id": "QRIS",
    "name": "QRIS"
  },
  "acquirer": {
    "id": "DOKU",
    "name": "DOKU"
  },
  "channel": {
    "id": "QRIS_DOKU",
    "name": "QRIS-DOKU"
  },
  "customer": {
    "doku_id": "1673637808",
    "name": "accountsnap_1747637808",
    "email": "accountsnap_1747637808@gmail.com",
    "phone": "6281747637808"
  },
  "order": {
    "invoice_number": "5ffa5675bb114404a4e426241cf05be0",
    "amount": 20000.00
  },
  "emoney_payment": {
    "account_id": "1673637808",
    "approval_code": "234604941"
  },
  "transaction": {
    "status": "SUCCESS",
    "date": "2025-06-20T04:26:26Z"
  },
  "additional_info": {
    "postalCode": "13120",
    "feeType": "1",
    "settlement": [
      {
        "bank_account_settlement_id": "SBA-0001-123123123",
        "value": 10.0,
        "type": "PERCENTAGE"
      },
      {
        "bank_account_settlement_id": "SBS-0002-321321321",
        "value": 90.0,
        "type": "PERCENTAGE"
      }
    ],
    "origin": {
      "product": "QRIS",
      "system": "snap-adapter",
      "apiFormat": "SNAP",
      "source": "DIRECT"
    }
  }
}

```

QRIS Notification Explanation:

| service.id                     | string | Mandatory | The service id that is used for the transaction                                                                                                                         |
| ------------------------------ | ------ | --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| service.name                   | string | Mandatory | The service name that is used for the transaction                                                                                                                       |
| acquirer.id                    | string | Mandatory | The acquirer id that processed the transaction                                                                                                                          |
| acquirer.name                  | string | Mandatory | The acquirer name that processed the transaction                                                                                                                        |
| channel.id                     | string | Mandatory | The channel id of the transaction                                                                                                                                       |
| channel.name                   | string | Mandatory | The channel name of the transaction                                                                                                                                     |
| customer.doku\_id              | string | Mandatory | Customer / Merchant doku id                                                                                                                                             |
| customer.name                  | string | Mandatory | Customer / Merchant name                                                                                                                                                |
| customer.email                 | string | Mandatory | Customer / Merchant email                                                                                                                                               |
| customer.phone                 | string | Mandatory | Customer / Merchant phone                                                                                                                                               |
| order.invoice\_number          | string | Mandatory | Same as the request that merchant sent on the payment initiation                                                                                                        |
| order.amount                   | string | Mandatory | Total amount in IDR                                                                                                                                                     |
| emoney\_payment.account\_id    | string | Mandatory | Acquirer id for this transaction                                                                                                                                        |
| emoney\_payment.approval\_code | string | Mandatory | Acquirer approval code for this transaction                                                                                                                             |
| transaction.status             | string | Mandatory | <p>The transaction status to be use to update the status on merchant side</p><p>Possible value: SUCCESS since Convenience Store only notify when payment is success</p> |
| transaction.date               | string | Mandatory | The date when the transaction is completed by the customer in ISO 8601 format (UTC + 0)                                                                                 |
| additional\_info               | string | Mandatory | Same as the additional\_info from the request                                                                                                                           |
| origin.product                 | string | Mandatory | The product that processed the transaction                                                                                                                              |
| origin.system                  | string | Mandatory | The product that processed the transaction                                                                                                                              |
| origin.apiFormat               | string | Mandatory | The Api format that processed the transaction                                                                                                                           |
| origin.source                  | string | Mandatory | The source that processed the transaction                                                                                                                               |

<br>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://developers.doku.com/get-started-with-doku-api/notification/http-notification-sample-non-snap.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
