List invoices
curl --request GET \
--url https://api.truthlocks.com/v1/billing/invoices \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.truthlocks.com/v1/billing/invoices"
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.truthlocks.com/v1/billing/invoices', 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.truthlocks.com/v1/billing/invoices",
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.truthlocks.com/v1/billing/invoices"
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.truthlocks.com/v1/billing/invoices")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.truthlocks.com/v1/billing/invoices")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"items": [
{
"id": "<string>",
"amount": 123,
"currency": "<string>",
"status": "<string>",
"created_at": "<string>"
}
],
"cursor": "<string>"
}{
"code": "AUTH_REQUIRED",
"message": "Authentication required",
"http_status": 401
}Billing
List invoices
Returns a list of invoices for the authenticated tenant, with optional accounting export.
GET
/
v1
/
billing
/
invoices
List invoices
curl --request GET \
--url https://api.truthlocks.com/v1/billing/invoices \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.truthlocks.com/v1/billing/invoices"
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.truthlocks.com/v1/billing/invoices', 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.truthlocks.com/v1/billing/invoices",
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.truthlocks.com/v1/billing/invoices"
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.truthlocks.com/v1/billing/invoices")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.truthlocks.com/v1/billing/invoices")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"items": [
{
"id": "<string>",
"amount": 123,
"currency": "<string>",
"status": "<string>",
"created_at": "<string>"
}
],
"cursor": "<string>"
}{
"code": "AUTH_REQUIRED",
"message": "Authentication required",
"http_status": 401
}GET /v1/billing/invoices
Query parameters
string
Filter invoices created on or after this date (ISO 8601, e.g.
2026-01-01).string
Filter invoices created on or before this date (ISO 8601, e.g.
2026-06-30).Export invoices
GET /v1/billing/exports/accounting
string
Export format:
csv or json. Defaults to csv.string
Start of the date range (
YYYY-MM-DD, e.g. 2026-01-01). Defaults to 30 days ago.string
End of the date range (
YYYY-MM-DD, e.g. 2026-06-30). Defaults to today.Response
Returns an array of invoice objects.string
Invoice identifier.
string
Human-readable invoice number.
string
Payment status:
paid, open, void, or uncollectible.integer
Total amount in the smallest currency unit (e.g., cents for USD).
integer
Amount due in the smallest currency unit.
string
ISO 4217 currency code (e.g.,
usd, ngn).string
ISO 8601 timestamp when the invoice was created.
string
ISO 8601 timestamp when the invoice was finalized and sent.
string
ISO 8601 timestamp for the payment due date.
string
URL to download the full invoice PDF.
string
URL to view the payment receipt (available for paid invoices).

