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’sfrom 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:
- Create a conversion rule: the standing
from→toconfiguration you want to test. - Simulate a deposit against that rule.
- Poll the rule’s transactions to watch the conversion progress to
completed.
curl examples read these environment variables:
PWS_BASE_URL: the API base URL. Set it to the sandbox or production base URL, listed in Environments.PWS_API_KEY: your API key.PWS_API_TIMESTAMPandPWS_API_SIGN: the timestamp and signature of each request. To compute them, see Authentication.- Compute
PWS_API_SIGNover the exact-dstring, including its line breaks and indentation, and over the exact path and query in the URL. Each request needs a newPWS_API_TIMESTAMPandPWS_API_SIGN.
Step 1: Create a conversion rule
Create the rule you want to exercise. This is the standard create call described in Conversion rules: here, a EUR on-ramp settling USDC to a Polygon wallet:from, to, and timestamps included; see Conversion rules). 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 withPOST /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. It does not mean the conversion has completed:
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 frompending_deposit through to completed:
pending_deposit → converting → settling → completed). 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.