The shared path
1
Choose an amount and a cryptocurrency
The widget quotes the operation and refreshes that quote on a timer, so the rate the user confirms is the rate they get. Minimums and maximums come from the transaction limits that apply to your account.

2
Choose a network
Limited to the networks enabled for your account.
3
Confirm the destination address
Prefilled when you passed
_addr, or when the user has an address on file. Otherwise they enter it.4
Choose how to pay and confirm
Only the payment methods enabled for your account and country are offered. The confirmation screen breaks the cost down before the user commits.

Where the flow goes from there
In Brazil the user’s deposit account has to be provisioned before a PIX key can be issued. When it is not ready yet the widget keeps polling and shows a waiting state rather than failing the order.
What your backend observes
The operation produces the ordinary on-ramp event chain, whichever way the user paid:ON-RAMP.DEPOSIT.RECEIVED → ON-RAMP.TRADE.COMPLETED → ON-RAMP.WITHDRAWAL.PROCESSING → ON-RAMP.WITHDRAWAL.COMPLETED
If it fails instead, you get ON-RAMP.ORDER.CANCELLED with a failureReason, and the money is returned to the user — see History and refunds. Full payloads are in On-Ramp Webhook Events.