---
# System prepended metadata

title: bKash Webhook API documentation

---

# bKash Webhook API documentation

## Transcantion check API

#### URL
> POST {{host}}/api/external/v1/bkash/transactions/check


#### Headers
> Content-Type : application/json
> API-Key : provided-api-key
> X-Signature : HMAC-SHA256 signature of the canonicalized JSON payload using 
             JSON Canonicalization Scheme (JCS) as defined by RFC 8785


#### Request payloads
> acc_no [string, `required`, `unique`, `max len: 11 characters`]

##### Sample Request & Response : 

> Request Payload
```json=
{
    "acc_no": "01710000000"
}
```


> Success Response with status code `202`

```json=
{
    "code": 200,
    "message": "transaction allowed",
    "type": "success"
}
```

> Unauthorized error with status code `401`, you will get this error if API-Key mismatched or X-Signature mismatched

```json=
{
    "message": "access denied",
    "type": "error",
    "code": 401,
    "errors": "access denied"
}
```


> Internal Server Error

```json=
{
    "code": 500,
    "message": "Internal Server Error",
    "type": "error"
}
```

## Transcantion complete Acknowledgement API

#### URL
> POST {{host}}/api/external/v1/bkash/transactions/complete


#### Headers
> Content-Type : application/json
> API-Key : provided-api-key
> X-Signature : HMAC-SHA256 signature of the canonicalized JSON payload using 
             JSON Canonicalization Scheme (JCS) as defined by RFC 8785


#### Request payloads
> transaction_id [string, `required`, `unique`, `max len: 32 characters`]
> from_account [string, `required`, `max len: 32 characters`]
> to_account [string, `required`, `max len: 32 characters`]
> amount [integer]
> transaction_datetime [integer, `unix time`]
> reference [string, `optional`, `max len: 255 characters`]


##### Sample Request & Response : 

> Request Payload
```json=
{
    "transaction_id": "txn10001011011",
    "amount": 100,
    "from_account": "from_acount_number",
    "to_account": "to_acount_number",
    "reference": "reference",
    "transaction_datetime": 1764052011
}
```


> Success Response with status code `202`

```json=
{
    "code": 202,
    "message": "transaction accepted",
    "type": "success"
}
```




> Validation error response with status code `422`

```json=
{
    "code": 422,
    "message": "please fix the given errors",
    "type": "error",
    "errors": {
        "amount": [
            "amount is invalid"
        ],
        "transaction_id": [
            "transaction_id is required"
        ]
    }
}
```

> Unauthorized error with status code `401`, you will get this error if API-Key mismatched or X-Signature mismatched

```json=
{
    "message": "access denied",
    "type": "error",
    "code": 401,
    "errors": "access denied"
}
```


> bad request error with status code `400`

```json=
{
    "code": 400,
    "message": "duplicate transaction id",
    "type": "error"
}
```

> Internal Server Error

```json=
{
    "code": 500,
    "message": "Internal Server Error",
    "type": "error"
}
```