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

# Error codes

When something fails, J Tools shows a short message and sometimes a code like `AFF_WITHDRAW_MIN`. This page explains the codes you are most likely to see and what to do about each one.

Affiliate codes carry an `AFF_` prefix and live under [Affiliate](#affiliate). Everything else is a tool or transaction message, sorted by where it comes from: [Swaps and trading](#swaps-and-trading), [Wallets and transfers](#wallets-and-transfers), [Transactions and signing](#transactions-and-signing), and [General and other](#general-and-other). If you only see a plain message with no code, the "If something goes wrong" section on the tool's own page usually covers it too.

J Tools is non-custodial, so anything that begins in your wallet ends in your wallet. Nothing moves until you sign.

## Affiliate

These show up around the [affiliate panel](/affiliate/overview.md): registering, requesting a withdrawal, or getting credited for a referral.

### Account and access

| Code                     | What it means                                                                                               | How to fix                                                                                                                                         |
| ------------------------ | ----------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| `AFF_NOT_FOUND`          | No affiliate account is tied to this wallet.                                                                | Register as a partner first, or reconnect the wallet that owns the partner account. See [How the affiliate program works](/affiliate/overview.md). |
| `AFF_BANNED`             | The partner account is banned, so the panel is closed to it. You may see a generic "Access denied" instead. | [Contact support](/help-and-security/support.md). A banned partner cannot use the panel, request a withdrawal, or earn new commissions.            |
| `AFF_ALREADY_REGISTERED` | This wallet is already a partner.                                                                           | Sign in with the existing wallet instead of registering again.                                                                                     |
| `AFF_WALLET_REQUIRED`    | The wallet address is missing or not a valid Solana address.                                                | Connect a wallet, or enter a valid Solana address (roughly 32 to 44 base58 characters).                                                            |

### Withdrawals

| Code                       | What it means                                                        | How to fix                                                                                     |
| -------------------------- | -------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- |
| `AFF_WITHDRAW_MIN`         | The amount is below the withdrawal minimum.                          | Request at least the minimum shown in the panel. See [Withdrawals](/affiliate/withdrawals.md). |
| `AFF_WITHDRAW_MAX`         | The amount is more than your available balance.                      | Lower it to your current withdrawable balance or less.                                         |
| `AFF_INSUFFICIENT_BALANCE` | Your balance is too low for this request.                            | Wait for more confirmed commissions to land, then try again.                                   |
| `AFF_SOCIAL_REQUIRED`      | No social link is on file, and at least one is required to withdraw. | Add a Telegram, X, or YouTube link on the Social Media page, then retry.                       |
| `AFF_WITHDRAW_PENDING`     | You already have a withdrawal request waiting.                       | Wait until it is paid or rejected. Only one request can be open at a time.                     |
| `AFF_WITHDRAW_REJECTED`    | An admin rejected the request, with a reason attached.               | Read the reason shown next to the request, fix the issue, then submit a new withdrawal.        |

### Referral attribution

| Code                     | What it means                                                                             | How to fix                                                                                              |
| ------------------------ | ----------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- |
| `AFF_REF_INVALID`        | The referral code is unknown or mistyped.                                                 | Use a current link in the form `https://j.tools/?ref=CODE`. The code may belong to a removed partner.   |
| `AFF_ATTRIBUTION_DENIED` | The referral could not be recorded. Usually no code is present, or the partner is banned. | Arrive through a valid, active referral link before you connect your wallet. See How attribution works. |
| `AFF_RATE_LIMITED`       | Too many requests hit the public endpoints in a short window (HTTP 429).                  | Wait a moment and try again. This limit keeps public endpoints safe from abuse.                         |

{% hint style="warning" %}
Referral credit binds to a wallet the first time it connects through a link, and it stays with that first partner only. If you connected before clicking a link, the wallet stays unattributed. Read How attribution works before you expect a commission.
{% endhint %}

## Swaps and trading

These come up when you are swapping or moving a token you hold.

| Message                    | What it means                                                         | How to fix                                                           |
| -------------------------- | --------------------------------------------------------------------- | -------------------------------------------------------------------- |
| Insufficient token balance | You are trying to send or swap more of a token than the wallet holds. | Lower the amount to what you actually hold, or pick the right token. |

## Wallets and transfers

Most of these start in your wallet, when it is not connected, points at the wrong place, or the address you entered is off.

| Message                              | What it means                                                                                   | How to fix                                                                                    |
| ------------------------------------ | ----------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- |
| Wallet rejected / signature declined | You closed the wallet popup, or it timed out before you approved.                               | Reconnect and sign again. Nothing was sent.                                                   |
| No wallet connected                  | The tool needs a connected wallet before it can build a transaction.                            | Connect a wallet first. See [Connect your wallet](/getting-started/quick-start.md).           |
| Wallet not selected                  | A wallet was chosen but the connection did not finish.                                          | Click connect again, then pick the wallet from the list. If it sticks, refresh the page once. |
| Wrong network                        | The wallet is pointed at a different cluster than the tool expects.                             | Switch the wallet to Solana mainnet, then retry.                                              |
| Caution banner in your wallet        | On multi-step actions this banner is expected behavior, not a sign of a bad transaction.        | Read the note below, then approve if the details match what you set up.                       |
| Invalid wallet address               | A recipient or wallet field is not a valid Solana address (roughly 32 to 44 base58 characters). | Re-paste the full address. Watch for trailing spaces or a cut-off copy.                       |

{% hint style="info" %}
**About wallet warnings.** Some tools sign more than one thing in a single step, for example creating a token and its metadata together. Phantom can show a caution banner for these multi-step transactions. The banner is expected here and does not mean something is wrong. Read what you are signing, then approve.
{% endhint %}

## Transactions and signing

These appear once a transaction is being built or broadcast: funding it, reaching the network, or passing the tool's checks.

### Balance and funds

| Message              | What it means                                                                                                | How to fix                                                   |
| -------------------- | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------ |
| Insufficient balance | You do not have enough SOL to cover the network fee, the platform fee, and any account rent for this action. | Top up the wallet, then retry. See the fee disclaimer below. |
| Not enough for rent  | New mint and metadata accounts need a small rent deposit on top of the fees.                                 | Add a little more SOL and run it again.                      |

{% hint style="warning" %}
**About fees.** Every action has two costs: the Solana **network fee** paid to validators, and the **J Tools platform fee**. The platform fee always shows in the app before you confirm, and nothing is charged until you sign. Fees can change over time, so trust the in-app summary rather than a number you saw once.
{% endhint %}

### Network and RPC

| Message                               | What it means                                                                   | How to fix                                                                                                             |
| ------------------------------------- | ------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
| Transaction expired                   | The network was busy and the blockhash aged out before the transaction landed.  | Submit again. Nothing was charged for the expired attempt.                                                             |
| Network error, please try again later | A temporary problem reaching Solana, often a slow or rate-limited RPC.          | Wait a few seconds and retry. If it keeps happening, switch networks (for example off a strict VPN) and try once more. |
| Too many requests                     | A public endpoint saw too many calls in a short window (HTTP 429).              | Pause for a moment, then try again. The limit keeps shared endpoints healthy.                                          |
| Transaction failed to confirm         | The transaction was sent but the network never returned a final result in time. | Check the wallet or an explorer before resending, so you do not run it twice.                                          |

### Validation

| Message                               | What it means                                                                     | How to fix                                                                              |
| ------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- |
| Invalid mint address                  | The token address is malformed or not a real mint.                                | Paste it again, or pick the token with the selector instead of typing it.               |
| Missing required field                | A field the tool needs was left blank.                                            | The form highlights what to fill in. Complete it and submit again.                      |
| Amount out of range                   | The value is below the minimum or above the maximum the tool allows.              | Enter a value inside the range shown next to the field.                                 |
| Please check your input and try again | The form failed validation and the tool is keeping the detail generic for safety. | Review the highlighted fields. If nothing looks wrong, refresh and re-enter the values. |

## General and other

A few API responses carry a short string code instead of a themed message. These are intentionally broad so they do not leak server detail.

| Code                   | What it means                                               | How to fix                                                                           |
| ---------------------- | ----------------------------------------------------------- | ------------------------------------------------------------------------------------ |
| `VALIDATION_ERROR`     | One or more inputs failed a server-side check.              | Fix the highlighted fields and resubmit. Same idea as the validation messages above. |
| `RATE_LIMITED`         | You hit the request limit on a shared endpoint (HTTP 429).  | Wait a short while, then retry.                                                      |
| `UNAUTHORIZED`         | Your session is missing or expired.                         | Sign in or reconnect, then repeat the action.                                        |
| `NOT_FOUND`            | The thing you asked for is not available, or never existed. | Double-check the link or identifier you used.                                        |
| `Something went wrong` | An unexpected error the tool could not classify.            | Retry once. If it returns, send support the exact wording and what you were doing.   |

## Still stuck?

The message in the app is always the source of truth. If a code is not listed here, or the wording differs, or the fix above did not clear it, follow the app and reach out. Send us the exact message you saw, the tool you were on, and what you were doing right before. That is usually enough for us to pinpoint it fast.

{% content-ref url="/pages/7qm8XmJ5XlslvBFxwNfE" %}
[Support](/help-and-security/support.md)
{% endcontent-ref %}

{% content-ref url="/pages/HfYyIOgWatge2th4v1Sb" %}
[Fee schedule](/reference/fee-schedule.md)
{% endcontent-ref %}

{% hint style="success" %}
**J Tools is non-custodial.** We never hold your private keys and never ask for them. Every transaction is built in your browser and signed by your own wallet. If any page ever asks you to paste a private key, stop, close it, and let us know.
{% endhint %}


---

# 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, and the optional `goal` query parameter:

```
GET https://docs.j.tools/reference/error-codes.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
