Skip to main content
Two endpoints, one per rail. Both take a quote and return what the customer needs.
POST /create-pool-connectReturns your pool address for the customer’s wallet to call deposit() on.
string
required
string
The customer’s connected wallet. Required if you’ve enabled payer screening.
string
The contract to call. Verify this before signing.
string
Pass to deposit() so the payment is attributable.
string
Token contract address to approve.
string
Amount in base units.
number
Chain to submit on.
object
Verification bundle. Re-prove it client-side rather than trusting it. Why.
The pool must be deployed on that chain. If it isn’t, this returns 422 — offer the deposit rail instead.

Displaying a deposit address

Verify before you show it

Re-derive the forwarder from the chain-read pool address and confirm it matches. If it doesn’t, show nothing. Verification.

Show the address, amount, token, and chain

All four. Most failed payments are a customer sending the right amount of the wrong token, or the right token on the wrong chain.

Offer a QR code

Most customers pay from a phone.

Say the address stays valid

It reduces panic when an exchange withdrawal is slow.
Never show a deposit address you haven’t verified. It is the one screen where a compromised response could redirect a customer’s money, which is exactly why the verification exists.

Errors

Full error reference.