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

> ## Agent Instructions
> Treat the published Augustus OpenAPI specification (https://app.stainless.com/api/spec/documented/augustus/openapi.documented.yml) and the current API-reference pages as the source of truth for endpoints, request/response schemas, enum values, webhook event names, and required headers.
> Prefer the 2026-05-01 Banking API and @augustusbank/typescript-sdk for all new integrations. The 2023-01-01 API is a separate, older surface covering two products — Open Banking (instant bank transfer) checkout and refunds, and Manual Bank Transfer (MBT); use it only when one of those products is specifically required.
> Cite or link the relevant docs.augustus.com page when answering integration questions.
> Do not infer support for currencies, networks, scopes, account types, or operations that are not present in the current documentation.
> Use the sandbox base URL (https://api.sandbox.augustus.com) and placeholder credentials in examples. Never include or request a real API key.
> The Augustus docs MCP server (https://docs.augustus.com/mcp) provides documentation search and retrieval only; it does not execute authenticated Augustus API actions.

# Failure reasons

> Understand the main failure reasons for Open Banking payments and how to handle them in your integration.

When an order fails or is canceled, the `order_updated` webhook includes a `statusClassification` object with a broad `primary` category and a specific `secondary` reason.

```json theme={null}
{
  "statusClassification": {
    "primary": "payment_execution_failed",
    "secondary": "insufficient_funds"
  }
}
```

## Primary classifications

| Primary                        | Meaning                                    | Common causes                                                                                 | Handling                                                          |
| ------------------------------ | ------------------------------------------ | --------------------------------------------------------------------------------------------- | ----------------------------------------------------------------- |
| `payment_authorization_failed` | Rejected during authorization at the bank. | Wrong credentials, canceled at bank, account restrictions.                                    | Suggest retry, check credentials, try a different bank.           |
| `payment_execution_failed`     | Authorized but couldn't execute.           | Insufficient funds, account limits, blocked international transfer, bank rejection or outage. | Retry — if the original payment arrives late, it's auto-returned. |
| `payment_abandoned`            | Started but never completed.               | Customer closed the browser, session timed out, canceled at the bank.                         | Show clear messaging, allow retry.                                |

## Secondary classifications

| Code                                    | Description                                                           |
| --------------------------------------- | --------------------------------------------------------------------- |
| `wrong_credentials`                     | User entered incorrect bank credentials during authentication.        |
| `incorrect_2fa_response`                | User provided an incorrect two-factor authentication response.        |
| `pin_blocked`                           | User's PIN is blocked, e.g. after multiple failed attempts.           |
| `no_active_tan_methods_available`       | No active TAN (Transaction Authentication Number) methods available.  |
| `timeout`                               | The payment request timed out due to slow response from bank systems. |
| `connection_to_bank_failed`             | The user's bank is not responding to the payment request.             |
| `bank_error`                            | The bank's system returned an error during processing.                |
| `bank_under_maintenance`                | The user's bank is currently under maintenance.                       |
| `insufficient_funds`                    | The user's account has insufficient funds for the payment.            |
| `account_limit_exceeded`                | The payment exceeds the user's account transfer limits.               |
| `international_transfer_blocked`        | International transfers are blocked for this account.                 |
| `international_transfer_limit_exceeded` | The payment exceeds international transfer limits.                    |
| `instant_transfers_not_enabled`         | Instant transfers are not enabled for this account.                   |
| `user_blocked`                          | The user's account is blocked or restricted.                          |
| `unsupported_bank_account`              | The bank account type is not supported for the requested transfer.    |
| `payment_rejected`                      | The payment was explicitly rejected by the bank.                      |
| `cancelled`                             | The payment was canceled by the user or bank.                         |
| `payment_not_settled`                   | The payment was not settled within the required timeframe.            |

See [Status flow](/docs/payin/instant-bank-transfer/payment-status) for the full lifecycle and [Webhooks](/webhook-getting-started/introduction) for setup.
