Frictionless Off-Ramping for Wallets

The Frictionless Off Ramp flow is tailor-made for crypto wallet apps, providing partners with the capability to seamlessly integrate and enable clients to cash out digital assets directly to credit cards and bank accounts.

User flow steps

  1. The user chooses to sell a specific amount of cryptocurrency in the partner's wallet app.

  2. Paybis Off Ramp is initiated.

  3. The user chooses the payout method (pay to card, bank transfer, or e-wallet).

  4. The user requests and confirms the Quote.

  5. The user logs in to the Off Ramp.

  6. The user enters the payout details (credit card data, bank details, or e-wallet address).

  7. The user lands on the transaction summary page and confirms the transaction.

  8. Paybis Off Ramp is closed. The user makes a payment in the wallet app.

  9. Paybis Off Ramp is re-opened.

  10. The transaction gets confirmed on the blockchain.

  11. The user gets a fiat payout and lands on the transaction completed page.

Integration flow steps

Flow with SDK events

  1. Get the list of supported currency pairs and payout methods

Partner calls the Sell Crypto Currency Pairs API to retrieve the list of supported crypto-to-fiat currency pairs for all available payout methods. Additionally, you can get the list of payout methods available for a specific crypto/fiat pair. The supported currency pairs and payout methods can be displayed in the partner’s wallet app (withdrawal flow).

  1. Request a Quote

Partner calls the POST Quote endpoint. For 1-click checkout via pay-to-card, specify the payment method paymentMethod=credit-card-{partnerName}. Paybis returns the id of the quote and calculated amounts for the credit-card-{partnerName} payment method.

  1. Get the Request ID required to initiate the Off Ramp

Partner calls the POST Request endpoint with the following parameters:

  • partnerUserId - this parameter must be unique per Request/Transaction (recommended) or per user. Note that if you use the same partnerUserId for all requests associated with a specific user, the email address confirmed during registration will always be used for authentication in the widget, and the user won't be able to change the email over time.
  • quoteId - id retrieved in the previous step
  • locale
  • payoutMethod=credit-card-{partnerName} (optional)
  • flow : sellCrypto
  • cryptoPaymentMethod: partner_controlled_with_sdk_event

⚠️

SDK events are available only if widget is opened in iframe or in new browser tab. If you are using the redirect method, set cryptoPaymentMethod : partner_controlled_with_redirect.bis returns the requestId. Note that the unique requestId should be generated for each new transaction.

  1. Initialize the widget with the retrieved requestId
  2. User confirms the transaction

In Paybis widget, the user can change the transaction amount, and currencies, and add payout details.

  1. Handle the payment-initiated event

Paybis system sends the Payment Initiated SDK event to signal that the user has started a transaction in the widget (refer to events.onpaymentinitiatedin the SDK options).

  1. Close the Off Ramp

For a seamless user experience, it is crucial to close the widget using the close SDK method upon receiving the event.

  1. Request payment details

Call the GET Payment Details endpoint to retrieve payment details.

Paybis returns the transaction info necessary to make a payment: cryptocurrency, amount, destination wallet, blockchain, and network.

  1. User confirms withdrawal in their wallet

In your app, the user should confirm the withdrawal of funds from their crypto wallet balance.

  1. Send crypto to Paybis destination wallet

The partner sends the transaction amount to Paybis deposit wallet.

  1. Re-open the Off Ramp

Re-open the widget with the same RequestId using the open SDK method upon completing the payment.

⚠️

If you are using Single Sign-On feature, do not pass One Time authentication token when re-opening widget.

Do not re-initiate the widget if the cryptocurrency payment fails (due to reasons such as insufficient funds in the user's wallet).

  1. User gets a payout in fiat

The Paybis system verifies the destination wallet balance to confirm the receipt of the cryptocurrency amount stated in the invoice. Upon blockchain confirmation of the transaction, Paybis initiates a fiat payout. Users receive the payout in their fiat account (e.g., bank card) and are directed to the Transaction Complete screen, providing details and a link to view the transaction on the blockchain.

Flow with callback URL

If you are using the openRedirect method to open widget UI or Direct URL integration, SDK events are not available. To build frictionless offramp flow in this case, use the cryptoPaymentMethod: partner_controlled_with_redirect and set the depositCallbackUrl when creating a Request.

Users will be redirected to the depositCallbackUrl after confirming a transaction in Paybis widget proceed with the payment in your app.

Frictionless checkout in 1-click

⚙️

Prerequisites

  1. Partner's application has the capabilities and interfaces to collect and pass to Paybis the following user data: transaction amount (in fiat or crypto), crypto asset ID, customer's preferred fiat currency and payout method.
  2. For the customers with verified email addresses in your app, use the Single sign-on feature to avoid redundant authenticated in the off-ramp.

With 1-click integration, users can complete a withdrawal in just two simple steps:

  1. Enter payout details (card number, bank account, or e-wallet).
  2. Confirm the transaction.

To implement the 1-click integration:

  1. Create a Sell Crypto Quote for a specific payout method.
  2. Create a Request with the same payout method as in the Quote and Quote ID. Provide the customer's email and passwordless=true, to enable Single-sign on.
  3. Initialize the widget with retrieved requestId. In case of a Single sing-on, also supply the oneTimeToken for user authentication.