List project payments
curl --request GET \
--url https://dev.api.withconvexity.com/v1/payments \
--header 'Authorization: Bearer <token>'import requests
url = "https://dev.api.withconvexity.com/v1/payments"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://dev.api.withconvexity.com/v1/payments', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"status": true,
"message": "Payments retrieved successfully",
"data": {
"items": [
{
"id": "pay_01HZX8N2K9",
"purpose": "SUBSCRIPTION",
"status": "SUCCESS",
"amount": 1500000,
"currency": "NGN",
"paymentRef": "sub_charge_9f2a1c",
"subscriptionId": "9c3d5a7e-1b2c-4d5e-8f90-abcdef123456",
"projectId": "66f0a1b2c3d4e5f601234567",
"planId": 3,
"billingCycle": "MONTHLY",
"businessId": "42",
"providerId": "prov_kora",
"reference": "KPY-REF-0099",
"amountUsd": "9.87",
"description": "Pro plan, monthly",
"createdBy": "system",
"createdAt": "2026-06-01T09:15:00.000Z",
"updatedAt": "2026-06-01T09:15:03.000Z"
}
],
"total": 1,
"page": 1,
"pageSize": 20
}
}{
"status": false,
"message": "Authorization token is missing or malformed."
}{
"status": false,
"message": "Test tokens are not allowed, please use your live api key."
}{
"status": false,
"message": "Too many requests. Please try again later.",
"retryAfter": 30
}Payments
List project payments
Returns a paginated list of payments for the calling project, newest first.
GET
/
v1
/
payments
List project payments
curl --request GET \
--url https://dev.api.withconvexity.com/v1/payments \
--header 'Authorization: Bearer <token>'import requests
url = "https://dev.api.withconvexity.com/v1/payments"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://dev.api.withconvexity.com/v1/payments', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"status": true,
"message": "Payments retrieved successfully",
"data": {
"items": [
{
"id": "pay_01HZX8N2K9",
"purpose": "SUBSCRIPTION",
"status": "SUCCESS",
"amount": 1500000,
"currency": "NGN",
"paymentRef": "sub_charge_9f2a1c",
"subscriptionId": "9c3d5a7e-1b2c-4d5e-8f90-abcdef123456",
"projectId": "66f0a1b2c3d4e5f601234567",
"planId": 3,
"billingCycle": "MONTHLY",
"businessId": "42",
"providerId": "prov_kora",
"reference": "KPY-REF-0099",
"amountUsd": "9.87",
"description": "Pro plan, monthly",
"createdBy": "system",
"createdAt": "2026-06-01T09:15:00.000Z",
"updatedAt": "2026-06-01T09:15:03.000Z"
}
],
"total": 1,
"page": 1,
"pageSize": 20
}
}{
"status": false,
"message": "Authorization token is missing or malformed."
}{
"status": false,
"message": "Test tokens are not allowed, please use your live api key."
}{
"status": false,
"message": "Too many requests. Please try again later.",
"retryAfter": 30
}Authorizations
OAuth 2.0 access token from Auth-Edge.
Query Parameters
Page number.
Items per page (max 100).
Filter by payment purpose.
Available options:
SUBSCRIPTION, WALLET_TOPUP Filter by payment status.
Available options:
PENDING, SUCCESS, FAILED, REFUNDED Filter by subscription id.
Response
OK
The response is of type object.
