> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.thepennyinc.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.thepennyinc.com/_mcp/server.

# Simulation

Penny Simulation stands in for external card networks and bank rails in Sandbox. It lets you trigger a card purchase, settle or adjust it, cancel or expire a hold, or record a payment to or from a linked account on demand. Penny processes these simulated events through the same authorization, spend-control, and ledger processing as real activity, so the authorization decides whether a purchase is approved or declined.

Simulation is available **only in Sandbox** (`https://simulate.sandbox.api.thepennyinc.com`). See [Environments](/get-started/environments).

## How it's different from Banking and Issuing

Banking and Issuing create and manage the resources a transaction happens *to* — accounts, cards, cardholders, linked accounts, spend controls — all within a [Program](/get-started/platform-concepts/programs). Simulation does not create resources. It drives events against resources that already exist:

#### Banking & Issuing

Create the account, card, or cardholder. Register a linked account. Set up a spend control.

#### Simulation

Trigger what would normally arrive from the card network or bank rail against something you already created — a purchase, a settlement or adjustment, a cancellation or expiry, a payment from a linked account.

Create everything the scenario needs — the Capital Account, the card and cardholder, the linked account — through Banking and Issuing first. Simulation picks up from there.

## Two kinds of calls

Every scenario is one **creation** call followed by zero or more **event** calls:

* `POST /transaction/card` starts a card purchase, and returns a `transaction_id`.
* `POST /transaction/payment` starts a payment between a linked account and a Capital Account, in either direction.
* `POST /transaction/update` applies a follow-up event — settlement, adjustment, cancellation, or expiry — to a transaction created by either of the above.

Simulated transactions are ordinary Sandbox transactions. Read them through Penny Banking's `GET /transactions/{transaction_id}` endpoint, and receive their webhooks like any other transaction. See [Simulation Scenarios](/simulation/simulation-scenarios) for transaction kinds and events, and [Simulating a Card Purchase](/simulation/simulating-a-card-purchase) for a walkthrough.