curl --request GET \
--url https://api.sbx.moduluslabs.io/ecom/v1/payment-links/{id} \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.sbx.moduluslabs.io/ecom/v1/payment-links/{id}"
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://api.sbx.moduluslabs.io/ecom/v1/payment-links/{id}', 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.sbx.moduluslabs.io/ecom/v1/payment-links/{id}",
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://api.sbx.moduluslabs.io/ecom/v1/payment-links/{id}"
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://api.sbx.moduluslabs.io/ecom/v1/payment-links/{id}")
.header("X-API-Key", "<api-key>")
.asString();using RestSharp;
var options = new RestClientOptions("https://api.sbx.moduluslabs.io/ecom/v1/payment-links/{id}");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("X-API-Key", "<api-key>");
var response = await client.GetAsync(request);
Console.WriteLine("{0}", response.Content);
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"type": "ONE_TIME",
"merchant_branch_reference_number": "SH-ANG-001",
"currency": "PHP",
"amount": 150000,
"line_items": [
{
"sku": "PROD-001",
"name": "Wireless Earbuds",
"unit_price": 75000,
"quantity": 2,
"metadata": {}
}
],
"description": "Order for wireless earbuds",
"status": "ACTIVE",
"expires_at": "2026-07-18T00:00:00Z",
"url": "https://pay.sbx.moduluslabs.io/550e8400-e29b-41d4-a716-446655440000",
"max_uses": 10,
"successful_payment_count": 3,
"metadata": {},
"created_at": "2026-06-18T10:30:00Z",
"updated_at": "2026-06-18T14:22:00Z",
"cancelled_at": "2023-11-07T05:31:56Z",
"cancellation_reason": "<string>",
"order_reference": "ORD-2026-0618-001",
"redirect_urls": {
"success": "https://merchant.com/payment/success",
"declined": "https://merchant.com/payment/declined",
"expired": "https://merchant.com/payment/expired"
}
}{
"error": {
"code": "UNAUTHORIZED",
"message": "Missing or invalid API key."
}
}{
"error": {
"code": "FORBIDDEN",
"message": "You do not have access to the requested resource."
}
}{
"error": {
"code": "NOT_FOUND",
"message": "payment link not found",
"correlation_id": "a084e7ab-e80e-4232-b6b7-280167765883"
}
}{
"error": {
"code": "INTERNAL_ERROR",
"message": "internal error",
"correlation_id": "a084e7ab-e80e-4232-b6b7-280167765883"
}
}Retrieve Payment Link
Retrieve the details of an existing payment link by ID
curl --request GET \
--url https://api.sbx.moduluslabs.io/ecom/v1/payment-links/{id} \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.sbx.moduluslabs.io/ecom/v1/payment-links/{id}"
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://api.sbx.moduluslabs.io/ecom/v1/payment-links/{id}', 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.sbx.moduluslabs.io/ecom/v1/payment-links/{id}",
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://api.sbx.moduluslabs.io/ecom/v1/payment-links/{id}"
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://api.sbx.moduluslabs.io/ecom/v1/payment-links/{id}")
.header("X-API-Key", "<api-key>")
.asString();using RestSharp;
var options = new RestClientOptions("https://api.sbx.moduluslabs.io/ecom/v1/payment-links/{id}");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("X-API-Key", "<api-key>");
var response = await client.GetAsync(request);
Console.WriteLine("{0}", response.Content);
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"type": "ONE_TIME",
"merchant_branch_reference_number": "SH-ANG-001",
"currency": "PHP",
"amount": 150000,
"line_items": [
{
"sku": "PROD-001",
"name": "Wireless Earbuds",
"unit_price": 75000,
"quantity": 2,
"metadata": {}
}
],
"description": "Order for wireless earbuds",
"status": "ACTIVE",
"expires_at": "2026-07-18T00:00:00Z",
"url": "https://pay.sbx.moduluslabs.io/550e8400-e29b-41d4-a716-446655440000",
"max_uses": 10,
"successful_payment_count": 3,
"metadata": {},
"created_at": "2026-06-18T10:30:00Z",
"updated_at": "2026-06-18T14:22:00Z",
"cancelled_at": "2023-11-07T05:31:56Z",
"cancellation_reason": "<string>",
"order_reference": "ORD-2026-0618-001",
"redirect_urls": {
"success": "https://merchant.com/payment/success",
"declined": "https://merchant.com/payment/declined",
"expired": "https://merchant.com/payment/expired"
}
}{
"error": {
"code": "UNAUTHORIZED",
"message": "Missing or invalid API key."
}
}{
"error": {
"code": "FORBIDDEN",
"message": "You do not have access to the requested resource."
}
}{
"error": {
"code": "NOT_FOUND",
"message": "payment link not found",
"correlation_id": "a084e7ab-e80e-4232-b6b7-280167765883"
}
}{
"error": {
"code": "INTERNAL_ERROR",
"message": "internal error",
"correlation_id": "a084e7ab-e80e-4232-b6b7-280167765883"
}
}status, url, and successful_payment_count.404 NOT_FOUND (not 403, to avoid leaking whether the link exists). See why cross-tenant reads return 404.Authorizations
API key enabled for the requested payment-link operation and associated with an eligible partner, merchant, or branch account.
Path Parameters
The payment link ID (UUID v7).
Response
The requested payment link
The payment link object returned by all endpoints.
Unique identifier (UUID v7). Use this in API paths and for tracking.
"550e8400-e29b-41d4-a716-446655440000"
Payment-link usage model. ONE_TIME accepts one successful payment; MULTI_USE can accept multiple successful payments.
ONE_TIME, MULTI_USE Reference number of the branch this link belongs to.
"SH-ANG-001"
ISO 4217 currency code.
"PHP"
Payment amount in the currency's smallest unit (for PHP, centavos). 150000 = PHP 1,500.00.
150000
Items the customer is paying for.
Show child attributes
Show child attributes
Merchant-defined description displayed to the customer.
"Order for wireless earbuds"
Current payment-link lifecycle status.
ACTIVE, CONSUMED, EXPIRED, CANCELLED RFC 3339 timestamp. When the link stops accepting payments.
"2026-07-18T00:00:00Z"
The URL to share with customers. Read-only.
"https://pay.sbx.moduluslabs.io/550e8400-e29b-41d4-a716-446655440000"
Maximum number of successful payments allowed. null means unlimited. ONE_TIME links always have a value of 1.
10
Number of successful payments completed so far.
3
Merchant key-value pairs. Max 50 keys, key max 40 Unicode characters, value max 500 Unicode characters, and max 10,000 serialized bytes.
Show child attributes
Show child attributes
RFC 3339 timestamp. When the link was created.
"2026-06-18T10:30:00Z"
RFC 3339 timestamp. When the link was last modified.
"2026-06-18T14:22:00Z"
RFC 3339 timestamp. When the link was cancelled. null if not cancelled.
Reason for cancellation. null if not cancelled.
500Merchant's internal order reference for reconciliation.
100"ORD-2026-0618-001"
Customer redirect destinations for successful, declined, or expired outcomes. null when no redirects are configured.
Show child attributes
Show child attributes
Was this page helpful?