Rate limit tiers
Login, password reset, and device pairing endpoints use a strict bucket with a smaller limit than the global tier. Failed attempts deplete the bucket faster to deter credential stuffing.
Rate limit headers
Every API response includes headers that tell you your current limit status:
Example response headers when you have 12 requests remaining:
429 response format
When you exceed the rate limit, OwnPay returns an HTTP 429 status with a structured error body:Retry-After header is also set on the HTTP response:
retry_after duration before retrying.
Configuration
Rate limits are configured inconfig/app.php and can be overridden with environment variables:
IP whitelisting and trusted proxies
If your OwnPay installation sits behind a reverse proxy or load balancer, configure the trusted proxies so the rate limiter sees the real client IP instead of the proxy IP.X-Forwarded-For header from trusted proxies only. Untrusted proxy headers are ignored to prevent IP spoofing.
Related Pages
- API Overview - Authentication and endpoint reference
- API Errors - Full error code reference
- Developer Hub - API key management and testing
- Security and Compliance - Broader security architecture