Skip to main content
When you build on the Conversions API, a rule only fires when a matching deposit lands on its provisioned inbound endpoint. In the sandbox that means you would otherwise have to send a real bank transfer or an on-chain transaction to see a conversion transaction appear. The simulate deposit endpoint removes that step: it injects a test deposit against an existing rule so you can verify your integration — rule creation, transaction polling, and your own reconciliation logic — without moving any real funds.
Sandbox only. Simulated deposits are a testing aid for the sandbox environment. They do not move funds and are not available in production. Use them to validate your integration’s wiring, not to test real settlement.
Crypto testnets — real on-chain flow. For supported crypto networks, the sandbox can be backed by network testnets, so you can make real testnet deposits and withdrawals against a conversion rule and exercise the actual on-chain legs end to end — rather than simulating them. Which networks and testnets are enabled for your sandbox depends on your setup. Contact your Payward integration engineer for the current list and the testnet faucet/funding details.

How it works

You simulate a deposit against a conversion rule you have already created. PWS resolves the rule’s inbound routing internally and submits a test deposit for the amount you specify — exactly as if a matching credit had arrived on the rule’s from endpoint. The rule fires and produces a new conversion transaction, which you then monitor through the normal transactions endpoint. The end-to-end flow is three steps:
  1. Create a conversion rule — the standing fromto configuration you want to test.
  2. Simulate a deposit against that rule.
  3. Poll the rule’s transactions to watch the conversion progress to completed.

Step 1 — Create a conversion rule

Create the rule you want to exercise. This is the standard create call described in Conversions — here, a EUR on-ramp settling USDC to a Polygon wallet:
The full rule is returned (from, to, and timestamps included — see Conversions). Note the id — you need it as the conversion_id in the next step:
Wait for active. Simulate a deposit only once the rule is active. If the rule is still provisioning, its inbound endpoint is not ready — fetch it with GET /v1/accounts/{account_id}/conversions/{conversion_id} until the status is active.

Step 2 — Simulate a deposit

Submit a test deposit against the rule with POST /v1/accounts/{account_id}/conversions/{conversion_id}/testing/deposit. The amount is the value to simulate as received on the rule’s inbound side, in the source asset (EUR, for the rule above):
The response confirms only that PWS accepted the simulated deposit for processing — not that the conversion has completed:
A simulated: true response means the test deposit was submitted upstream and the rule will fire. The resulting conversion transaction settles asynchronously; observe its progress in step 3.
amount is a string. Send the amount as a JSON string ("100.00"), not a number, and trim any surrounding whitespace. A non-positive or whitespace-padded value is rejected with 400.

Step 3 — Watch the conversion transaction

The simulated deposit produces a conversion transaction just like a real deposit would. Poll the rule’s transactions to watch it move from pending_deposit through to completed:
The transaction moves through the same lifecycle as a production conversion (pending_depositconvertingsettlingcompleted). See Monitoring conversions for the full state table.
Webhooks. A simulated deposit emits the same conversion webhook events as a real one (conversion.deposit_completed, conversion.deposit_held, conversion.withdrawal_completed, and the rest), so you can use it to test your webhook handler end to end. Register your endpoint with the Register Webhook API. You can also follow the simulated conversion by polling the transactions endpoint, exactly as in production.

API reference