Sandbox and testing
The other side of every rail is a simulator. The simulation calls let a test play that other side: the Federal Reserve settling a file, another bank sending a wire, a merchant running a card.
What is simulated
FedACH, Fedwire, FedNow, RTP, the card networks, the identity provider behind KYC and the payment HSM are simulators. The bank's own side is not: the ledger, the holds, the screening, the files and messages it builds (NACHA files, ISO 20022 messages, ISO 8583 messages) are the real code. A simulation call delivers the message the outside world would have delivered, and the bank processes it as it would in production.
Simulation routes live under /simulate and are listed under Simulation in the reference.
Money arriving
| To test | Call |
|---|---|
| An incoming ACH credit or debit, such as payroll | POST /simulate/transfers/ach/receive |
| An incoming wire | POST /simulate/transfers/wire/receive |
| An incoming instant payment | POST /simulate/transfers/realtime/receive |
| A request for payment from another institution's customer | POST /simulate/transfers/realtime/request |
| An incoming international wire | POST /simulate/transfers/international-wire/receive |
An entry addressed to an account number the bank does not have is handled as the rail requires: an ACH entry is returned with R03, and a wire is received as unapplied until it is applied to an account or returned.
What happens to money you sent
| To test | Call |
|---|---|
| The operator settling an ACH file the bank sent | POST /simulate/transfers/ach/settle |
| The receiving bank returning an ACH entry | POST /simulate/transfers/ach/return |
| The receiving bank sending a notification of change | POST /simulate/transfers/ach/change |
| The receiver returning a wire the bank sent | POST /simulate/transfers/wire/return |
| A sender asking for a wire back | POST /simulate/transfers/wire/return-request |
| The receiver returning an instant payment | POST /simulate/transfers/realtime/return |
Checks and cards
| To test | Call |
|---|---|
| Checks drawn on the bank being presented | POST /simulate/transfers/checks/presentment |
| A deposited check coming back unpaid | POST /simulate/transfers/checks/return |
| A merchant purchase on a card | POST /simulate/cards/purchase |
| The network clearing an authorization | POST /simulate/cards/clearing |
A whole banking day
go run ./cmd/e2e runs 51 narrated steps against a local database: onboarding, deposits, ACH out and in, wires, instant payments, checks, cards, loans, statements, reports and reconciliation. It is the quickest way to see how the calls chain together, and it is what CI runs on every change.