Create Payment Links
curl --request POST \
--url https://checkout-api-service.epayclub.com/checkout/links/create \
--header 'Content-Type: application/json' \
--header 'api-key: <api-key>' \
--data '
{
"Name": "<string>",
"Description": "<string>",
"PaymentType": "<string>",
"Currency": "<string>",
"AuthOption": "<string>",
"Amount": "<string>",
"Mobile": "<string>",
"BackgroundImage": "<string>",
"Website": "<string>",
"Limit": "<string>"
}
'import requests
url = "https://checkout-api-service.epayclub.com/checkout/links/create"
payload = {
"Name": "<string>",
"Description": "<string>",
"PaymentType": "<string>",
"Currency": "<string>",
"AuthOption": "<string>",
"Amount": "<string>",
"Mobile": "<string>",
"BackgroundImage": "<string>",
"Website": "<string>",
"Limit": "<string>"
}
headers = {
"api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
Name: '<string>',
Description: '<string>',
PaymentType: '<string>',
Currency: '<string>',
AuthOption: '<string>',
Amount: '<string>',
Mobile: '<string>',
BackgroundImage: '<string>',
Website: '<string>',
Limit: '<string>'
})
};
fetch('https://checkout-api-service.epayclub.com/checkout/links/create', 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://checkout-api-service.epayclub.com/checkout/links/create",
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([
'Name' => '<string>',
'Description' => '<string>',
'PaymentType' => '<string>',
'Currency' => '<string>',
'AuthOption' => '<string>',
'Amount' => '<string>',
'Mobile' => '<string>',
'BackgroundImage' => '<string>',
'Website' => '<string>',
'Limit' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://checkout-api-service.epayclub.com/checkout/links/create"
payload := strings.NewReader("{\n \"Name\": \"<string>\",\n \"Description\": \"<string>\",\n \"PaymentType\": \"<string>\",\n \"Currency\": \"<string>\",\n \"AuthOption\": \"<string>\",\n \"Amount\": \"<string>\",\n \"Mobile\": \"<string>\",\n \"BackgroundImage\": \"<string>\",\n \"Website\": \"<string>\",\n \"Limit\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("api-key", "<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://checkout-api-service.epayclub.com/checkout/links/create")
.header("api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"Name\": \"<string>\",\n \"Description\": \"<string>\",\n \"PaymentType\": \"<string>\",\n \"Currency\": \"<string>\",\n \"AuthOption\": \"<string>\",\n \"Amount\": \"<string>\",\n \"Mobile\": \"<string>\",\n \"BackgroundImage\": \"<string>\",\n \"Website\": \"<string>\",\n \"Limit\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://checkout-api-service.epayclub.com/checkout/links/create")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"Name\": \"<string>\",\n \"Description\": \"<string>\",\n \"PaymentType\": \"<string>\",\n \"Currency\": \"<string>\",\n \"AuthOption\": \"<string>\",\n \"Amount\": \"<string>\",\n \"Mobile\": \"<string>\",\n \"BackgroundImage\": \"<string>\",\n \"Website\": \"<string>\",\n \"Limit\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"paymentLink": {
"id": 133,
"name": "Checkout TestAB",
"paymentType": null,
"logo": "https://merchant-api-service.devepayclub.com/subsidiary/dashboard/file/epayclub-compliance-images/download?fileId=",
"amount": null,
"dateCreated": "2025-04-15T00:16:33.984405",
"reference": "vxwHip7xXm4xtPUtg0ZzDv$0noEby6MIPxG74O9nm4v3b1tby9mnErxfSOY_AZ0412",
"createdBy": null,
"creatorEmail": null,
"isActive": true,
"currency": "USD",
"limit": 1,
"paymentLinkUrl": "https://payment-link.devepayclub.com/vxwHip7xXm4xtPUtg0ZzDv$0noEby6MIPxG74O9nm4v3b1tby9mnErxfSOY_AZ0412",
"appEnvironmentId": 1,
"paymentLinkType": "Single Charge",
"paymentLinkCode": "SC",
"description": "A Demo to understand how payment links work."
},
"subsidiary": {
"id": 1,
"name": "Merchant Epayclub",
"country": "NG",
"supportEmail": "merchant@epayclub.com",
"customization": null
}
},
"status": "success",
"statusCode": "00",
"message": "Payment details fetched successfully"
}
{
"status": "failed",
"statusCode": "VAL400",
"message": "The Name field is required."
}
Payment Links
Create Payment Links
Create a payment link for your customer.
POST
/
checkout
/
links
/
create
Create Payment Links
curl --request POST \
--url https://checkout-api-service.epayclub.com/checkout/links/create \
--header 'Content-Type: application/json' \
--header 'api-key: <api-key>' \
--data '
{
"Name": "<string>",
"Description": "<string>",
"PaymentType": "<string>",
"Currency": "<string>",
"AuthOption": "<string>",
"Amount": "<string>",
"Mobile": "<string>",
"BackgroundImage": "<string>",
"Website": "<string>",
"Limit": "<string>"
}
'import requests
url = "https://checkout-api-service.epayclub.com/checkout/links/create"
payload = {
"Name": "<string>",
"Description": "<string>",
"PaymentType": "<string>",
"Currency": "<string>",
"AuthOption": "<string>",
"Amount": "<string>",
"Mobile": "<string>",
"BackgroundImage": "<string>",
"Website": "<string>",
"Limit": "<string>"
}
headers = {
"api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
Name: '<string>',
Description: '<string>',
PaymentType: '<string>',
Currency: '<string>',
AuthOption: '<string>',
Amount: '<string>',
Mobile: '<string>',
BackgroundImage: '<string>',
Website: '<string>',
Limit: '<string>'
})
};
fetch('https://checkout-api-service.epayclub.com/checkout/links/create', 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://checkout-api-service.epayclub.com/checkout/links/create",
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([
'Name' => '<string>',
'Description' => '<string>',
'PaymentType' => '<string>',
'Currency' => '<string>',
'AuthOption' => '<string>',
'Amount' => '<string>',
'Mobile' => '<string>',
'BackgroundImage' => '<string>',
'Website' => '<string>',
'Limit' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://checkout-api-service.epayclub.com/checkout/links/create"
payload := strings.NewReader("{\n \"Name\": \"<string>\",\n \"Description\": \"<string>\",\n \"PaymentType\": \"<string>\",\n \"Currency\": \"<string>\",\n \"AuthOption\": \"<string>\",\n \"Amount\": \"<string>\",\n \"Mobile\": \"<string>\",\n \"BackgroundImage\": \"<string>\",\n \"Website\": \"<string>\",\n \"Limit\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("api-key", "<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://checkout-api-service.epayclub.com/checkout/links/create")
.header("api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"Name\": \"<string>\",\n \"Description\": \"<string>\",\n \"PaymentType\": \"<string>\",\n \"Currency\": \"<string>\",\n \"AuthOption\": \"<string>\",\n \"Amount\": \"<string>\",\n \"Mobile\": \"<string>\",\n \"BackgroundImage\": \"<string>\",\n \"Website\": \"<string>\",\n \"Limit\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://checkout-api-service.epayclub.com/checkout/links/create")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"Name\": \"<string>\",\n \"Description\": \"<string>\",\n \"PaymentType\": \"<string>\",\n \"Currency\": \"<string>\",\n \"AuthOption\": \"<string>\",\n \"Amount\": \"<string>\",\n \"Mobile\": \"<string>\",\n \"BackgroundImage\": \"<string>\",\n \"Website\": \"<string>\",\n \"Limit\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"paymentLink": {
"id": 133,
"name": "Checkout TestAB",
"paymentType": null,
"logo": "https://merchant-api-service.devepayclub.com/subsidiary/dashboard/file/epayclub-compliance-images/download?fileId=",
"amount": null,
"dateCreated": "2025-04-15T00:16:33.984405",
"reference": "vxwHip7xXm4xtPUtg0ZzDv$0noEby6MIPxG74O9nm4v3b1tby9mnErxfSOY_AZ0412",
"createdBy": null,
"creatorEmail": null,
"isActive": true,
"currency": "USD",
"limit": 1,
"paymentLinkUrl": "https://payment-link.devepayclub.com/vxwHip7xXm4xtPUtg0ZzDv$0noEby6MIPxG74O9nm4v3b1tby9mnErxfSOY_AZ0412",
"appEnvironmentId": 1,
"paymentLinkType": "Single Charge",
"paymentLinkCode": "SC",
"description": "A Demo to understand how payment links work."
},
"subsidiary": {
"id": 1,
"name": "Merchant Epayclub",
"country": "NG",
"supportEmail": "merchant@epayclub.com",
"customization": null
}
},
"status": "success",
"statusCode": "00",
"message": "Payment details fetched successfully"
}
{
"status": "failed",
"statusCode": "VAL400",
"message": "The Name field is required."
}
This endpoint doesn’t require encryption.
The name displayed on the payment form.
Additional information about the payment form.
Specify the payment type as either
SC, MC and SUB. Learn more about supported payments for payment links here.The transaction currency. This defaults to NGN.
Authentication method, specify
AUTH for 3DS and NOAUTH for NoAuth payments.The transaction amount. Leave empty to allow the customer enter the amount value on the payment form.
The customer’s mobile number.
Specify the URL for the background image.
Specify the redirect URL for completed payments.
The number of subscribers that can use this payment link.
{
"data": {
"paymentLink": {
"id": 133,
"name": "Checkout TestAB",
"paymentType": null,
"logo": "https://merchant-api-service.devepayclub.com/subsidiary/dashboard/file/epayclub-compliance-images/download?fileId=",
"amount": null,
"dateCreated": "2025-04-15T00:16:33.984405",
"reference": "vxwHip7xXm4xtPUtg0ZzDv$0noEby6MIPxG74O9nm4v3b1tby9mnErxfSOY_AZ0412",
"createdBy": null,
"creatorEmail": null,
"isActive": true,
"currency": "USD",
"limit": 1,
"paymentLinkUrl": "https://payment-link.devepayclub.com/vxwHip7xXm4xtPUtg0ZzDv$0noEby6MIPxG74O9nm4v3b1tby9mnErxfSOY_AZ0412",
"appEnvironmentId": 1,
"paymentLinkType": "Single Charge",
"paymentLinkCode": "SC",
"description": "A Demo to understand how payment links work."
},
"subsidiary": {
"id": 1,
"name": "Merchant Epayclub",
"country": "NG",
"supportEmail": "merchant@epayclub.com",
"customization": null
}
},
"status": "success",
"statusCode": "00",
"message": "Payment details fetched successfully"
}
{
"status": "failed",
"statusCode": "VAL400",
"message": "The Name field is required."
}
⌘I

