# Gateway error codes

Gateway error codes are HTTP status codes generated by the proxy gateway rather than by the destination website, signalling that a request could not be forwarded: missing or wrong credentials, an invalid targeting parameter, an empty balance, a blocked destination, or no exit available for the requested location. Telling them apart from destination errors is the first step of any troubleshooting, because the fix is on your side of the gateway.


## Codes at ProxShift

| Status | Code | Meaning | What to change |
| --- | --- | --- | --- |
| 407 | invalid_credentials | Username or password rejected | Check the credential pair, or whitelist the source IP |
| 400 | invalid_parameter | A username parameter is unknown or malformed | Fix the key or value (-cc-, -city-, -ttl-…) |
| 402 | insufficient_balance | No traffic or balance left | Top up |
| 403 | blocked_destination | Port or destination not allowed | Port 25, UDP and IPv6-only targets are refused |
| 502 | no_exit_available / exit_failed | No exit matches, or the exit failed before the target | Widen the location; retry once |
| 504 | target_timeout | The destination did not answer in time | Retry; check the target itself |


## Gateway or destination?

Gateway errors carry a `Proxy-Agent` style body from the gateway; destination errors carry the website's own page. A 403 with the target's branding is a block by the site; a 403 `blocked_destination` is the gateway refusing the port.


## How it works at ProxShift

ProxShift never returns 429 from the gateway; rate limits only ever come from the destination. Every code above is documented with its body on the errors page.

Source: https://proxshift.com/glossary/gateway-errors
