Skip to content
Last updated

About data protection

Defense in depth

Paradise Pay applies multiple layers of encryption and access control to protect payment data throughout its lifecycle.

image

Encryption in transit

All communication withReefpay is encrypted using TLS (Transport Layer Security).

RequirementDetails
ProtocolTLS 1.2 or higher
EnforcementHTTP requests are rejected; only HTTPS is accepted
CertificateIssued by a trusted Certificate Authority (CA)
Cipher suitesStrong ciphers only; weak or deprecated ciphers are disabled

What this means for integrators

  • Always use https:// for all API requests to api.sandbox.paradisegateway.net (sandbox) and the production endpoint.
  • Verify TLS certificates in your HTTP client — do not disable certificate validation.

Encryption at rest

Sensitive payment data stored in the token vault is encrypted using AES-256 in CBC mode.

ComponentEncryption method
Card PANsAES-256 CBC
Bank account numbersAES-256 CBC
Routing numbersAES-256 CBC
CVV valuesNot stored (used for authorization only, then discarded)
Encryption keysManaged in a dedicated key management system, rotated on schedule

Key management

  • Encryption keys are stored separately from the encrypted data.
  • Keys are rotated on a defined schedule in compliance with PCI-DSS key management requirements.
  • Key access is restricted to authorized processes only — no human access to production encryption keys.
  • Key rotation is transparent to integrators and does not require any changes to your integration.

Write-only sensitive fields

The API enforces a strict write-only policy for sensitive payment data. Fields like PAN, CVV, account number, and routing number are accepted in requests but are never returned in any API response.

FieldAccepted in requestsReturned in responses
pan (card number)YesNo — last_four and bin returned instead
cvvYesNo — cvv_result code returned instead
expiry.month / expiry.yearYesNo (for inline cards); Yes (for stored tokens)
cardholder_nameYesNo
account_numberYesNo — last_four returned instead
routing_numberYesNo

This design ensures that even if API response logs are compromised, no usable cardholder data is exposed.

Data isolation

Paradise Pay operates a multi-tenant architecture with strict data isolation between merchants.

Isolation layerImplementation
Token scopingTokens are bound to a specific merchant MID and cannot be used across merchants
Encryption key isolationPer-merchant encryption keys prevent cross-tenant data access
API key scopingAPI keys authenticate to a specific merchant or reseller account
Query filteringAll data queries are automatically scoped to the authenticated merchant

What data you should protect

Even thoughReefpay handles the most sensitive payment data, integrators are responsible for protecting data in their own environment.

Data to protect

DataProtection
API keysStore in a secrets manager (not source code, config files, or client-side code)
Payment tokensStore securely, but no PCI-level controls required
Transaction IDsLog for reconciliation; no sensitivity concerns
correlation_id valuesLog for debugging and support requests
Customer PII (name, email, address)Protect per your privacy policy and applicable regulations

Data you should never store

DataReason
Full card numbers (PAN)PCI-DSS violation if stored without full compliance
CVV / CVC / CIDPCI-DSS prohibits storage of CVV after authorization, even if encrypted
Raw bank account or routing numbersUnnecessary risk — use tokens instead
API response bodies containing sensitive dataThe API does not return sensitive data, but verify your logging does not capture request bodies containing PANs
Log hygiene

Audit your application logs to confirm that request bodies containing raw card data are masked or excluded. Log the correlation_id and transaction ID instead.

Security headers

Paradise Pay API responses include standard security headers.

HeaderPurpose
Strict-Transport-SecurityEnforces HTTPS for future requests
X-Content-Type-OptionsPrevents MIME type sniffing
X-Frame-OptionsPrevents clickjacking via iFrame embedding

Further reading