Channels
Overview
Channels represent a payment route with specific characteristics for processing transactions.
A Channel can be seen as a type of contract where the details are fixed, including fees and transaction limits. Each Channel is defined by:
- Country
- Fiat Currency
- Payment Method Type
Important note: the Country
code XX
is used for Channels with multiple compatible countries, these Channels are available internationally.
Using Channels
List Available Countries
Retrieve supported countries and their available fiat currencies:
GET /v1/channels/sell/countries
// Response example
{
"GB": ["GBP", "EUR"],
"US": ["USD"],
"SG": ["SGD"]
}
Get Available Channels
Query available channels for a specific country or currency:
GET /v1/channels/sell
?Country=GB // Provide country (optional if currency is specified)
?CryptoCurrency=BTC
?FiatCurrency=GBP // Provide currency (optional if country is specified)
?FiatAmount=1000 // Optional - includes price calculation
Channel Selection
When selecting a channel, consider:
- Transaction limits (
Limits
object) - Processing time (
ProcessingSeconds
) - Payment method requirements, some channels may require a Dynamic Form to submit a transaction
Dynamic Forms
You can retrieve the required form fields for a given channel through two means:
-
Directly from the
/v1/channels/sell
Response:- When you query available channels using the
/v1/channels/sell
endpoint, the response includes the form schema needed for the selected payment method. This method simplifies the process by reducing the number of API calls.
- When you query available channels using the
-
Using the
/channels/{channelID}/form
Endpoint:- After selecting a channel, you can retrieve the required form fields by calling the specific form endpoint:
GET / channels / { channelID } / form;
This endpoint provides a JSONForm schema specifying the required fields for the selected payment method.
Best Practices
-
Regular Updates
- Query the available payment channels immediately before displaying them to end users
- Avoid relying on stale or cached data for prolonged periods—channels and their limits (e.g., max/min transaction amounts) can change frequently
-
Error Handling
- Handle channel disablement gracefully, by attempting to retrieve an equivalent channel
- Validate transaction amounts against channel limits, before allowing a customer to select a channel
- Verify all required form fields are available, before allowing a customer to select a channel
-
Performance
- Implement pagination or filtering when listing multiple channels to reduce payload size and improve response times
- If pricing calculations are required, pass any needed parameters (like
FiatAmount
) in the API request
Code Example
Basic channel retrieval and selection:
// 1. Get available countries
const countries = await api.get('/v1/channels/sell/countries');
// 2. Get channels for selected country
const channels = await api.get('/v1/channels/sell', {
params: {
Country: 'GB',
CryptoCurrency: 'BTC',
FiatCurrency: 'GBP',
FiatAmount: '1000',
PageSize: 20,
},
});
// 3. Get form schema for selected channel
const formSchema = await api.get(`/channels/${channelId}/form`);
Related Documentation
- Dynamic Forms
Retrieve and display a channel's required payment details dynamically. - Payment Methods
Understand the various fiat and crypto payment methods supported across different channels. - Webhook Configuration
Set up notifications to receive updates on transactional activity. - Request Signing
Ensure your API requests are secure in production.