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

> ## Agent Instructions
> When building application code, use `@naturalpay/sdk` for TypeScript or `naturalpay` for Python.
> When searching Natural documentation, use the docs MCP at `https://docs.natural.com/mcp`.
> Use the Natural CLI for terminal and CI automation.
> Start integration development and testing in the sandbox. Do not use production unless the user explicitly requests it.
> For sandbox requests that require `customerPartyId`, list customers first. Reuse only the intended fixture; otherwise create a customer.
> REST and SDK amounts use integer minor units. Payments MCP amounts use decimal strings with a required currency code.

# Check

> Public error codes for Check API endpoints

All error responses follow the standard [error format](/api-reference/errors/error-handling).
Validation errors (422) and rate limit errors (429) apply to all endpoints and are documented in the [Error Handling guide](/api-reference/errors/error-handling).

| Code | Status | Detail |
| - | - | - |
| `check.cancel_failed` | 400 | Check stop-payment could not be confirmed with the bank. Contact support. |
| `check.delivery_method_invalid` | 400 | Select a supported check delivery method. |
| `check.memo_invalid` | 400 | Memo must be 1-40 printable characters. |
| `check.message_invalid` | 400 | Message must fit the printable character set and length limit. |
| `check.not_cancellable` | 400 | Check payment is not cancellable. |
| `check.recipient_address_incomplete` | 400 | Add a complete US mailing address with PATCH /external-parties/{externalPartyId}/address before creating a check. |
| `check.recipient_address_not_us` | 400 | Checks can only be mailed to a US address. |
| `check.rejected` | 400 | Check payment could not be initiated. |
| `external_party.archived` | 400 | External party is archived. |
| `external_party.screening_not_clear` | 400 | The external party has not cleared screening. |
| `invalid_pagination_cursor` | 400 | The page cursor is not valid. Start the list again. |
| `invalid_value` | 400 | The information you entered isn't valid. Please check it and try again. |
| `policy.denied` | 400 | Check payment was denied by policy. |
| `wallet.insufficient_balance` | 400 | Wallet has insufficient available balance. |
| `wallet.required` | 400 | Select a wallet for this check payment. |
| `unauthenticated` | 401 | Authentication is required. |
| `check.not_enabled` | 403 | Check payments are not enabled for this account. |
| `forbidden` | 403 | You do not have permission to perform this action. |
| `policy.forbidden` | 403 | Check payment is not allowed by policy. |
| `not_found` | 404 | The requested resource was not found. |
| `already_exists` | 409 | The resource already exists. |
| `check.cancel_in_progress` | 409 | The check is still being submitted; cancellation isn't available yet. Retry shortly. |
| `conflict` | 409 | The request conflicts with the current resource state. |
| `idempotency_key_reused` | 409 | This idempotency key was already used for a different request. Use a new key only for a genuinely new operation. |
| `idempotency_request_in_progress` | 409 | A request with this idempotency key is still processing. Retry the same request with the same key. |
| `rate_limited` | 429 | Too many requests. Please try again later. |
| `server_error` | 500 | Something went wrong. |
| `bad_gateway` | 502 | We couldn't complete that request because one of Natural's services returned an unexpected response. Please try again. |
| `service_unavailable` | 503 | The service is temporarily unavailable. |
| `wallet.balance_unavailable` | 503 | Wallet balance is temporarily unavailable. |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.