Go-live checklist
Most production incidents in the first week come from something on this list that was true in sandbox and not in production. Work through it with your relationship manager a few days before the switch, not on the morning of it.
-
Production credentials issued and stored. Your production client is a separate client from sandbox, with its own
client_idandclient_secret. Confirm the client is active (not pending approval), store the secret in your secrets manager, and confirm that nobody has it in a chat log or a ticket. See Authentication. -
Production IP allowlist set. Give the bank every address production traffic will leave from: your NAT gateway or egress proxy, not your application hosts, and every availability zone you fail over to. Ask for CIDR blocks where you have them. Then confirm that the first production token request succeeds from each address before the day. See IP allowlist and rate limits.
-
Scopes confirmed against what you actually call. List every endpoint your integration uses and check each one’s scope against the scopes on your production client; sandbox clients are often issued wider scopes than production. If you onboard agents or merchants you need
sub-agents:create; if you spend out of their accounts you needsub-agents:debitand the sub-agent visibility flag on the client. See Scopes. -
Rate limit sized for your peak. Estimate your peak calls per minute, including any polling, and compare it with the per-minute budget on your production client. Ask for a higher limit now if you need one. Make sure your client reads
X-RateLimit-Remainingand honoursRetry-After. -
Settlement and fee accounts funded. Funding an account debits your settlement account; a fund that exceeds it is refused with
0004. API usage fees are charged to your fee account. Confirm both account numbers with the bank, confirm they are the ones inside your production token, and fund them before the first call. See API access and billing. -
Webhook endpoint live and signature verification tested. Register your production webhook URL, confirm it is reachable from the bank over HTTPS, and run the signature test vector through your verification code before any real event arrives. Verify the signature on every delivery and reject anything that fails. See Verifying signatures and Delivery and retries.
-
Virtual account callback registered. If you collect through virtual accounts, register your inflow callback URL for production and confirm it is distinct from the sandbox one. Decide now how you handle a callback you cannot process in time. See Inflow callbacks.
-
Reconciliation plan agreed. Decide what you reconcile each day, against which source, and who looks at a gap: inflows against your own expected payments, outward transfers against check-transaction, your settlement account statement against your ledger. Write down the cut-off time and whose clock it is on. See Reconciling a day.
-
Idempotency in place. Every money-movement call sends a
transactionRefthat you persisted before sending; transport failures retry with the same reference;0094and0009route to check-transaction, never to a resend. Test this by killing your process mid-call in sandbox. See Idempotency. -
Monitoring for 429s and 0009s. Alert on any HTTP 429, on a rising count of
0009responses, and on a0009that has not settled to0000or0096after your tolerance (interbank transfers are usually resolved within minutes; a stuck one is escalated to bank staff). Alert on 401s outside your token refresh, onSCOPE_DENIEDand onIP_NOT_ALLOWED: all three mean configuration drifted, not that a user did something wrong. Log theX-Request-Idof every call so support cases carry it. -
Portal users invited. Invite your finance and operations people to the partner portal and make sure at least one of them can see the Transactions, Virtual accounts and Webhooks pages before go-live, so the first dispute is checked against the bank’s view and not against yours. See The partner portal.
-
Support path known. Know who at the bank you call, what hours they keep, and what they will ask for: your
client_id, theX-Request-Id, yourtransactionRef, and BankCore’sretRef. Keep all four in your logs.
In the portal
Section titled “In the portal”The API access page is the one to check on the day: it shows the client’s status, scopes, limits and allowlist, and updates its last-used time and address on your first production call.