ValidateNow
Log inGet the app
Security

Built so codes can’t be forged.

Signed codes

Each QR code contains a random 96-bit identifier and an HMAC-SHA256 signature made with a secret key that never leaves our servers. Altered or invented codes fail the signature check instantly.

Clone detection

Copying a genuine code is possible — so single-use batches record who scanned a code first. When a different person scans the same code, the scan is flagged as a likely clone and the brand is alerted with the location.

Server-side verdicts

Apps and browsers only display results. Every authentic, counterfeit, recalled or expired verdict is decided by our servers, so a tampered app can’t fake a result for anyone else.

Accounts and sign-in

  • Manufacturer and staff accounts are protected by two-step verification with an authenticator app, with one-time recovery codes as a backup.
  • Passwords are hashed with bcrypt; sessions can be revoked from any device.
  • Manufacturer API keys are stored as hashes and shown only once.
  • Every admin and manufacturer action that changes data is written to an audit log.

Data in transit and at rest

  • Every connection uses TLS, and HSTS tells browsers never to connect to us without it.
  • Company registration documents are kept in private storage — only the company’s own team and ValidateNow reviewers can open them, through signed, authenticated links.
  • Card details are handled by Paystack, Flutterwave and Monnify — we never see your card number.

Integrations

Webhooks to brands’ systems are signed with HMAC-SHA256 and a timestamp, so receivers can reject forged or replayed events. See the developer docs for how to verify them.

Audits

We run regular security reviews and third-party penetration tests, monitor for dependency vulnerabilities, and fix critical issues as a priority.

Report a vulnerability

Email security@validatenow.app. We respond within two business days.