Five participants: customer-facing frontend, platform backend, the vendor's API, the identity provider already in use, and the existing custody layer. Mercuryo plugs in as one more payment route alongside the existing ones — no new compliance pipeline, no fork in withdrawal mechanics.
From a customer click to a crypto balance increase. Sixteen messages across five participants. Signature generation and identity-token forwarding happen server-side before the widget is even visible.
merchant_transaction_id minted at step 10 is what re-attaches the inbound webhook at step 14 to the payment record we created.Customer confirms a sell in the widget; platform clears compliance, then sends crypto to the vendor's settlement address; vendor dispatches fiat. The platform never bypasses its own withdrawal pipeline.
Every Mercuryo-driven transaction (on-ramp or off-ramp) maps to one row in the platform's payments table and progresses through the same state machine. Transitions are driven by webhooks; idempotency is enforced on the vendor's eventId.
The integration uses three independent signature schemes. They are not interchangeable; each protects a different attack surface and runs in a different direction.
v2: prefixEach card describes one Mercuryo endpoint we use, with the real request/response shape from vendor docs. Configure credentials in the bar at the top of the page; expand any card to inspect its example body, fire it against the configured base URL, or copy a ready-to-paste curl command. Browser CORS may block direct fires — curl works regardless.
trx_token. Returns a payment-page URL for the customer to complete.Four storage planes. Each has a single owner and a documented lifecycle. Nothing about Mercuryo creates a new persistence layer or a new table outside what the platform already manages.
eventId at webhook ingest.eventId arriving twice produces a single side effect.Items the design holds open until first sandbox round-trip. None of these block design approval; all of them block the start of the build cycle.
These are settled and will not be re-opened without explicit input from product.