List orders
curl --request GET \
--url https://sandboxapi.kelviq.com/api/v1/orders/ \
--header 'Authorization: Bearer <token>'import requests
url = "https://sandboxapi.kelviq.com/api/v1/orders/"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://sandboxapi.kelviq.com/api/v1/orders/', 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://sandboxapi.kelviq.com/api/v1/orders/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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://sandboxapi.kelviq.com/api/v1/orders/"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://sandboxapi.kelviq.com/api/v1/orders/")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandboxapi.kelviq.com/api/v1/orders/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"id": "ORD-20260729103000-AB3K9",
"customer": {
"customerId": "testuser",
"name": "Jane Smith",
"email": "jane@example.com"
},
"product": {
"id": "0d65f7c0-7e91-4f56-9b32-13a9a6a7c1de",
"identifier": "pro-suite",
"name": "Pro Suite",
"description": "Premium tools for growing teams.",
"taxCode": "saas",
"createdBy": "Jane Smith",
"modifiedOn": "2025-04-12T08:21:14.910Z",
"images": [
{
"id": "1f7e1b54-7c6f-4d7e-9a4f-2c9c2d8b9d31",
"name": "hero-banner.png",
"image": "media/.../products/<id>/<uuid>/hero-banner.png",
"ordering": 0,
"thumbnail": true,
"enabled": true
}
]
},
"status": "COMPLETE",
"paidAt": "2026-07-29T10:31:12Z",
"amountSubtotal": "261.00",
"amountDiscount": "0.00",
"amountTax": "0.00",
"amountTotal": "261.00",
"saleCurrency": "USD",
"amountSubtotalUnits": 26100,
"amountDiscountUnits": 0,
"amountTaxUnits": 0,
"amountTotalUnits": 26100,
"saleCurrencySymbol": "$",
"billingAddress": {
"country": "IN",
"line1": "123 Main Street",
"line2": "Apt 4B",
"postalCode": "560001",
"city": "Bangalore",
"state": "Karnataka"
},
"plan": {
"identifier": "pro-monthly",
"name": "Pro Monthly",
"description": "Pro tier billed monthly.",
"product": "0d65f7c0-7e91-4f56-9b32-13a9a6a7c1de",
"metadata": {},
"version": 3,
"isLatest": true,
"modifiedOn": "2025-04-12T08:21:14.910Z",
"createdOn": "2025-03-01T08:21:14.910Z",
"details": {
"stripeProductId": "prod_ABC123"
},
"isVisible": true,
"isImported": false,
"countries": [
"US",
"IN"
],
"license": {
"enabled": true,
"activationLimit": 3,
"activationLimitEnabled": true,
"durationUnit": "YEAR",
"durationValue": 1,
"hasExpiry": true
},
"links": [
{
"name": "Product page",
"url": "https://example.com/product"
}
],
"files": [
{
"id": "bf9f0fe0-c9c0-436d-8811-e412d0365470",
"name": "custom-pricinig.png",
"file": "https://cdn.kelviq.com/media/organizations/8/plan/1ad723d2-40eb-4bf0-b924-557e6697e788/53c28d460fed421a81f6c6e90114ff4f/custom-pricinig.png",
"ordering": 0,
"enabled": true,
"downloadUrl": "https://api.kelviq.com/api/v1/catalog/plans/10-july/file/bf9f0fe0-c9c0-436d-8811-e412d0365470/download/"
}
],
"ordering": 1
},
"billingType": "SUBSCRIPTION",
"license": [
{
"id": "f81efb90-5f29-4dd1-9c7b-be4085e473de",
"licenseKey": "10K-080A3A89-8709-4EB5-80BE-BD37B518CCA1",
"activatedOn": null,
"expiresOn": null,
"activationUsage": 0,
"activationLimit": 2,
"enabled": true
}
],
"isTrial": false,
"subscription": {
"id": "09d706ca-58f3-4fb2-818f-5b8623d67e6e",
"status": "active",
"amount": "261.00",
"currency": "usd",
"interval": "month",
"currencySymbol": "$",
"nextInvoiceDate": "2026-08-28T10:46:34Z"
},
"invoiceId": "INV-20260729103000-XZ7Q1",
"customFieldsData": {},
"paymentMethod": {
"paymentMethodType": "card",
"paymentMethodName": "visa",
"last4": "4242"
}
}
]
}Orders
List orders
Returns a paginated list of orders for the authenticated organization, newest paid first. Orders in PENDING status (payment never attempted/completed) and orders with no attached customer are never included.
GET
/
orders
/
List orders
curl --request GET \
--url https://sandboxapi.kelviq.com/api/v1/orders/ \
--header 'Authorization: Bearer <token>'import requests
url = "https://sandboxapi.kelviq.com/api/v1/orders/"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://sandboxapi.kelviq.com/api/v1/orders/', 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://sandboxapi.kelviq.com/api/v1/orders/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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://sandboxapi.kelviq.com/api/v1/orders/"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://sandboxapi.kelviq.com/api/v1/orders/")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandboxapi.kelviq.com/api/v1/orders/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"id": "ORD-20260729103000-AB3K9",
"customer": {
"customerId": "testuser",
"name": "Jane Smith",
"email": "jane@example.com"
},
"product": {
"id": "0d65f7c0-7e91-4f56-9b32-13a9a6a7c1de",
"identifier": "pro-suite",
"name": "Pro Suite",
"description": "Premium tools for growing teams.",
"taxCode": "saas",
"createdBy": "Jane Smith",
"modifiedOn": "2025-04-12T08:21:14.910Z",
"images": [
{
"id": "1f7e1b54-7c6f-4d7e-9a4f-2c9c2d8b9d31",
"name": "hero-banner.png",
"image": "media/.../products/<id>/<uuid>/hero-banner.png",
"ordering": 0,
"thumbnail": true,
"enabled": true
}
]
},
"status": "COMPLETE",
"paidAt": "2026-07-29T10:31:12Z",
"amountSubtotal": "261.00",
"amountDiscount": "0.00",
"amountTax": "0.00",
"amountTotal": "261.00",
"saleCurrency": "USD",
"amountSubtotalUnits": 26100,
"amountDiscountUnits": 0,
"amountTaxUnits": 0,
"amountTotalUnits": 26100,
"saleCurrencySymbol": "$",
"billingAddress": {
"country": "IN",
"line1": "123 Main Street",
"line2": "Apt 4B",
"postalCode": "560001",
"city": "Bangalore",
"state": "Karnataka"
},
"plan": {
"identifier": "pro-monthly",
"name": "Pro Monthly",
"description": "Pro tier billed monthly.",
"product": "0d65f7c0-7e91-4f56-9b32-13a9a6a7c1de",
"metadata": {},
"version": 3,
"isLatest": true,
"modifiedOn": "2025-04-12T08:21:14.910Z",
"createdOn": "2025-03-01T08:21:14.910Z",
"details": {
"stripeProductId": "prod_ABC123"
},
"isVisible": true,
"isImported": false,
"countries": [
"US",
"IN"
],
"license": {
"enabled": true,
"activationLimit": 3,
"activationLimitEnabled": true,
"durationUnit": "YEAR",
"durationValue": 1,
"hasExpiry": true
},
"links": [
{
"name": "Product page",
"url": "https://example.com/product"
}
],
"files": [
{
"id": "bf9f0fe0-c9c0-436d-8811-e412d0365470",
"name": "custom-pricinig.png",
"file": "https://cdn.kelviq.com/media/organizations/8/plan/1ad723d2-40eb-4bf0-b924-557e6697e788/53c28d460fed421a81f6c6e90114ff4f/custom-pricinig.png",
"ordering": 0,
"enabled": true,
"downloadUrl": "https://api.kelviq.com/api/v1/catalog/plans/10-july/file/bf9f0fe0-c9c0-436d-8811-e412d0365470/download/"
}
],
"ordering": 1
},
"billingType": "SUBSCRIPTION",
"license": [
{
"id": "f81efb90-5f29-4dd1-9c7b-be4085e473de",
"licenseKey": "10K-080A3A89-8709-4EB5-80BE-BD37B518CCA1",
"activatedOn": null,
"expiresOn": null,
"activationUsage": 0,
"activationLimit": 2,
"enabled": true
}
],
"isTrial": false,
"subscription": {
"id": "09d706ca-58f3-4fb2-818f-5b8623d67e6e",
"status": "active",
"amount": "261.00",
"currency": "usd",
"interval": "month",
"currencySymbol": "$",
"nextInvoiceDate": "2026-08-28T10:46:34Z"
},
"invoiceId": "INV-20260729103000-XZ7Q1",
"customFieldsData": {},
"paymentMethod": {
"paymentMethodType": "card",
"paymentMethodName": "visa",
"last4": "4242"
}
}
]
}Click the base URL in the API playground and select the Sandbox host for test data or the Production host for live data. Use credentials from the same environment.
Authorizations
The Server API Key obtained from the kelviq application. Pass as a Bearer token in the Authorization header. Example: 'Authorization: Bearer YOUR_API_KEY'
Query Parameters
Search by order ID, customer name, email, or customer ID.
Filter by order status.
Available options:
PENDING, COMPLETE, FAILED, REFUNDED, PARTIAL_REFUND, CANCELLED, FRAUDULENT Filter by billing type.
Available options:
ONE_TIME, SUBSCRIPTION Filter by whether the order is a recurring renewal charge (true) versus an initial sign-up/one-time purchase (false).
Include orders paid on or after this date.
Include orders paid on or before this date.
Number of results per page. Defaults to 10, maximum 100.
Required range:
1 <= x <= 100Page number to return.
Required range:
x >= 1⌘I