Error codes
Every non-2xx response carries a detail field plus a stable code starting with L4B-. Use the code — not the HTTP status alone — to branch behaviour, since a single HTTP status covers multiple root causes.
Error table
| HTTP | L4B code | Meaning | How to fix |
|---|---|---|---|
| 400 | L4B-001 | Invalid request body / missing required field. | Check the params table for the endpoint and re-send. |
| 401 | L4B-101 | Missing X-API-Key header. | Include the header on every request. |
| 401 | L4B-102 | Invalid or revoked API key. | Rotate via /developer/dashboard or grab a fresh sandbox key. |
| 402 | L4B-201 | Plan does not include this API. | Upgrade to the min plan shown in the endpoint's docs page. |
| 403 | L4B-301 | This API is disabled on your key. | Toggle it on via `POST /developers/apis/toggle` or the dashboard. |
| 404 | L4B-401 | Resource / endpoint not found. | Verify the URL path and version prefix (`/v1/`). |
| 422 | L4B-421 | Payload passed shape validation but failed business rules. | Check the response body for `detail` — it names the offending field. |
| 429 | L4B-491 | Rate-limited (per-minute burst or monthly quota). | Backoff `Retry-After` seconds, or upgrade the plan. |
| 500 | L4B-901 | Unexpected server error. | Retry with idempotency. Persistent 5xx? File a ticket with the response body. |
| 503 | L4B-902 | Downstream provider degraded. | Check /developer/status for the affected provider. |
Contact support
If the fix column didn't unblock you, file a ticket with the endpoint, request payload, and full response body. Support SLAs graduate by plan — Free: 72 hours, Starter: 24 hours, Growth: 12 hours, Enterprise: 2 hours.
How to handle LOAN4BANK API errors gracefully
Every non-2xx response from the LOAN4BANK API includes both a standard HTTP status code and a stable `L4B-XXX` code inside the response body. The HTTP status tells you the class of problem (400 for validation, 401 for authentication, 402 for plan gate, 403 for permission, 404 for missing resource, 409 for a conflict, 422 for a semantically valid but rejected payload, 429 for rate limiting and 5xx for platform issues). The `L4B-XXX` code is what your integration should branch on, because a single HTTP status often maps to many different root causes — for example, three different `L4B` codes can each return 400 with a different remediation.
For production-grade robustness, always retry idempotent requests on 429 and 5xx responses using exponential backoff with jitter, honouring the `Retry-After` header when present. Never retry a 4xx response other than 408 and 429 — you'll only trip circuit breakers on your side. Log the request id from the `X-Request-Id` response header on every failure; our support team can pull the full server-side trace with just that id, so tickets close in minutes instead of hours.
Webhooks add a second failure surface. Any 4xx or 5xx you return from your endpoint puts the delivery into our retry queue (5 attempts over 24 hours with exponential backoff). If your handler is temporarily degraded, return 503 explicitly so we back off aggressively; if the payload is genuinely bad, return 422 so we mark the delivery as permanently failed and surface the reason on your dashboard. Always verify the `X-L4B-Signature` header before parsing the body — a signature mismatch is code `L4B-WBHK-401` and should never be treated as a transient problem.
Frequently asked questions
What is the difference between HTTP status and L4B error code?
Which LOAN4BANK API errors are safe to retry?
How do I contact support about a specific API error?
What is the LOAN4BANK API rate limit?
How do webhook retries and error codes work?
Still stuck? Every error row on this page carries a fix column with the concrete steps to resolve it. If your case doesn't match any row, file a ticket with the X-Request-Id and we'll take it from there.