API reference
Invoices
Your monthly invoices to customers and from HoundSat, their device-level lines, previews and totals.
Each month two kinds of invoices are generated from the month's final usage: retail invoices from you to each customer, and a wholesale invoice from HoundSat to you. You issue your retail invoices (finalize, void, mark paid); the billed organization's Owner can pay an open invoice with its saved payment method. Owners and Admins only.
Endpoints
- get
/api/json/invoicesList invoices - get
/api/json/invoices/{id}Get an invoice - get
/api/json/invoices/previewPreview this month - get
/api/json/invoices/totalsGet a month's total - patch
/api/json/invoices/{id}/finalizeFinalize an invoice - patch
/api/json/invoices/{id}/mark_paidMark an invoice paid - patch
/api/json/invoices/{id}/voidVoid an invoice - patch
/api/json/invoices/{id}/payPay an invoice - get
/api/json/invoice_line_itemsList invoice lines - get
/api/json/invoice_line_items/{id}Get an invoice line - get
/api/exports/invoices.csvExport invoice lines as CSV
The invoice object
A monthly invoice, its status and totals.
Attributes
iduuidRequiredUnique identifier.
basisenumRequiredThe usage billed: cdr.
One of
cdrbilled_iduuidRequiredbilled_namestringRequiredThe billed organization's name when the invoice was generated.
currencystringRequiredAlways USD.
customer_iduuid· nullableScope: the billed customer (retail only).
due_attimestamp· nullableissued_at + payment terms (14 days).
inserted_attimestampRequiredinvoice_run_iduuid· nullableissued_attimestamp· nullableWhen it was finalized.
issuer_iduuidRequiredissuer_namestringRequiredThe issuer's name when the invoice was generated.
kindenumRequiredwholesale (platform -> reseller) | retail (reseller -> customer).
One of
wholesaleretaillast_payment_errorstring· nullableWhy the last payment attempt failed, in words for the user (null once paid).
last_payment_error_codestring· nullableThe payment processor's code for the last failure (e.g. card_declined).
numberstring· nullableINV-YYYY-NNNNNN, assigned on finalize (null while draft).
overdueboolean· nullableOpen and past due (derived, not a status).
paid_attimestamp· nullablepayment_referencestring· nullableThe payment processor's reference of the charge (a PaymentIntent id).
perioddateRequiredThe month billed (first of the month, UTC).
reseller_iduuid· nullableScope: the billed reseller (wholesale) or the issuing reseller (retail).
statusenumRequireddraft | open | processing | paid | void.
One of
draftopenprocessingpaidvoidsubtotal_centsintegerRequiredSum of the lines, US cents.
total_centsintegerRequiredAmount due, US cents (no tax: equals subtotal_cents).
updated_attimestampRequiredvoided_attimestamp· nullable
{
"type": "invoice",
"id": "5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8",
"attributes": {
"basis": "cdr",
"billed_id": "0b6d4e2a-1c9f-4a3b-8e5d-7f2c0a9b6d13",
"billed_name": "…",
"currency": "usd",
"customer_id": "c41e9a03-6b2f-4d8e-a571-0f3b9c2d7e14",
"due_at": "2026-10-12T14:03:21Z",
"inserted_at": "2026-10-12T14:03:21Z",
"invoice_run_id": "0b6d4e2a-1c9f-4a3b-8e5d-7f2c0a9b6d13",
"issued_at": "2026-10-12T14:03:21Z",
"issuer_id": "0b6d4e2a-1c9f-4a3b-8e5d-7f2c0a9b6d13",
"issuer_name": "…",
"kind": "wholesale",
"last_payment_error": null,
"last_payment_error_code": null,
"number": "INV-2026-000042",
"overdue": false,
"paid_at": null,
"payment_reference": "…",
"period": "2026-10-01",
"reseller_id": "a7d35c90-2e14-4f6b-8c03-5b9e1d4a2f67",
"status": "open",
"subtotal_cents": 1250,
"total_cents": 1250,
"updated_at": "2026-10-12T14:03:21Z",
"voided_at": null
}
}The invoice line object
One device's charge, or a pool line, on an invoice.
Attributes
iduuidRequiredUnique identifier.
amount_centsintegerRequiredquantity x unit_price, rounded half-up (US cents).
billed_iduuidRequiredThe invoice's billed organization.
customer_iduuid· nullableThe customer the line was billed under (wholesale: null for inventory, pool lines or a device that changed customer).
customer_namestring· nullableThe customer's name when the invoice was generated.
descriptionstringRequireddevice_iduuid· nullableThe device; null on a pooled plan's pool line.
iccidstring· nullableThe device's ICCID (snapshot).
inserted_attimestampRequiredinvoice_iduuidRequiredissuer_iduuidRequiredThe invoice's issuer.
kindenumRequiredThe invoice's kind.
One of
wholesaleretailperioddateRequiredThe invoice's month.
plan_iduuid· nullableThe plan priced: retail plan (retail) or wholesale plan (wholesale).
plan_namestringRequiredThe plan's name when the invoice was generated.
positionintegerRequiredOrder within the invoice (1-based).
quantitystringRequiredDevices (fees) or MB (data), exact.
unit_pricestringRequiredUS cents per unit, exact.
usage_bytesintegerRequiredThe device's usage in the month (repeated on each of its lines); 0 on a pool line.
{
"type": "invoice_line_item",
"id": "5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8",
"attributes": {
"amount_cents": 1250,
"billed_id": "0b6d4e2a-1c9f-4a3b-8e5d-7f2c0a9b6d13",
"customer_id": "c41e9a03-6b2f-4d8e-a571-0f3b9c2d7e14",
"customer_name": "…",
"description": "Fleet telemetry",
"device_id": "5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8",
"iccid": "8999001234000020718",
"inserted_at": "2026-10-12T14:03:21Z",
"invoice_id": "6c0a8e2d-9f4b-4b17-a3c6-2e7d5f1b9a04",
"issuer_id": "0b6d4e2a-1c9f-4a3b-8e5d-7f2c0a9b6d13",
"kind": "wholesale",
"period": "2026-10-01",
"plan_id": "9b2e4f61-7c3a-4d05-a8e9-3f1c6b0d5a72",
"plan_name": "…",
"position": 1,
"quantity": "…",
"unit_price": "…",
"usage_bytes": 48213
}
}Endpoints
List invoices
/api/json/invoicesInvoices you issue or are billed, newest period first. Filter by kind, period, status, issuer_id and billed_id.
- Who
- Resellers and Customers
- Roles
- Owner, Admin
Query parameters
filter[<field>]objectNarrows the list:
filter[status]=active, or with an operator:filter[inserted_at][greater_than_or_equal]=2026-10-01T00:00:00Z. Operators:in,is_nil,greater_than,greater_than_or_equal,less_than,less_than_or_equal.One of
basisbilled_idbilled_namecurrencycustomer_iddue_atidinserted_atinvoice_run_idissued_atissuer_idissuer_namekindlast_payment_errorlast_payment_error_codenumberoverduepaid_atpayment_referenceperiodreseller_idstatussubtotal_centstotal_centsupdated_atvoided_atsortstringA field to sort by; prefix it with
-for descending, e.g.sort=-inserted_at. Separate several with commas.page[limit]integerPage size: 50 by default, at most 200.
page[after]stringThe cursor from
links.nextof the previous page.page[offset]works too.page[count]booleantrueadds the total number of matches inmeta.page.total.
curl https://api.houndsat.com/api/json/invoices \
-H "Authorization: Bearer $HOUNDSAT_TOKEN"{
"data": [
{
"type": "invoice",
"id": "5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8",
"attributes": {
"basis": "cdr",
"billed_id": "0b6d4e2a-1c9f-4a3b-8e5d-7f2c0a9b6d13",
"billed_name": "…",
"currency": "usd",
"customer_id": "c41e9a03-6b2f-4d8e-a571-0f3b9c2d7e14",
"due_at": "2026-10-12T14:03:21Z",
"inserted_at": "2026-10-12T14:03:21Z",
"invoice_run_id": "0b6d4e2a-1c9f-4a3b-8e5d-7f2c0a9b6d13",
"issued_at": "2026-10-12T14:03:21Z",
"issuer_id": "0b6d4e2a-1c9f-4a3b-8e5d-7f2c0a9b6d13",
"issuer_name": "…",
"kind": "wholesale",
"last_payment_error": null,
"last_payment_error_code": null,
"number": "INV-2026-000042",
"overdue": false,
"paid_at": null,
"payment_reference": "…",
"period": "2026-10-01",
"reseller_id": "a7d35c90-2e14-4f6b-8c03-5b9e1d4a2f67",
"status": "open",
"subtotal_cents": 1250,
"total_cents": 1250,
"updated_at": "2026-10-12T14:03:21Z",
"voided_at": null
}
}
],
"links": {
"next": "/api/json/invoices?page[after]=g2wAAAABbQAAACQ1ZjBj…"
}
}Get an invoice
/api/json/invoices/{id}One invoice you issue or are billed.
- Who
- Resellers and Customers
- Roles
- Owner, Admin
Path parameters
iduuidRequiredThe record's id.
curl https://api.houndsat.com/api/json/invoices/5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8 \
-H "Authorization: Bearer $HOUNDSAT_TOKEN"{
"data": {
"type": "invoice",
"id": "5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8",
"attributes": {
"basis": "cdr",
"billed_id": "0b6d4e2a-1c9f-4a3b-8e5d-7f2c0a9b6d13",
"billed_name": "…",
"currency": "usd",
"customer_id": "c41e9a03-6b2f-4d8e-a571-0f3b9c2d7e14",
"due_at": "2026-10-12T14:03:21Z",
"inserted_at": "2026-10-12T14:03:21Z",
"invoice_run_id": "0b6d4e2a-1c9f-4a3b-8e5d-7f2c0a9b6d13",
"issued_at": "2026-10-12T14:03:21Z",
"issuer_id": "0b6d4e2a-1c9f-4a3b-8e5d-7f2c0a9b6d13",
"issuer_name": "…",
"kind": "wholesale",
"last_payment_error": null,
"last_payment_error_code": null,
"number": "INV-2026-000042",
"overdue": false,
"paid_at": null,
"payment_reference": "…",
"period": "2026-10-01",
"reseller_id": "a7d35c90-2e14-4f6b-8c03-5b9e1d4a2f67",
"status": "open",
"subtotal_cents": 1250,
"total_cents": 1250,
"updated_at": "2026-10-12T14:03:21Z",
"voided_at": null
}
}
}Preview this month
/api/json/invoices/previewThis month's charges as they would be invoiced now, grouped by customer with one line per device. kind=retail previews what you bill your customers; kind=wholesale what HoundSat bills you.
- Who
- Resellers and Customers
- Roles
- Owner, Admin
Query parameters
kindenumRequiredretail | wholesale
One of
wholesaleretailmonthdateAny day of the month (default: the current UTC month). Not in the future.
curl https://api.houndsat.com/api/json/invoices/preview?kind=retail \
-H "Authorization: Bearer $HOUNDSAT_TOKEN"{
"basis": "api",
"currency": "usd",
"groups": [
{
"customer": {
"id": "5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8",
"name": "Northwind Freight"
},
"lines": [
{}
],
"reseller": {
"id": "5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8",
"name": "Northwind Freight"
},
"running_total_cents": 1250,
"subtotal_cents": 1250
}
],
"kind": "retail",
"month": "2026-10-01",
"total_cents": 1250,
"unbilled_device_ids": [
"0b6d4e2a-1c9f-4a3b-8e5d-7f2c0a9b6d13"
]
}Get a month's total
/api/json/invoices/totalsThe total of your issued invoices (open, processing or paid) of one month and kind.
- Who
- Resellers and Customers
- Roles
- Owner, Admin
Query parameters
kindenumRequiredretail | wholesale
One of
wholesaleretailmonthdateAny day of the month (default: the previous UTC month).
curl https://api.houndsat.com/api/json/invoices/totals?kind=retail \
-H "Authorization: Bearer $HOUNDSAT_TOKEN"{
"currency": "usd",
"invoice_count": 3,
"kind": "wholesale",
"month": "2026-10-01",
"reseller_count": 3,
"total_cents": 1250
}Finalize an invoice
/api/json/invoices/{id}/finalizeIssues a draft retail invoice: assigns its number and sets issued_at and due_at (14 days later).
- Who
- Resellers
- Roles
- Owner, Admin
Path parameters
iduuidRequiredThe record's id.
curl -X PATCH https://api.houndsat.com/api/json/invoices/5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8/finalize \
-H "Authorization: Bearer $HOUNDSAT_TOKEN" \
-H "Content-Type: application/vnd.api+json" \
-d '{"data":{"type":"invoice","id":"5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8","attributes":{}}}'{
"data": {
"type": "invoice",
"id": "5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8",
"attributes": {
"basis": "cdr",
"billed_id": "0b6d4e2a-1c9f-4a3b-8e5d-7f2c0a9b6d13",
"billed_name": "…",
"currency": "usd",
"customer_id": "c41e9a03-6b2f-4d8e-a571-0f3b9c2d7e14",
"due_at": "2026-10-12T14:03:21Z",
"inserted_at": "2026-10-12T14:03:21Z",
"invoice_run_id": "0b6d4e2a-1c9f-4a3b-8e5d-7f2c0a9b6d13",
"issued_at": "2026-10-12T14:03:21Z",
"issuer_id": "0b6d4e2a-1c9f-4a3b-8e5d-7f2c0a9b6d13",
"issuer_name": "…",
"kind": "wholesale",
"last_payment_error": null,
"last_payment_error_code": null,
"number": "INV-2026-000042",
"overdue": false,
"paid_at": null,
"payment_reference": "…",
"period": "2026-10-01",
"reseller_id": "a7d35c90-2e14-4f6b-8c03-5b9e1d4a2f67",
"status": "open",
"subtotal_cents": 1250,
"total_cents": 1250,
"updated_at": "2026-10-12T14:03:21Z",
"voided_at": null
}
}
}Mark an invoice paid
/api/json/invoices/{id}/mark_paidRecords a payment you received outside HoundSat for an open retail invoice.
- Who
- Resellers
- Roles
- Owner, Admin
Path parameters
iduuidRequiredThe record's id.
curl -X PATCH https://api.houndsat.com/api/json/invoices/5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8/mark_paid \
-H "Authorization: Bearer $HOUNDSAT_TOKEN" \
-H "Content-Type: application/vnd.api+json" \
-d '{"data":{"type":"invoice","id":"5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8","attributes":{}}}'{
"data": {
"type": "invoice",
"id": "5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8",
"attributes": {
"basis": "cdr",
"billed_id": "0b6d4e2a-1c9f-4a3b-8e5d-7f2c0a9b6d13",
"billed_name": "…",
"currency": "usd",
"customer_id": "c41e9a03-6b2f-4d8e-a571-0f3b9c2d7e14",
"due_at": "2026-10-12T14:03:21Z",
"inserted_at": "2026-10-12T14:03:21Z",
"invoice_run_id": "0b6d4e2a-1c9f-4a3b-8e5d-7f2c0a9b6d13",
"issued_at": "2026-10-12T14:03:21Z",
"issuer_id": "0b6d4e2a-1c9f-4a3b-8e5d-7f2c0a9b6d13",
"issuer_name": "…",
"kind": "wholesale",
"last_payment_error": null,
"last_payment_error_code": null,
"number": "INV-2026-000042",
"overdue": false,
"paid_at": null,
"payment_reference": "…",
"period": "2026-10-01",
"reseller_id": "a7d35c90-2e14-4f6b-8c03-5b9e1d4a2f67",
"status": "open",
"subtotal_cents": 1250,
"total_cents": 1250,
"updated_at": "2026-10-12T14:03:21Z",
"voided_at": null
}
}
}Void an invoice
/api/json/invoices/{id}/voidVoids a draft or open retail invoice. The next invoice run of the month issues a new one.
- Who
- Resellers
- Roles
- Owner, Admin
Path parameters
iduuidRequiredThe record's id.
curl -X PATCH https://api.houndsat.com/api/json/invoices/5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8/void \
-H "Authorization: Bearer $HOUNDSAT_TOKEN" \
-H "Content-Type: application/vnd.api+json" \
-d '{"data":{"type":"invoice","id":"5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8","attributes":{}}}'{
"data": {
"type": "invoice",
"id": "5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8",
"attributes": {
"basis": "cdr",
"billed_id": "0b6d4e2a-1c9f-4a3b-8e5d-7f2c0a9b6d13",
"billed_name": "…",
"currency": "usd",
"customer_id": "c41e9a03-6b2f-4d8e-a571-0f3b9c2d7e14",
"due_at": "2026-10-12T14:03:21Z",
"inserted_at": "2026-10-12T14:03:21Z",
"invoice_run_id": "0b6d4e2a-1c9f-4a3b-8e5d-7f2c0a9b6d13",
"issued_at": "2026-10-12T14:03:21Z",
"issuer_id": "0b6d4e2a-1c9f-4a3b-8e5d-7f2c0a9b6d13",
"issuer_name": "…",
"kind": "wholesale",
"last_payment_error": null,
"last_payment_error_code": null,
"number": "INV-2026-000042",
"overdue": false,
"paid_at": null,
"payment_reference": "…",
"period": "2026-10-01",
"reseller_id": "a7d35c90-2e14-4f6b-8c03-5b9e1d4a2f67",
"status": "open",
"subtotal_cents": 1250,
"total_cents": 1250,
"updated_at": "2026-10-12T14:03:21Z",
"voided_at": null
}
}
}Pay an invoice
/api/json/invoices/{id}/payCharges an open invoice billed to your organization to its default payment method. A card payment ends paid; a US bank payment processing until it settles. A declined payment leaves the invoice open with last_payment_error set.
- Who
- Resellers and Customers
- Roles
- Owner
Path parameters
iduuidRequiredThe record's id.
curl -X PATCH https://api.houndsat.com/api/json/invoices/5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8/pay \
-H "Authorization: Bearer $HOUNDSAT_TOKEN" \
-H "Content-Type: application/vnd.api+json" \
-d '{"data":{"type":"invoice","id":"5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8","attributes":{}}}'{
"data": {
"type": "invoice",
"id": "5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8",
"attributes": {
"basis": "cdr",
"billed_id": "0b6d4e2a-1c9f-4a3b-8e5d-7f2c0a9b6d13",
"billed_name": "…",
"currency": "usd",
"customer_id": "c41e9a03-6b2f-4d8e-a571-0f3b9c2d7e14",
"due_at": "2026-10-12T14:03:21Z",
"inserted_at": "2026-10-12T14:03:21Z",
"invoice_run_id": "0b6d4e2a-1c9f-4a3b-8e5d-7f2c0a9b6d13",
"issued_at": "2026-10-12T14:03:21Z",
"issuer_id": "0b6d4e2a-1c9f-4a3b-8e5d-7f2c0a9b6d13",
"issuer_name": "…",
"kind": "wholesale",
"last_payment_error": null,
"last_payment_error_code": null,
"number": "INV-2026-000042",
"overdue": false,
"paid_at": null,
"payment_reference": "…",
"period": "2026-10-01",
"reseller_id": "a7d35c90-2e14-4f6b-8c03-5b9e1d4a2f67",
"status": "open",
"subtotal_cents": 1250,
"total_cents": 1250,
"updated_at": "2026-10-12T14:03:21Z",
"voided_at": null
}
}
}List invoice lines
/api/json/invoice_line_itemsLines of the invoices you issue or are billed. Filter by invoice_id, kind, period, customer_id and device_id.
- Who
- Resellers and Customers
- Roles
- Owner, Admin
Query parameters
filter[<field>]objectNarrows the list:
filter[status]=active, or with an operator:filter[inserted_at][greater_than_or_equal]=2026-10-01T00:00:00Z. Operators:in,is_nil,greater_than,greater_than_or_equal,less_than,less_than_or_equal.One of
amount_centsbilled_idcustomer_idcustomer_namedescriptiondevice_idiccididinserted_atinvoice_idissuer_idkindperiodplan_idplan_namepositionquantityunit_priceusage_bytessortstringA field to sort by; prefix it with
-for descending, e.g.sort=-inserted_at. Separate several with commas.page[limit]integerPage size: 50 by default, at most 200.
page[after]stringThe cursor from
links.nextof the previous page.page[offset]works too.page[count]booleantrueadds the total number of matches inmeta.page.total.
curl https://api.houndsat.com/api/json/invoice_line_items \
-H "Authorization: Bearer $HOUNDSAT_TOKEN"{
"data": [
{
"type": "invoice_line_item",
"id": "5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8",
"attributes": {
"amount_cents": 1250,
"billed_id": "0b6d4e2a-1c9f-4a3b-8e5d-7f2c0a9b6d13",
"customer_id": "c41e9a03-6b2f-4d8e-a571-0f3b9c2d7e14",
"customer_name": "…",
"description": "Fleet telemetry",
"device_id": "5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8",
"iccid": "8999001234000020718",
"inserted_at": "2026-10-12T14:03:21Z",
"invoice_id": "6c0a8e2d-9f4b-4b17-a3c6-2e7d5f1b9a04",
"issuer_id": "0b6d4e2a-1c9f-4a3b-8e5d-7f2c0a9b6d13",
"kind": "wholesale",
"period": "2026-10-01",
"plan_id": "9b2e4f61-7c3a-4d05-a8e9-3f1c6b0d5a72",
"plan_name": "…",
"position": 1,
"quantity": "…",
"unit_price": "…",
"usage_bytes": 48213
}
}
],
"links": {
"next": "/api/json/invoice_line_items?page[after]=g2wAAAABbQAAACQ1ZjBj…"
}
}Get an invoice line
/api/json/invoice_line_items/{id}One invoice line.
- Who
- Resellers and Customers
- Roles
- Owner, Admin
Path parameters
iduuidRequiredThe record's id.
curl https://api.houndsat.com/api/json/invoice_line_items/5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8 \
-H "Authorization: Bearer $HOUNDSAT_TOKEN"{
"data": {
"type": "invoice_line_item",
"id": "5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8",
"attributes": {
"amount_cents": 1250,
"billed_id": "0b6d4e2a-1c9f-4a3b-8e5d-7f2c0a9b6d13",
"customer_id": "c41e9a03-6b2f-4d8e-a571-0f3b9c2d7e14",
"customer_name": "…",
"description": "Fleet telemetry",
"device_id": "5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8",
"iccid": "8999001234000020718",
"inserted_at": "2026-10-12T14:03:21Z",
"invoice_id": "6c0a8e2d-9f4b-4b17-a3c6-2e7d5f1b9a04",
"issuer_id": "0b6d4e2a-1c9f-4a3b-8e5d-7f2c0a9b6d13",
"kind": "wholesale",
"period": "2026-10-01",
"plan_id": "9b2e4f61-7c3a-4d05-a8e9-3f1c6b0d5a72",
"plan_name": "…",
"position": 1,
"quantity": "…",
"unit_price": "…",
"usage_bytes": 48213
}
}
}Export invoice lines as CSV
/api/exports/invoices.csvThe device-level lines of your issued invoices of one month and kind, as a CSV file whose amounts add up to the month's total.
- Who
- Resellers and Customers
- Roles
- Owner, Admin
Query parameters
monthdateRequiredYYYY-MM, or any YYYY-MM-DD of the month
kindenumRequiredInvoice kind
One of
wholesaleretail
curl https://api.houndsat.com/api/exports/invoices.csv?month=2026-09&kind=retail \
-H "Authorization: Bearer $HOUNDSAT_TOKEN"month,invoice_number,invoice_status,issuer,billed_organization,customer,device_iccid,plan,description,quantity,unit_price_cents,usage_bytes,amount_cents
2026-09,INV-2026-000042,open,Acme Connect,Northwind Freight,Northwind Freight,8999001234000020718,Fleet Basic,Monthly fee,1,1500,272000,1500