bolt-lightningWhite Label API Integration - SELL Flow

This guide shows how to implement a custom UI that communicates directly with Coindisco’s backend to fetch providers, regions, payment methods, quotes and to generate the final provider buy link.

Business Integration Manual — Sell Flow

Prod Environment: https://api.coindisco.com

Sandbox Environment: https://api-staging.coindisco.com

API Key Example: YOUR_API_KEY

All requests require your partner API key in the header:

partner-api-key: YOUR_API_KEY

1. Introduction

This guide explains how to integrate Coindisco’s White-Label API to enable a fully branded “Sell Crypto” experience within your own product. The integration allows partners to control user experience, while Coindisco handles provider connections, quotes, and purchase flows behind the scenes.


2. Detailed Integration Flow

The Sell flow is the same as the Buy flow. Each step below explains the business logic followed by the API request required to implement it.

1

Retrieve Active Providers

Partners begin by fetching a list of currently active fiat-to-crypto providers supported by Coindisco. Display this list in your UI to allow users to see available onramp providers.

curl --location 'https://api.coindisco.com/api/white-label/v1/active-providers/' --header 'partner-api-key: YOUR_API_KEY'

Response example:

[
    {
       "id": 1, // service_id
       "name": "MoonPay", // service name
       "slug_name": "moonpay", // service slug name
       "icon": "https://api-staging.coindisco.com/media/service_integration/Service/moonpay.png",
       "url_for_transaction_details": "https://buy-sandbox.moonpay.com/transaction_receipt?transactionId=", // service transaction details
       "url_for_support": "https://support.moonpay.com/hc/en-gb/requests/new", // service support link
       "domain": "buy.moonpay.io", // service domain
       "privacy": "https://www.moonpay.com/legal/privacy_policy", // service privacy page
       "terms": "https://www.moonpay.com/legal/terms_of_use", // service terms page
       "sell_available": true // service sell available
   }
]
2

Retrieve Available Regions

Use this endpoint to display or automatically detect the user’s region. You can pre-select the region using the user’s IP or browser settings.

curl --location 'https://api.coindisco.com/api/white-label/v1/regions/' --header 'partner-api-key: YOUR_API_KEY'

Response example:

[
   {
       "id": 264, // region id
       "letter_id": "aland-islands", // unique code
       "kind": "country", // region kind
       "name": "Åland Islands", // region name
       "alpha2_code": "AX", // ISO 3166-1 code for countries
       "alpha3_code": "ALA", // ISO 3166-1 code for countries
       "icon": "https://api-staging.coindisco.com/media/service_integration/Region/AX.png", // icon
       "parent_region": null, // parent region
       "child_exists": false, // nested regions exists
       "default": false, // is default
       "states": [] // nested regions
   }
]
3

Retrieve Payment Methods

Once the region is known, retrieve payment methods available in that region. Optionally, filter methods by a specific provider using service_id.

curl --location 'https://api.coindisco.com/api/white-label/v1/regions/{{region_id}}/payment-methods/?service_id={{service_id}}' --header 'partner-api-key: YOUR_API_KEY'

Display these methods to the user (e.g., card, bank transfer, Apple Pay).

Response example:

[
   {
       "id": 147, // payment method id
       "letter_id": "bank_transfer", // payment method unique alphabetical code
       "code": "bank_transfer", // payment method code
       "name": "Bank Transfer", // payment method name
       "icon": "https://api-staging.coindisco.com/media/service_integration/PaymentMethod/bank_transfer.png",
       "sell_available": true // is payment method available for sell
   }
]
4

Retrieve Fiat Currencies

Get the list of supported fiat currencies for the selected region and provider. This determines what base currencies (USD, EUR, GBP, etc.) the user can use.

curl --location 'https://api.coindisco.com/api/white-label/v1/regions/{{region_id}}/currencies/?service_id={{service_id}}' --header 'partner-api-key: YOUR_API_KEY'

Response example:

