> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kashimi.tech/llms.txt
> Use this file to discover all available pages before exploring further.

# Payment status

Upon submitting a payment initiation request, the status may be set to one of the following values:

* **`PENDING`** – The request is still being processed. It has not yet been fully validated or accepted by the Institution.
* **`COMPLETED`** – The request has passed all validation checks and was accepted by the Institution.
* **`FAILED`** – The Institution has rejected the request. The payment will not be processed further.
* **`UNKNOWN`** *(rare)* – The system could not determine.
  <img src="https://mintcdn.com/kashimi-8bd54f89/F-EFkCdvoK-JvLEm/images/status-flow.png?fit=max&auto=format&n=F-EFkCdvoK-JvLEm&q=85&s=89e34d416957c21e28495f2f833cb998" alt="Payment status flow" width="500" noZoom className="rounded-lg" data-path="images/status-flow.png" />

### Example Response from [Get latest payment status](/api-reference/endpoint/latestPaymentStatus) Endpoint

```json theme={null}
{
  "id": "e68eee70-bfe9-4885-8650-46ec7d017458",
  "paymentId": "123e4567-e89b-12d3-a456-426614174000",
  "status": "PENDING",
  "detailedStatus": "AIS_PSU_CONSENT_RECEIVED",
  "failureReasons": ["INSUFFICIENT_FUNDS"],
  "createdAt": "2023-10-01T12:00:00Z"
}
```

### Status Fields

| <div align="left">**Field**</div> | <div align="left">**Type**</div> | <div align="center">**Required**</div> | <div align="left">**Description**</div>                                                                          |
| --------------------------------- | -------------------------------- | -------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
| `id`                              | string                           | <div align="center">✓</div>            | Unique identifier for this status (UUID format)                                                                  |
| `paymentId`                       | string                           | <div align="center">✓</div>            | The Kashimi payment ID that this status update relates to (UUID format)                                          |
| `status`                          | string                           | <div align="center">✓</div>            | The new payment status: PENDING, COMPLETED, FAILED, or UNKNOWN                                                   |
| `detailedStatus`                  | string                           | <div align="center">✓</div>            | Granular status within the payment lifecycle. See [Detailed Status Reference](/api-reference/detailed_statuses). |
| `failureReasons`                  | Array                            | <div align="center">✓</div>            | Array of failure reasons populated **only when** the payment `status` is `FAILED`.                               |
| `createdAt`                       | string                           | <div align="center">✓</div>            | ISO 8601 timestamp when the status change occurred                                                               |

<Tip>
  To understand the status of a payment in more detail, you can obtain a
  granular Kashimi payment status by calling the [Get latest payment
  status](/api-reference/endpoint/latestPaymentStatus) endpoint. In the case of
  `FAILED` payments, the endpoint might also return `failureReasons`.
  Additionally, the response includes a `detailedStatus` field that provides
  deeper insight into the current state of the payment within its lifecycle,
  regardless of whether it has failed or not.
</Tip>

| Failure Reason                            | Meaning                                                                                   |
| :---------------------------------------- | :---------------------------------------------------------------------------------------- |
| `UNKNOWN_ERROR`                           | An unspecified error occurred. The exact cause could not be determined.                   |
| `INTERNAL_TECHNICAL_ERROR`                | An unexpected technical issue occurred within Kashimi’s system.                           |
| `PAYMENT_EXPIRED`                         | The payment was not completed within the allowed time window and has expired.             |
| `SENDER_CREDENTIALS_INVALID`              | The sender’s banking credentials were invalid or rejected by the bank.                    |
| `REMITTANCE_INFORMATION_INVALID`          | The remittance information provided is not valid or not accepted by the bank.             |
| `SENDER_ACCOUNT_INVALID`                  | The sender’s account number or details are invalid or not supported.                      |
| `RECIPIENT_ACCOUNT_INVALID`               | The recipient’s account number is incorrect or unsupported.                               |
| `RECIPIENT_NAME_INVALID`                  | The recipient’s name is invalid or does not match the expected format.                    |
| `CURRENCY_INVALID`                        | The specified currency is not supported for this payment.                                 |
| `AMOUNT_EXCEEDS_AVAILABLE_FUNDS`          | The sender’s account does not have sufficient funds to complete the payment.              |
| `AMOUNT_EXCEEDS_DAILY_LIMIT`              | The payment amount exceeds the daily limit set by the bank or sender.                     |
| `AMOUNT_EXCEEDS_MONTHLY_LIMIT`            | The payment amount exceeds the monthly limit set by the bank or sender.                   |
| `AMOUNT_EXCEEDS_LIMIT`                    | The payment amount exceeds a single-transaction limit set by the bank.                    |
| `PROVIDER_AGREEMENT_MISSING`              | The bank does not have a valid agreement to process payments for this sender or account.  |
| `SENDER_BLOCKED`                          | The sender’s account or profile has been blocked by the bank.                             |
| `SENDER_RIGHTS_MISSING`                   | The sender does not have the necessary rights to initiate this payment.                   |
| `SENDER_ACCOUNT_BLOCKED`                  | The specific sender account used for this payment has been blocked.                       |
| `PAYMENT_ABORTED_BY_SENDER`               | The sender cancelled the payment during the authorisation flow.                           |
| `PAYMENT_ABORTED_BY_PROVIDER`             | The bank or provider rejected or cancelled the payment.                                   |
| `SENDER_AUTHORIZATION_NOT_GRANTED`        | The sender did not grant the required authorisation to proceed with the payment.          |
| `ACCOUNT_INFORMATION_CONSENT_NOT_GRANTED` | The sender did not grant consent to access account information required for this payment. |
| `PAYMENT_CONSENT_INCOMPLETE`              | The payment consent flow was started but not completed by the sender.                     |
| `PAYMENT_CONSENT_NOT_GRANTED`             | The sender did not grant consent for the payment.                                         |
| `PROVIDER_SYSTEM_MAINTENANCE`             | The bank’s system is temporarily unavailable due to scheduled maintenance.                |
| `PROVIDER_TECHNICAL_ERROR`                | An unexpected technical issue occurred on the bank’s side.                                |
| `MTLS_CERTIFICATE_INVALID`                | The mutual TLS client certificate is invalid or not accepted by the bank.                 |
| `SIGNATURE_CERTIFICATE_INVALID`           | The signing certificate (QSealC) is invalid or not accepted by the bank.                  |

## UNKNOWN Status

The `UNKNOWN` status is a fallback that occurs when Kashimi receives a response from the bank that does not map to any expected status. This is not a permanent terminal state.

**How to handle it:** Do not treat `UNKNOWN` as equivalent to `FAILED`. Instead:

* Continue polling the [Get latest payment status](/api-reference/endpoint/latestPaymentStatus) endpoint — the status may update as the bank resolves the response.
* If the status remains `UNKNOWN` for an extended period, contact Kashimi support to investigate.

<Warning>
  Do not stop the payment flow or mark a payment as failed solely because the status is `UNKNOWN`. Await a status update or contact support.
</Warning>

***

## Webhooks

Kashimi supports webhooks to notify you about payment status changes. For detailed information about implementing webhooks, including security, payload structure, and code examples, see the [Webhooks documentation](/api-reference/webhooks).
