Create a payment link
curl --request POST \
--url https://api.mysoleas.com/payment-links \
--header 'Content-Type: application/json' \
--header 'x-sp-auth-token: <api-key>' \
--data '
{
"currency": "XAF",
"amount": 123,
"provider": "mtn_cmr",
"customerPaysFees": true,
"customer_pays_fees": true,
"title": "<string>",
"description": "<string>",
"expires_at": "2023-11-07T05:31:56Z",
"max_usage": 2,
"metadata": {},
"amount_unit": "MAJOR"
}
'import requests
url = "https://api.mysoleas.com/payment-links"
payload = {
"currency": "XAF",
"amount": 123,
"provider": "mtn_cmr",
"customerPaysFees": True,
"customer_pays_fees": True,
"title": "<string>",
"description": "<string>",
"expires_at": "2023-11-07T05:31:56Z",
"max_usage": 2,
"metadata": {},
"amount_unit": "MAJOR"
}
headers = {
"x-sp-auth-token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-sp-auth-token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
currency: 'XAF',
amount: 123,
provider: 'mtn_cmr',
customerPaysFees: true,
customer_pays_fees: true,
title: '<string>',
description: '<string>',
expires_at: '2023-11-07T05:31:56Z',
max_usage: 2,
metadata: {},
amount_unit: 'MAJOR'
})
};
fetch('https://api.mysoleas.com/payment-links', 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://api.mysoleas.com/payment-links",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'currency' => 'XAF',
'amount' => 123,
'provider' => 'mtn_cmr',
'customerPaysFees' => true,
'customer_pays_fees' => true,
'title' => '<string>',
'description' => '<string>',
'expires_at' => '2023-11-07T05:31:56Z',
'max_usage' => 2,
'metadata' => [
],
'amount_unit' => 'MAJOR'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-sp-auth-token: <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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.mysoleas.com/payment-links"
payload := strings.NewReader("{\n \"currency\": \"XAF\",\n \"amount\": 123,\n \"provider\": \"mtn_cmr\",\n \"customerPaysFees\": true,\n \"customer_pays_fees\": true,\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"expires_at\": \"2023-11-07T05:31:56Z\",\n \"max_usage\": 2,\n \"metadata\": {},\n \"amount_unit\": \"MAJOR\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-sp-auth-token", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.mysoleas.com/payment-links")
.header("x-sp-auth-token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"currency\": \"XAF\",\n \"amount\": 123,\n \"provider\": \"mtn_cmr\",\n \"customerPaysFees\": true,\n \"customer_pays_fees\": true,\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"expires_at\": \"2023-11-07T05:31:56Z\",\n \"max_usage\": 2,\n \"metadata\": {},\n \"amount_unit\": \"MAJOR\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.mysoleas.com/payment-links")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-sp-auth-token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"currency\": \"XAF\",\n \"amount\": 123,\n \"provider\": \"mtn_cmr\",\n \"customerPaysFees\": true,\n \"customer_pays_fees\": true,\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"expires_at\": \"2023-11-07T05:31:56Z\",\n \"max_usage\": 2,\n \"metadata\": {},\n \"amount_unit\": \"MAJOR\"\n}"
response = http.request(request)
puts response.read_body{
"code": 200,
"success": true,
"locale": "fr",
"message": "<string>",
"meta": {},
"data": {
"reference": "<string>",
"short_code": "<string>",
"payment_url": "<string>",
"status": "ACTIVE",
"amount": 123,
"currency": "<string>",
"title": "<string>",
"description": "<string>",
"expires_at": "<string>",
"created_at": "<string>"
}
}{
"success": false,
"code": 400,
"message": "empty_data",
"error": {
"details": {}
}
}Payment links
Create a payment link
POST
/
payment-links
Create a payment link
curl --request POST \
--url https://api.mysoleas.com/payment-links \
--header 'Content-Type: application/json' \
--header 'x-sp-auth-token: <api-key>' \
--data '
{
"currency": "XAF",
"amount": 123,
"provider": "mtn_cmr",
"customerPaysFees": true,
"customer_pays_fees": true,
"title": "<string>",
"description": "<string>",
"expires_at": "2023-11-07T05:31:56Z",
"max_usage": 2,
"metadata": {},
"amount_unit": "MAJOR"
}
'import requests
url = "https://api.mysoleas.com/payment-links"
payload = {
"currency": "XAF",
"amount": 123,
"provider": "mtn_cmr",
"customerPaysFees": True,
"customer_pays_fees": True,
"title": "<string>",
"description": "<string>",
"expires_at": "2023-11-07T05:31:56Z",
"max_usage": 2,
"metadata": {},
"amount_unit": "MAJOR"
}
headers = {
"x-sp-auth-token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-sp-auth-token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
currency: 'XAF',
amount: 123,
provider: 'mtn_cmr',
customerPaysFees: true,
customer_pays_fees: true,
title: '<string>',
description: '<string>',
expires_at: '2023-11-07T05:31:56Z',
max_usage: 2,
metadata: {},
amount_unit: 'MAJOR'
})
};
fetch('https://api.mysoleas.com/payment-links', 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://api.mysoleas.com/payment-links",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'currency' => 'XAF',
'amount' => 123,
'provider' => 'mtn_cmr',
'customerPaysFees' => true,
'customer_pays_fees' => true,
'title' => '<string>',
'description' => '<string>',
'expires_at' => '2023-11-07T05:31:56Z',
'max_usage' => 2,
'metadata' => [
],
'amount_unit' => 'MAJOR'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-sp-auth-token: <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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.mysoleas.com/payment-links"
payload := strings.NewReader("{\n \"currency\": \"XAF\",\n \"amount\": 123,\n \"provider\": \"mtn_cmr\",\n \"customerPaysFees\": true,\n \"customer_pays_fees\": true,\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"expires_at\": \"2023-11-07T05:31:56Z\",\n \"max_usage\": 2,\n \"metadata\": {},\n \"amount_unit\": \"MAJOR\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-sp-auth-token", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.mysoleas.com/payment-links")
.header("x-sp-auth-token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"currency\": \"XAF\",\n \"amount\": 123,\n \"provider\": \"mtn_cmr\",\n \"customerPaysFees\": true,\n \"customer_pays_fees\": true,\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"expires_at\": \"2023-11-07T05:31:56Z\",\n \"max_usage\": 2,\n \"metadata\": {},\n \"amount_unit\": \"MAJOR\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.mysoleas.com/payment-links")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-sp-auth-token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"currency\": \"XAF\",\n \"amount\": 123,\n \"provider\": \"mtn_cmr\",\n \"customerPaysFees\": true,\n \"customer_pays_fees\": true,\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"expires_at\": \"2023-11-07T05:31:56Z\",\n \"max_usage\": 2,\n \"metadata\": {},\n \"amount_unit\": \"MAJOR\"\n}"
response = http.request(request)
puts response.read_body{
"code": 200,
"success": true,
"locale": "fr",
"message": "<string>",
"meta": {},
"data": {
"reference": "<string>",
"short_code": "<string>",
"payment_url": "<string>",
"status": "ACTIVE",
"amount": 123,
"currency": "<string>",
"title": "<string>",
"description": "<string>",
"expires_at": "<string>",
"created_at": "<string>"
}
}{
"success": false,
"code": 400,
"message": "empty_data",
"error": {
"details": {}
}
}Amount unit
Sendamount in major units by default: 4.01 for 4.01 USD/EUR. API clients that already send cents can set amount_unit: "MINOR" at the root of the JSON body, alongside amount and currency, rather than in metadata. Public responses return major units even when the request uses MINOR. See amounts and currencies.Authorizations
Bearer token obtained with the client_id and client_secret of the application created in SoleasPay. Format: Bearer <access_token>.
Body
application/json
Example:
"XAF"
Amount in major units by default: 4.01 for 4.01 USD/EUR. With root-level amount_unit MINOR, send integer cents (401).
Example:
"mtn_cmr"
Available options:
PROVIDER, WALLET, AUTO Indique qui supporte les fees du lien.
Available options:
CUSTOMER, MERCHANT Available options:
CUSTOMER, MERCHANT Required range:
x >= 1Unit of request amounts. Optional, MAJOR by default. Put this field at the root of the JSON body, not in metadata. MINOR preserves amounts already expressed in the smallest unit.
Available options:
MAJOR, MINOR Example:
"MAJOR"
⌘I
