Go-live checklist
Before we enable production access, we check the items below. Going through them yourself first usually makes the approval process faster.
Commercial and regulatory
- Business verification (KYB) complete
- Contract signed
- Program configured: BIN range, card products, currencies, fee schedule
- Limits agreed: per-card, per-cardholder, per-program
- Named operational contact and escalation path on file
- Where you perform identity verification yourself, your KYC policy reviewed
Credentials and access
- Production OAuth client registered, and its private key never committed to source control
- Private key read from a secrets manager or environment, not from configuration files in the repository
- Separate clients per deployment target, each labeled
- Key rotation procedure written down and tested at least once
- IP allowlisting configured for the environment (self-serve in Cockpit), both the organization-wide policy and, where needed, a per-client allowlist
- Access controls for Cockpit users agreed, including MFA and least-privilege roles
- No shared logins or shared credentials between deployment targets
Integration correctness
-
Idempotency-Keysent on every POST, not just the ones that seem risky - Retry logic uses exponential backoff and respects
Retry-After -
401and403are not retried - Money handled as integer minor units end to end, with no floats anywhere in the path, including database columns and JSON parsing
-
available_balanceused for anything a user sees;ledger_balanceused for reconciliation - Unknown enum values tolerated rather than causing errors. We may add enum members in minor releases
-
Aleta-Request-Idcaptured and logged on every response, both success and failure
Webhooks
- Production endpoint reachable over HTTPS with a valid certificate
- Signature verified on every delivery, using a constant-time comparison
- Timestamp checked to reject replays outside the tolerance window
- Handler responds
2xxbefore doing slow work: acknowledge, then process asynchronously - Duplicate deliveries handled idempotently, keyed on event
id - Out-of-order deliveries handled. Ordering is not guaranteed
- Events you do not recognize ignored without erroring
- Someone is alerted when delivery failures accumulate
Operational readiness
- Someone owns the integration and is reachable outside office hours
- Support process defined, and everyone who raises tickets knows that
request_idis mandatory - Reconciliation runs on a schedule and someone reviews the breaks
- Dashboards cover transaction volume, webhook delivery success, and API error rate
- Card lifecycle actions (freeze, replace, close) reachable by your support staff without an engineer
- Runbook exists for: a cardholder reporting a lost card, a disputed transaction, and a suspected key compromise
Security and compliance
- PCI DSS scope understood and documented on your side
- Full card numbers never logged, never stored, never sent to analytics
- PAN masked by default in every internal tool
- Card reveal, if you offer it, behind step-up authentication and audited
- Cardholder PII encrypted at rest in your systems
- Data retention and deletion policy agreed
Final verification in sandbox
Before requesting production, confirm the full flow in sandbox:
- Cardholder created and verification completed through the webhook path, not the synchronous response
- Account funded, card issued, card activated
- A card payment settled and posted from
amount, which can differ from what the terminal displayed - Card frozen, unfrozen, replaced, and closed
- Dispute opened and evidence submitted
- Every webhook event type your integration subscribes to received and processed
Requesting access
When the list is complete, request production access from your relationship manager. We review it and either provide the credentials or let you know what is still outstanding.