Skip to main content
Off-ramp lets users sell crypto and receive fiat on their debit or credit card.

Enable off-ramp

Off-ramp is disabled by default. To enable it for your integration, request it at onboarding or contact the Proof team. There is no self-service toggle.

Request a sell session

Pass "type": "sell" in the session request:
The response shape is identical to the buy flow. Pass the returned values to proofWidget.run({...}) exactly as in the Quickstart.

Requirements

All of the following must hold for off-ramp to work.

Off-ramp flow

1

User initiates sell

Your frontend calls POST /widget/session with type: "sell".
2

Identity verification

If the user is not verified, the widget guides them through verification first.
3

Sell widget opens

The widget shows the sell flow: the user enters the amount, adds a card, and receives a deposit address.
4

User sends crypto

The user sends crypto to the deposit address. The widget tracks the deposit.
5

Fiat payout

Once the deposit is confirmed, fiat is sent to the user’s card.
6

Completion

Transaction transitions to completed. You receive a WebSocket update, a webhook, or a poll response.

Transaction statuses

The same status enum used for buy applies to sell: See Transaction Status for the full delivery model.

Important notes

  • If the user does not send crypto within the deposit window, the sell transitions to failed automatically.
  • Off-ramp fiat support is configured per partner. Confirm the supported fiat currencies with the Proof team during onboarding.