[
   {
       "id": 1,
       "name": "EUR",
       "symbol": "",
       "icon": "https://api-staging.coindisco.com/media/currencies/icons/EUR.png",
       "is_popular": true,
       "full_name": "Euro",
       "rate": 0.8574000865,
       "default": false
   }
]
5

Retrieve Cryptocurrencies

Fetch the list of cryptocurrencies available for purchase and their supported networks. Display them as user options in your Buy screen.

curl --location 'https://api.coindisco.com/api/white-label/v1/cryptocurrency/?service_id={{service_id}}' --header 'partner-api-key: YOUR_API_KEY'

Response example:

{
   "next": "https://api-staging.coindisco.com/api/white-label/v1/cryptocurrency/?cursor=cD0xMA==&favorites=false&ordering=rank&service_id=1", // link for the next page
   "previous": null, // link for the prev page
   "results": [
       {
            "id": 1, // cryptocurrency id
            "letter_id": "bitcoin", // cryptocurrency unique alphabetical code
            "name": "Bitcoin", // cryptocurrency name
            "symbol": "BTC", // cryptocurrency symbol
            "code": "btc", // cryptocurrency code
            "rank": 1, // cryptocurrency rank
            "logo": "https://s3.amazonaws.com/cdn-staging.coindisco.com/currencies/logo/btc_bitcoin.png",
            "issuer": null, // cryptocurrency issuer or smart contract
            "home_domain": null, // cryptocurrency home domain
            "networks": [] // available networks
        }
    ]
}
6

Request Sell Quotes

Once the user selects all parameters (region, payment method, currency, crypto, amount), request a quote to calculate estimated crypto amount and fees.

curl 'https://api.coindisco.com/api/white-label/v1/search-sell-quotes/' \
  -X POST \
  -H 'Accept: application/json, text/plain, */*' \
  -H 'partner-api-key: pk_prod_XXXXXXXXX' \
  --data-raw '{"region":157,"currency":3,"network":7,"payment_method":39,"cryptocurrency":1,"cryptocurrency_amount":"0.05"}'

Response example:

{"search_id":"12312312-1231-1231-1231-123123123123"}
7

Retrieve Search Results and Display Offers

Poll for search results every few seconds using the search_id. When the status becomes completed, present the list of available offers to the user for comparison.

curl 'https://api.coindisco.com/api/white-label/v1/search-sell-quotes/e0070884-d502-44ba-93c2-ee77101897cb/' \
  --compressed \
  -H 'Accept: application/json, text/plain, */*' \
  -H 'partner-api-key: pk_prod_XXXXXXXXX' \

Response example:

