Skip to main content

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}/simulate with your ak_test_ key.
  • Node SDK: await orcarail.paymentIntents.simulate(intent.id)
  • PHP SDK: $orcarail->paymentIntents->simulate($intent->id)
  • MCP: the payment_intents.simulate tool, 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.