curl --request GET \
--url https://api.agentaos.ai/api/v1/gateway/invoices \
--header 'x-api-key: <api-key>'import requests
url = "https://api.agentaos.ai/api/v1/gateway/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.agentaos.ai/api/v1/gateway/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.agentaos.ai/api/v1/gateway/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.agentaos.ai/api/v1/gateway/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.agentaos.ai/api/v1/gateway/invoices")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.agentaos.ai/api/v1/gateway/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": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"invoice_number": "<string>",
"transaction_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"session_id": "<string>",
"amount": 123,
"currency": "<string>",
"payment_token": "<string>",
"fiat_amount": 123,
"exchange_rate": 123,
"exchange_rate_source": "<string>",
"tax_rate": 123,
"tax_amount": 123,
"tax_name": "<string>",
"tax_inclusive": true,
"merchant_name": "<string>",
"buyer_email": "<string>",
"buyer_name": "<string>",
"buyer_company": "<string>",
"buyer_country": "<string>",
"buyer_vat": "<string>",
"tx_hash": "<string>",
"issued_at": "2023-11-07T05:31:56Z",
"voided_at": "2023-11-07T05:31:56Z",
"created_at": "2023-11-07T05:31:56Z"
}
],
"total": 123,
"hasMore": true
}{
"statusCode": 401,
"message": "Invalid API key",
"timestamp": "2026-08-06T12:00:00.000Z"
}List invoices
Paginated. Every checkout issues an invoice: issued the moment the checkout is created, paid once the payment settles, or voided if cancelled. The seller of record is our Estonian entity, AgentaOS’s Merchant of Record entity, unless the payment settled to your own on-chain wallet (seller_mode: "crypto"), in which case you’re the seller.
curl --request GET \
--url https://api.agentaos.ai/api/v1/gateway/invoices \
--header 'x-api-key: <api-key>'import requests
url = "https://api.agentaos.ai/api/v1/gateway/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.agentaos.ai/api/v1/gateway/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.agentaos.ai/api/v1/gateway/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.agentaos.ai/api/v1/gateway/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.agentaos.ai/api/v1/gateway/invoices")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.agentaos.ai/api/v1/gateway/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": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"invoice_number": "<string>",
"transaction_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"session_id": "<string>",
"amount": 123,
"currency": "<string>",
"payment_token": "<string>",
"fiat_amount": 123,
"exchange_rate": 123,
"exchange_rate_source": "<string>",
"tax_rate": 123,
"tax_amount": 123,
"tax_name": "<string>",
"tax_inclusive": true,
"merchant_name": "<string>",
"buyer_email": "<string>",
"buyer_name": "<string>",
"buyer_company": "<string>",
"buyer_country": "<string>",
"buyer_vat": "<string>",
"tx_hash": "<string>",
"issued_at": "2023-11-07T05:31:56Z",
"voided_at": "2023-11-07T05:31:56Z",
"created_at": "2023-11-07T05:31:56Z"
}
],
"total": 123,
"hasMore": true
}{
"statusCode": 401,
"message": "Invalid API key",
"timestamp": "2026-08-06T12:00:00.000Z"
}amount, fiat_amount, and tax_amount are decimal currency units, same as everywhere else in this API. 19.99 means EUR 19.99, not cents. See Money model.Authorizations
Your secret key, from app.agentaos.ai -> Settings -> Developers -> API Keys. The key's prefix is both its identity and its environment: sk_test_... (sandbox, free, no verification) or sk_live_... (real money, requires business verification). A missing or invalid key returns 401.
Query Parameters
Items per page. Capped server-side at 5000.
1 <= x <= 5000Number of items to skip, for the next page.
x >= 0ISO 8601 date or datetime, inclusive lower bound.
ISO 8601 date or datetime, inclusive upper bound.
all, issued, paid, voided Filter to rows settled/presented in this fiat currency.
EUR, USD Comma-separated CAIP-2 network IDs to filter by, e.g. eip155:8453,eip155:84532. Ignored if your API key is network-scoped.