{
  "status": "completed",
  "progress": {
    "objects_done": 1,
    "objects_total": 1
  },
  "data": [
    {
      "is_kyc_ready": false,
      "is_recommended": false,
      "is_best_success_rate": false,
      "has_been_used_before": false,
      "currency_amount": "94.05",
      "cryptocurrency_amount": "0.05",
      "total_fee": "4.94",
      "payment_method": {
        "id": 39,
        "letter_id": "debit_card",
        "code": "debit_card",
        "name": "Debit card",
        "icon": "https://s3.amazonaws.com/cdn.coindisco.com/media/service_integration/PaymentMethod/debit_card.png",
        "category": "Cards",
        "category_display_name": "Cards",
        "category_code": "credit_debit_card",
        "category_icon": "https://s3.amazonaws.com/cdn.coindisco.com/static/service_integration/categories_pm/credit_debit_card.png",
        "category_description": "Popular choice"
      },
      "currency": {
        "id": 3,
        "name": "USD",
        "symbol": "$",
        "icon": "https://s3.amazonaws.com/cdn.coindisco.com/media/currencies/icons/USD.png",
        "is_popular": true,
        "full_name": "United States Dollar",
        "rate": null
      },
      "cryptocurrency": {
        "id": 2,
        "letter_id": "eth",
        "name": "Ethereum",
        "symbol": "ETH",
        "rank": 2,
        "logo": "https://s3.amazonaws.com/cdn.coindisco.com/currencies/logo/eth_ethereum.png"
      },
      "region": {
        "id": 157,
        "letter_id": "poland",
        "kind": "country",
        "name": "Poland",
        "alpha2_code": "PL",
        "alpha3_code": "POL",
        "icon": "https://s3.amazonaws.com/cdn.coindisco.com/media/service_integration/Region/PL.png",
        "parent_region": null,
        "child_exists": false
      },
      "service": {
        "id": 1,
        "name": "MoonPay",
        "slug_name": "moonpay",
        "icon": "https://s3.amazonaws.com/cdn.coindisco.com/media/service_integration/Service/moonpay.png",
        "main_color_1": "#AB6AFF",
        "main_color_2": "#7715F5",
        "url_for_transaction_details": "https://buy.moonpay.com/transaction_receipt?transactionId=",
        "url_for_support": "https://support.moonpay.com/hc/en-gb/requests/new",
        "domain": "buy.moonpay.io",
        "privacy": "https://www.moonpay.com/legal/privacy_policy",
        "terms": "https://www.moonpay.com/legal/terms_of_use",
        "sell_available": true,
        "discount_percent": null,
        "discount_percent_sell": null,
        "is_sumsub_enabled": true,
        "is_sumsub_ready": true,
        "proxy_of_service": null
      },
      "base_currency": {
        "id": 3,
        "name": "USD",
        "symbol": "$",
        "icon": "https://s3.amazonaws.com/cdn.coindisco.com/media/currencies/icons/USD.png",
        "is_popular": true,
        "full_name": "United States Dollar",
        "rate": null
      },
      "profit_rate": 1881,
      "true_fee": 8.378875997311278,
      "quote_id": null,
      "nokyc": false,
      "is_best_rate": false
    }
  ],
  "search_id": "e0070884-d502-44ba-93c2-ee77101897cb",
  "amount_suggestions": {}
}

Each offer includes details about provider, total amount, fee, and whether KYC is required.

8

Once the user chooses a provider, request a buy link to redirect them to the provider’s payment flow. You must include all previously selected parameters in the request.

curl 'https://api.coindisco.com/api/white-label/v1/retrieve-sell-link/' \
  -X POST \
  -H 'Accept: application/json, text/plain, */*' \
  -H 'partner-api-key: pk_prod_XXXXXXXXX' \
  --data-raw '{"region":157,"service":14,"currency":3,"cryptocurrency":2,"network":5,"payment_method":39,"cryptocurrency_amount":"0.05"}'

Response example:

{
"link":"https://api.coindisco.com/api/service-integration/retrieve-redirect-link/?transaction-id=12312312-1231-1231-1231-123123123123",
"transaction_id":"12312312-1231-1231-1231-123123123123"}
}

Redirect the user to this link to complete the transaction.


3. Best Practices

  • Always validate user inputs before calling API.

  • Cache provider and region data for faster UI loading.

  • Detect region automatically when possible.

  • Poll quote results until status = completed.

  • Use official provider URLs only — never construct links manually.

  • For production, ensure secure key storage and HTTPS communication.


4. Summary of Endpoints

#
Purpose
Endpoint
Method

1

Get active providers

/api/white-label/v1/active-providers/

GET

2

Get regions

/api/white-label/v1/regions/

GET

3

Get payment methods

/api/white-label/v1/regions/{region_id}/payment-methods/

GET

4

Get currencies

/api/white-label/v1/regions/{region_id}/currencies/

GET

5

Get cryptocurrencies

/api/white-label/v1/cryptocurrency/

GET

6

Search buy quotes

/api/white-label/v1/search-buy-quotes/

POST

7

Retrieve search results

/api/white-label/v1/search-buy-quotes/{search_id}/

GET

8

Retrieve buy link

/api/white-label/v1/retrieve-buy-link/

POST

Last updated