> For the complete documentation index, see [llms.txt](https://docs.neox.vn/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.neox.vn/docs/global/global-collections/integration/error-codes.md).

# Error Codes

Every Global Collections API response carries a `code` and a `message`. The `code` indicates the processing result; the `message` carries a human-readable description.

## Response codes

| Code | Status     | Description                                                     |
| ---- | ---------- | --------------------------------------------------------------- |
| 1    | SUCCESS    | The request was processed successfully.                         |
| 2    | FAILED     | An error occurred during processing. See `message` for details. |
| 99   | PROCESSING | The request was accepted and is being processed asynchronously. |

> Many Global Collections operations are **asynchronous**. A `code` of `1` or `99` on a create/initiate request means the request was *accepted* — the final outcome is delivered later via a webhook (see [Event Notification](/docs/global/global-collections/integration/event-notification.md)) or can be polled with the matching query endpoint.

## Common failure reasons

When `code = 2`, the `message` field describes the cause. Frequently seen reasons:

| Reason                        | Description                                                          |
| ----------------------------- | -------------------------------------------------------------------- |
| INVALID\_TOKEN                | The Bearer token is missing, expired, or invalid.                    |
| DUPLICATE\_REQUEST\_ID        | The `requestId` was already used for a different operation.          |
| VALIDATION\_ERROR             | A request field failed validation (type, length, enum, regex).       |
| RESOURCE\_NOT\_FOUND          | The referenced resource ID does not exist.                           |
| SUB\_MERCHANT\_NOT\_ACTIVATED | The sub-merchant is not yet onboarded / activated.                   |
| MATERIAL\_REQUIRED            | Supplementary KYC / payer / funds-nature material must be submitted. |
| INSUFFICIENT\_BALANCE         | The account balance is insufficient for the requested payout.        |
| FX\_TOKEN\_EXPIRED            | The FX / payout inquiry token has expired; request a new quote.      |

## Asynchronous status values

Resource-level status enums (for example virtual account, collection order, payout, FX order, sub-merchant) are documented in each endpoint's response table and in the relevant webhook document. They are distinct from the response `code` above.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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://docs.neox.vn/docs/global/global-collections/integration/error-codes.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.
