Security Overview
Reevit is built with security as a foundational principle. As a payment orchestration platform handling sensitive financial data, we employ industry-standard security practices to protect your data and your customersβ information.π Data Encryption
Encryption in Transit
All data transmitted to and from Reevit is encrypted using TLS 1.3 (Transport Layer Security). This ensures that:- All API communications use HTTPS with modern cipher suites
- Webhook deliveries are encrypted end-to-end
- No sensitive data is ever transmitted in plain text
Encryption at Rest
Sensitive data stored by Reevit is encrypted using AES-256-GCM:| Operation | Latency | Memory | Allocations |
|---|---|---|---|
| Encrypt | ~957 ns/op | 1.7 KB | 8 allocs |
| Decrypt | ~647 ns/op | 1.5 KB | 5 allocs |
| Round Trip | ~1.5 ΞΌs/op | 3.2 KB | 13 allocs |
- PSP Credentials: API keys, secrets, and tokens are encrypted before storage
- Payment Metadata: Customer PII is encrypted at rest
- Database Encryption: All database volumes use full-disk encryption
Performance: AES-256-GCM encryption adds minimal latency (~1.5ΞΌs) to credential operations, ensuring security without impacting payment processing speed.
π Credential Management (BYOK)
Reevit operates on a Bring Your Own Key (BYOK) model. Your payment provider credentials are:- Never shared with other organizations
- Encrypted at rest using AES-256
- Accessed only during payment processing
- Never logged in plain text
Credential Storage
When you create a Connection, your credentials are:- Transmitted over TLS to Reevit
- Encrypted immediately upon receipt using your organizationβs encryption key
- Stored in a dedicated secrets vault with hardware security module (HSM) protection
- Decrypted only when processing payments for your organization
Supported Credential Formats
| Provider | Required Credentials |
|---|---|
| Paystack | secret_key |
| Hubtel | client_id, client_secret, merchant_account |
| Flutterwave | secret_key |
| Monnify | apiKey, contractCode |
| M-Pesa | consumer_key, consumer_secret, passkey, short_code |
| Stripe | secret_key (or sk_live, sk_test) |
Credential Aliases: Reevit accepts multiple key names for flexibility (e.g.,
secretKey or secret_key for Paystack).π‘οΈ Webhook Security
Reevit verifies all incoming webhooks from payment providers to prevent spoofing attacks.Signature Verification
Each provider uses its own signature mechanism:| Provider | Verification Method | Algorithm |
|---|---|---|
| Paystack | HMAC-SHA512 signature in x-paystack-signature header | SHA-512 |
| Hubtel | HMAC-SHA256 signature in hubtel-signature header | SHA-256 |
| Flutterwave | HMAC-SHA256 signature in verifier-hash header | SHA-256 |
| Stripe | Ed25519 signature in Stripe-Signature header | Ed25519 |
| M-Pesa | OAuth token + signature verification | SHA-256 |
Webhook Secrets
For Stripe, store your webhook signing secret in connection credentials:π‘οΈ HTTP Security Headers
All Reevit API responses include security headers to protect against common web vulnerabilities:| Header | Value | Purpose |
|---|---|---|
Strict-Transport-Security | max-age=31536000; includeSubDomains; preload | Enforces HTTPS for 1 year |
X-Content-Type-Options | nosniff | Prevents MIME type sniffing |
X-Frame-Options | DENY | Prevents clickjacking attacks |
X-XSS-Protection | 1; mode=block | XSS filter for older browsers |
Referrer-Policy | strict-origin-when-cross-origin | Controls referrer information |
Content-Security-Policy | default-src βnoneβ; frame-ancestors βnoneβ | API response CSP |
Permissions-Policy | geolocation=(), microphone=(), camera=() | Restricts browser features |
π API Authentication
API Keys
Reevit uses API keys for authentication. Keys are scoped to organizations and can have specific permission scopes.| Key Type | Purpose | Scope |
|---|---|---|
Live Keys (pfk_live_...secret) | Production payments | All operations |
Test Keys (pfk_test_...secret) | Development & testing | Read-only for some endpoints |
Authentication Scopes
API keys can be restricted to specific scopes:| Scope | Description |
|---|---|
payments:read | View payment history |
payments:write | Create and manage payments |
connections:read | View PSP connections |
connections:write | Create/update connections |
webhooks:read | View webhook logs |
webhooks:write | Configure webhooks |
Password Hashing
User passwords are hashed using Argon2id (winner of the Password Hashing Competition):| Operation | Time | Memory |
|---|---|---|
| Hash | ~11.4 ms | 16.8 MB |
| Verify | ~11.2 ms | 16.8 MB |
Security: Argon2id with 16.8 MB memory usage provides excellent protection against brute-force attacks, even on hardware with significant computational power.
Rate Limiting
Reevit implements rate limiting to prevent abuse:| Plan | Requests/minute | Burst | Latency |
|---|---|---|---|
| Free | 60 | 10 | ~2 ΞΌs |
| Pro | 300 | 50 | ~2 ΞΌs |
| Enterprise | 1000+ | Custom | ~2 ΞΌs |
Performance: In-memory rate limiting adds only ~2ΞΌs overhead per request. Redis-based distributed rate limiting is available for multi-instance deployments.
π Audit Logging
All sensitive operations are logged with:- Timestamp: ISO 8601 formatted
- Actor: User/service that performed the action
- Action: What operation was performed
- Resource: Affected entity (e.g., connection ID)
- Result: Success/failure with error details
Logged Events
| Category | Events |
|---|---|
| Connections | Create, update, delete, test |
| Payments | Create, confirm, refund, cancel |
| Webhooks | Delivery attempts, failures |
| Authentication | Login, key creation, key revocation |
π’ Compliance
PCI DSS
Reevit is designed to help you maintain PCI DSS compliance:- SAQ A Eligible: If you use Reevit Checkout or Payment Links, you may be eligible for SAQ A
- No Card Storage: Reevit never stores raw card numbers
- Tokenized Data: Card references are PSP-managed tokens
Your Responsibility: You must ensure your integration follows PCI guidelines. Use our hosted payment pages when possible to minimize scope.
Data Residency
By default, data is processed in EU-West (Ireland). Enterprise customers can request data residency in:- EU: Ireland (default)
- US: Virginia
- APAC: Singapore
Data Retention
| Data Type | Retention Period |
|---|---|
| Payment records | 7 years (regulatory requirement) |
| Audit logs | 24 months |
| Webhook logs | 90 days |
| Temporary logs | 7 days |
π οΈ Security Best Practices
For Your Application
-
Never expose API keys in client-side code
-
Use webhooks for payment confirmation
-
Implement idempotency
-
Validate webhooks on your server
For Your PSP Connections
-
Use separate credentials per environment
-
Enable connection health monitoring
- Reevit automatically tracks success rates and latency
- Configure alerts for degraded connections
-
Use labels for organization
π¨ Incident Response
Security Monitoring
Reevit maintains 24/7 security monitoring with:- Intrusion Detection: Automated anomaly detection
- DDoS Protection: Cloudflare-based mitigation
- Vulnerability Scanning: Regular automated scans
Reporting Security Issues
If you discover a security vulnerability:- Do not disclose publicly
- Email security@reevit.io with details
- Expect response within 24 hours
Responsible Disclosure: We appreciate responsible vulnerability reporting and will work with you to resolve issues quickly.
π Benchmark Methodology
Security benchmarks were run on Apple M1 Max (arm64) with the following configuration:- Encryption: AES-256-GCM with 32-byte keys
- Password Hashing: Argon2id with 16.8 MB memory, 1 iteration
- Rate Limiting: Sliding window algorithm with in-memory storage
- HTTPS Headers: Chi middleware with Go 1.25
Note: Actual performance may vary based on hardware, load, and network conditions. Benchmarks are indicative of security implementation efficiency.
π Related Resources
Connections
Securely manage your PSP credentials with BYOK.
Webhooks
Secure webhook handling and signature verification.
Authentication
API key management and access scopes.
Audit Logs
API endpoints for accessing audit and security logs.

