Checkout catalog (corridors, methods, and providers)
curl --request GET \
--url https://sandbox.elementpay.net/api/v1/partner/catalog \
--header 'X-API-Key: <api-key>'import requests
url = "https://sandbox.elementpay.net/api/v1/partner/catalog"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://sandbox.elementpay.net/api/v1/partner/catalog', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://sandbox.elementpay.net/api/v1/partner/catalog",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://sandbox.elementpay.net/api/v1/partner/catalog"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://sandbox.elementpay.net/api/v1/partner/catalog")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.elementpay.net/api/v1/partner/catalog")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"status": "success",
"message": "Supported corridors and payment methods",
"data": {
"disclaimer": "Indicative catalog. Binding eligibility and price: POST /api/v1/partner/orders/quote.",
"onramp": {
"countries": {
"KE": {
"country_code": "KE",
"country_name": "Kenya",
"currency": "KES",
"enabled": true,
"payment_methods": {
"mobile_money": {
"enabled": true,
"label": "Mobile Money",
"quote_type": "mobile_money",
"providers": [
{
"code": "M PESA",
"name": "Mobile Wallet (M-PESA)",
"enabled": true,
"id": "7ea6df5c-6bba-46b2-a7e6-f511959e7edb",
"min_amount": 150,
"max_amount": 250000,
"currency": "KES"
}
]
},
"bank": {
"enabled": true,
"label": "Bank Transfer",
"quote_type": "bank",
"providers": []
}
}
}
}
}
}
}{
"status": "error",
"message": "Provide country for African corridors (e.g. KE) or currency for international bank (EUR/USD).",
"data": null
}{
"status": "error",
"message": "Corridor not supported on this environment.",
"data": {
"currency": "EUR",
"country": "FR"
}
}{
"status": "error",
"message": "Quote request failed",
"data": {
"upstream_http_status": 502
}
}Partner
Checkout catalog (corridors, methods, and providers)
Single indicative catalog for partner checkout: per-country onramp/offramp, mobile_money and bank buckets with live provider lists, optional rails for international payout markets, and international_bank for EUR/USD payin.
GET
/
partner
/
catalog
Checkout catalog (corridors, methods, and providers)
curl --request GET \
--url https://sandbox.elementpay.net/api/v1/partner/catalog \
--header 'X-API-Key: <api-key>'import requests
url = "https://sandbox.elementpay.net/api/v1/partner/catalog"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://sandbox.elementpay.net/api/v1/partner/catalog', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://sandbox.elementpay.net/api/v1/partner/catalog",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://sandbox.elementpay.net/api/v1/partner/catalog"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://sandbox.elementpay.net/api/v1/partner/catalog")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.elementpay.net/api/v1/partner/catalog")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"status": "success",
"message": "Supported corridors and payment methods",
"data": {
"disclaimer": "Indicative catalog. Binding eligibility and price: POST /api/v1/partner/orders/quote.",
"onramp": {
"countries": {
"KE": {
"country_code": "KE",
"country_name": "Kenya",
"currency": "KES",
"enabled": true,
"payment_methods": {
"mobile_money": {
"enabled": true,
"label": "Mobile Money",
"quote_type": "mobile_money",
"providers": [
{
"code": "M PESA",
"name": "Mobile Wallet (M-PESA)",
"enabled": true,
"id": "7ea6df5c-6bba-46b2-a7e6-f511959e7edb",
"min_amount": 150,
"max_amount": 250000,
"currency": "KES"
}
]
},
"bank": {
"enabled": true,
"label": "Bank Transfer",
"quote_type": "bank",
"providers": []
}
}
}
}
}
}
}{
"status": "error",
"message": "Provide country for African corridors (e.g. KE) or currency for international bank (EUR/USD).",
"data": null
}{
"status": "error",
"message": "Corridor not supported on this environment.",
"data": {
"currency": "EUR",
"country": "FR"
}
}{
"status": "error",
"message": "Quote request failed",
"data": {
"upstream_http_status": 502
}
}Single indicative catalog for partner checkout: per-country onramp/offramp,
Optional filters:
mobile_money and bank buckets with live provider lists, optional rails for international payout markets, and international_bank for EUR/USD payin.
Provider IDs
providers[].id is the opaque institution UUID to send as payment_method.network_id on quote. Bank rows may also use GET /partner/banks.
Each provider includes min_amount, max_amount, and currency for checkout validation.
OnRamp and OffRamp provider lists can differ for the same country — filter with
order_type.country, currency, order_type. Omit filters for the full tree.
Binding eligibility:
POST /partner/orders/quote.Authorizations
Partner API key. Sandbox keys start with is_test_; production keys start with is_live_. Keys are not interchangeable across environments. Send on every request. Never expose in browser or mobile clients.
Query Parameters
Filter by ISO country (e.g. KE).
Filter by fiat currency (e.g. KES, EUR).
Filter by order type: OnRamp (buy) or OffRamp (sell).
Example:
"OnRamp"