This page is about the inbound direction — controlling who can call the Points API as your merchant. It is unrelated to firewalling your webhook endpoint, which is covered in Security best practices.
How it works
The check runs after API-key authentication on every authenticated API request:
The Public Checkout endpoint (
POST /v1/orders/checkout/{publicKey}) is not affected by IP whitelisting — it is designed to be called from the customer’s browser, where the source IP is unpredictable.
Points may itself need to call its own API on your behalf (e.g. background jobs that touch shared infrastructure). Such server-internal calls automatically bypass your whitelist — you do not need to add any Points-side IPs to make them work.
Configure the whitelist
1
Sign in to the Business dashboard
Open business.papp.sa and sign in.
2
Open Settings → IP Whitelisting
The page lists every IP currently allowed for your merchant.
3
Add the IPs of every server that calls Points
Add the public egress IP of each backend service that hits the Points API on your behalf — production app servers, queue workers, scheduled jobs, etc. Add IPs before removing the old ones if you’re migrating infrastructure.
4
Verify from each environment
Make a test call from every environment after saving. A
403 means that environment’s egress IP isn’t on the list yet.Blocked-request response
When a request comes in from an IP that isn’t on the list, the API returns:403.
This is distinct from 400 Invalid or inactive API key — if you see the 403 above, your key is valid but the source IP is the problem.
Finding your egress IP
Your Points-bound traffic leaves your infrastructure from a public NAT/egress IP, which is usually different from your application server’s private address. To find it, run a request to an echo service from the same host that calls Points:Operational tips
Add new IPs before removing old ones
Add new IPs before removing old ones
During an infrastructure migration, add the new server’s IP first and confirm traffic is succeeding from it before removing the old IP. The whitelist is enforced immediately on save, so a wrong order causes a hard outage.
Document why each IP is on the list
Document why each IP is on the list
A bare list of IPs rots quickly. Keep a short internal note (in your runbook, ticket, or wiki) mapping each whitelisted IP to the service it represents, so a future engineer can prune safely.
Don't whitelist developer laptops in production
Don't whitelist developer laptops in production
Use the sandbox environment for development. Production whitelists should contain only stable server egress IPs.
Watch for 403 spikes after deploys
Watch for 403 spikes after deploys
A sudden spike in
403 Your IP address is not allowed after an infra change usually means the egress IP changed (new NAT, new region, new Kubernetes node pool, etc.). Treat it as a config drift signal.Rotate keys AND review IPs after a suspected breach
Rotate keys AND review IPs after a suspected breach
A leaked key is mostly defanged by IP whitelisting, but rotate the key anyway and audit the IP list for entries you don’t recognise.
Disabling the whitelist
Remove every entry and delete the whitelist record itself from the dashboard. Leaving an empty whitelist record in place blocks all external traffic — it does not revert to “no restriction”.Next steps
API keys
How keys are issued, used, and rotated.
Security best practices
TLS, webhook secrets, logging, and broader hardening guidance.

