Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.proof.community/llms.txt

Use this file to discover all available pages before exploring further.

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:
curl -X POST https://DOMAIN/widget/session \
  -H "Authorization: Bearer <client_token>" \
  -H "Content-Type: application/json" \
  -d '{
    "partner_user_id": "user-123",
    "user_email": "user@example.com",
    "network": "TRC20",
    "currency": "USDT",
    "amount": "100",
    "type": "sell"
  }'
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.
RequirementDetails
Off-ramp enabledSell flow must be enabled for your integration (request it at onboarding)
Identity verificationThe user must complete identity verification inside the widget
Currency + network supportedThe currency and network you pass must be enabled for your integration

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:
StatusDescription
pendingWaiting for the user’s crypto deposit
processingDeposit received; fiat payout in flight
completedFiat sent to the card
failedDeposit timed out, payout failed, or the transaction was rejected
cancelledUser cancelled inside the widget
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.