Simulate payments
In a sandbox you can complete a payment without a wallet. A simulated payment goes through the same path as a real one, so the payment link, the payment intent, the dashboard and your webhooks behave exactly as they would for a real payment.
Simulation is sandbox only. Live organizations get 403 SIMULATION_SANDBOX_ONLY.
Ways to simulate
- Pay page: open a sandbox payment link and click Simulate payment in the test banner.
- Dashboard: click Simulate payment on a sandbox payment intent.
- REST API:
POST /api/v1/payment_intents/{id}/simulatewith yourak_test_key. - Node SDK:
await orcarail.paymentIntents.simulate(intent.id) - PHP SDK:
$orcarail->paymentIntents->simulate($intent->id) - MCP: the
payment_intents.simulatetool, which is available only with a sandbox key.
What you receive
The usual payment_intent.processing and payment_intent.completed webhooks, with livemode: false. The transaction has simulated: true and a simulated_… hash.
What it never does
Simulated payments hold no on-chain funds, so they are never withdrawable. The dashboard shows them in the totals (as "simulated") but not in the withdrawable balance.