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

# Errors & Status Codes

> Error codes, status values, and recommended handling

## StatusCodes (enum)

Returned in responses (e.g. approval, trade) for programmatic handling:

```typescript theme={null}
import { StatusCodes } from "@dzapio/sdk";

StatusCodes.UserRejectedRequest;   // 4001 - User rejected in wallet
StatusCodes.Success;                // 200
StatusCodes.FunctionNotFound;      // 32771 - 0x8003
StatusCodes.Error;                  // 500
StatusCodes.WalletRPCFailure;      // 429
StatusCodes.SimulationFailure;     // 417
StatusCodes.ContractExecutionError; // -500
```

## Trade failure actions (contractErrorActions)

When `trade()` fails, check `result.action` and handle accordingly:

| Action               | Meaning                  | Suggested handling                                                                        |
| -------------------- | ------------------------ | ----------------------------------------------------------------------------------------- |
| `TRY_ANOTHER_ROUTE`  | Recommended route failed | Rebuild `data` with `protocol: bestReturnSource` from the quote and call `trade()` again. |
| `INCREASE_SLIPPAGE`  | Slippage too low         | Ask user to increase slippage and retry.                                                  |
| `INCREASE_ALLOWANCE` | Allowance insufficient   | Re-run allowance/approval flow and retry.                                                 |

Example:

```typescript theme={null}
if (result.status !== TxnStatus.success && result.action === "TRY_ANOTHER_ROUTE") {
  const fallbackData = request.data.map((d, i) => {
    const pairKey = Object.keys(quotes)[i];
    const fallbackSource = quotes[pairKey]?.bestReturnSource;
    return fallbackSource ? { ...d, protocol: fallbackSource } : d;
  });
  result = await dZap.trade({ request: { ...request, data: fallbackData }, signer });
}
```

## DZapTransactionResponse

The `trade()` response shape:

```typescript theme={null}
type DZapTransactionResponse = {
  status: TxnStatus;
  errorMsg?: string;
  code: StatusCodes | number;
  action?: "TRY_ANOTHER_ROUTE" | "INCREASE_SLIPPAGE" | "INCREASE_ALLOWANCE";
  txnHash?: HexString;
  error?: unknown;
  additionalInfo?: Record<string, unknown>;
  updatedQuotes?: Record<string, string>;
};
```

Always check `status === TxnStatus.success` before using `txnHash`. Use `errorMsg` for user-facing messages.

## Next steps

* [Enums reference](/sdk/reference/enums) - Services, TxnStatus, ApprovalModes
* [Execute trade](/sdk/trade/execute-trade) - Error handling and TRY\_ANOTHER\_ROUTE retry
