Security
Security & Controls
Signed on the way in, logged all the way through
None of this is a badge in a footer. Each item below is a check that runs in code, on a request that has already reached us.
HMAC-SHA256 signature
Every request carries an X-Signature derived from your merchant secret, compared in constant time.
Timestamps that expire
X-Timestamp is mandatory and old signatures are rejected, so a captured request cannot be replayed.
API key per account
X-API-Key identifies the account making the call, separately from the secret that signs it.
IP whitelisting
Restrict which addresses may act for an account — applied to the API and the portal.
Role permissions, down to the action
Roles are defined per organization, with menu access and CRUD set independently.
Audit trail, kept separately
Logins, permission changes and significant actions are recorded apart from the money ledger.
Company-level endpoints
Some surfaces are restricted to the company tier — enforced server-side, not by hiding a menu.
Login protection
Login attempts are rate-limited, sessions can be revoked, and login history is kept.
Two-factor authentication
Available on the portal for an extra check at sign-in.
Slip verification
Checked against real bank records, and its hash is stored so the same slip cannot be used twice. Not OCR.
When one provider stops, the payment does not
A gateway that runs one channel fails whenever that channel does. AdeePay scores its channels continuously and moves away from the ones that are struggling.
Money never goes missing
Three independent confirmation layers make sure payment status reaches you, even if a webhook fails.
Layer 1 — Signed webhook
Delivered and retried until your server answers HTTP 200.
Layer 2 — Query API
Read the payin by its id any time — the stored status is authoritative.
Layer 3 — Slip fallback
The customer's slip is a third path that never touches your server.
