Pay a payment link
curl --request POST \
--url https://api.mysoleas.com/pay/{shortCode}/pay \
--header 'Content-Type: application/json' \
--data '
{
"customer_phone": "237670000000",
"transaction_uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"customer_name": "<string>",
"customer_email": "jsmith@example.com",
"amount": 123,
"provider": "<string>",
"otp": 123,
"metadata": {},
"amount_unit": "MAJOR",
"currency": "USD",
"source_amount": 123,
"source_currency": "EUR"
}
'import requests
url = "https://api.mysoleas.com/pay/{shortCode}/pay"
payload = {
"customer_phone": "237670000000",
"transaction_uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"customer_name": "<string>",
"customer_email": "jsmith@example.com",
"amount": 123,
"provider": "<string>",
"otp": 123,
"metadata": {},
"amount_unit": "MAJOR",
"currency": "USD",
"source_amount": 123,
"source_currency": "EUR"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
customer_phone: '237670000000',
transaction_uuid: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
customer_name: '<string>',
customer_email: 'jsmith@example.com',
amount: 123,
provider: '<string>',
otp: 123,
metadata: {},
amount_unit: 'MAJOR',
currency: 'USD',
source_amount: 123,
source_currency: 'EUR'
})
};
fetch('https://api.mysoleas.com/pay/{shortCode}/pay', 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/pay/{shortCode}/pay",
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([
'customer_phone' => '237670000000',
'transaction_uuid' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'customer_name' => '<string>',
'customer_email' => 'jsmith@example.com',
'amount' => 123,
'provider' => '<string>',
'otp' => 123,
'metadata' => [
],
'amount_unit' => 'MAJOR',
'currency' => 'USD',
'source_amount' => 123,
'source_currency' => 'EUR'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$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/pay/{shortCode}/pay"
payload := strings.NewReader("{\n \"customer_phone\": \"237670000000\",\n \"transaction_uuid\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"customer_name\": \"<string>\",\n \"customer_email\": \"jsmith@example.com\",\n \"amount\": 123,\n \"provider\": \"<string>\",\n \"otp\": 123,\n \"metadata\": {},\n \"amount_unit\": \"MAJOR\",\n \"currency\": \"USD\",\n \"source_amount\": 123,\n \"source_currency\": \"EUR\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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/pay/{shortCode}/pay")
.header("Content-Type", "application/json")
.body("{\n \"customer_phone\": \"237670000000\",\n \"transaction_uuid\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"customer_name\": \"<string>\",\n \"customer_email\": \"jsmith@example.com\",\n \"amount\": 123,\n \"provider\": \"<string>\",\n \"otp\": 123,\n \"metadata\": {},\n \"amount_unit\": \"MAJOR\",\n \"currency\": \"USD\",\n \"source_amount\": 123,\n \"source_currency\": \"EUR\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.mysoleas.com/pay/{shortCode}/pay")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"customer_phone\": \"237670000000\",\n \"transaction_uuid\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"customer_name\": \"<string>\",\n \"customer_email\": \"jsmith@example.com\",\n \"amount\": 123,\n \"provider\": \"<string>\",\n \"otp\": 123,\n \"metadata\": {},\n \"amount_unit\": \"MAJOR\",\n \"currency\": \"USD\",\n \"source_amount\": 123,\n \"source_currency\": \"EUR\"\n}"
response = http.request(request)
puts response.read_body{
"code": 200,
"success": true,
"locale": "fr",
"message": "<string>",
"meta": {},
"data": {
"transaction_reference": "<string>",
"environment": "prod",
"invoice_reference": "<string>",
"provider_reference": "<string>",
"status": "INITIATED",
"operation": "COLLECTION",
"channel": "PROVIDER",
"amount": 123,
"currency": "<string>",
"confirmation_method": "MSISDN",
"confirmation_url": "<string>",
"fee": 123,
"required_total": 123,
"settlement_mode": "DIRECT",
"split_reference": "<string>",
"split_status": "NONE",
"created_at": "<string>",
"updated_at": "<string>",
"amount_unit": "MAJOR"
}
}{
"success": false,
"code": 400,
"message": "empty_data",
"error": {
"details": {}
}
}Payment links
Pay a link
POST
/
pay
/
{shortCode}
/
pay
Pay a payment link
curl --request POST \
--url https://api.mysoleas.com/pay/{shortCode}/pay \
--header 'Content-Type: application/json' \
--data '
{
"customer_phone": "237670000000",
"transaction_uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"customer_name": "<string>",
"customer_email": "jsmith@example.com",
"amount": 123,
"provider": "<string>",
"otp": 123,
"metadata": {},
"amount_unit": "MAJOR",
"currency": "USD",
"source_amount": 123,
"source_currency": "EUR"
}
'import requests
url = "https://api.mysoleas.com/pay/{shortCode}/pay"
payload = {
"customer_phone": "237670000000",
"transaction_uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"customer_name": "<string>",
"customer_email": "jsmith@example.com",
"amount": 123,
"provider": "<string>",
"otp": 123,
"metadata": {},
"amount_unit": "MAJOR",
"currency": "USD",
"source_amount": 123,
"source_currency": "EUR"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
customer_phone: '237670000000',
transaction_uuid: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
customer_name: '<string>',
customer_email: 'jsmith@example.com',
amount: 123,
provider: '<string>',
otp: 123,
metadata: {},
amount_unit: 'MAJOR',
currency: 'USD',
source_amount: 123,
source_currency: 'EUR'
})
};
fetch('https://api.mysoleas.com/pay/{shortCode}/pay', 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/pay/{shortCode}/pay",
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([
'customer_phone' => '237670000000',
'transaction_uuid' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'customer_name' => '<string>',
'customer_email' => 'jsmith@example.com',
'amount' => 123,
'provider' => '<string>',
'otp' => 123,
'metadata' => [
],
'amount_unit' => 'MAJOR',
'currency' => 'USD',
'source_amount' => 123,
'source_currency' => 'EUR'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$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/pay/{shortCode}/pay"
payload := strings.NewReader("{\n \"customer_phone\": \"237670000000\",\n \"transaction_uuid\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"customer_name\": \"<string>\",\n \"customer_email\": \"jsmith@example.com\",\n \"amount\": 123,\n \"provider\": \"<string>\",\n \"otp\": 123,\n \"metadata\": {},\n \"amount_unit\": \"MAJOR\",\n \"currency\": \"USD\",\n \"source_amount\": 123,\n \"source_currency\": \"EUR\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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/pay/{shortCode}/pay")
.header("Content-Type", "application/json")
.body("{\n \"customer_phone\": \"237670000000\",\n \"transaction_uuid\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"customer_name\": \"<string>\",\n \"customer_email\": \"jsmith@example.com\",\n \"amount\": 123,\n \"provider\": \"<string>\",\n \"otp\": 123,\n \"metadata\": {},\n \"amount_unit\": \"MAJOR\",\n \"currency\": \"USD\",\n \"source_amount\": 123,\n \"source_currency\": \"EUR\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.mysoleas.com/pay/{shortCode}/pay")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"customer_phone\": \"237670000000\",\n \"transaction_uuid\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"customer_name\": \"<string>\",\n \"customer_email\": \"jsmith@example.com\",\n \"amount\": 123,\n \"provider\": \"<string>\",\n \"otp\": 123,\n \"metadata\": {},\n \"amount_unit\": \"MAJOR\",\n \"currency\": \"USD\",\n \"source_amount\": 123,\n \"source_currency\": \"EUR\"\n}"
response = http.request(request)
puts response.read_body{
"code": 200,
"success": true,
"locale": "fr",
"message": "<string>",
"meta": {},
"data": {
"transaction_reference": "<string>",
"environment": "prod",
"invoice_reference": "<string>",
"provider_reference": "<string>",
"status": "INITIATED",
"operation": "COLLECTION",
"channel": "PROVIDER",
"amount": 123,
"currency": "<string>",
"confirmation_method": "MSISDN",
"confirmation_url": "<string>",
"fee": 123,
"required_total": 123,
"settlement_mode": "DIRECT",
"split_reference": "<string>",
"split_status": "NONE",
"created_at": "<string>",
"updated_at": "<string>",
"amount_unit": "MAJOR"
}
}{
"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.Path Parameters
Pattern:
^[A-Za-z0-9]{8,12}$Body
application/json
Example:
"237670000000"
Amount in major units by default: 4.01 for 4.01 USD/EUR. With root-level amount_unit MINOR, send integer cents (401).
Available options:
PROVIDER, WALLET, AUTO Unit 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"
Currency of the selected payment; the link currency is used if this field is omitted.
Example:
"USD"
Link amount in source_currency before conversion. Follows root-level amount_unit.
Source currency of the link amount before conversion.
Example:
"EUR"
⌘I
