ERP documents
Quotes, orders, invoices and credit notes synced from your ERP, shop, files or the API — search them, read their lines, find what is past due.
Documents are written by their source (a connector, a file import or POST /sync/ingest) and read here. Each one belongs to a customer company (matched by its ERP code, domain or name), a salesperson and a source. total is incl. tax, net_total excl. tax; paid / unpaid come from the ERP when it records payments. To create or change documents, send them through Data sources.
/documentsSearch documents
Newest first, paginated. Each document comes with its customer, paid, unpaid and is_past_due.
Query parameters
typestringquote,order,invoice,credit_note,delivery,purchase_order,purchase_invoice— one, or several separated by commas.statusstringopen,paid,closed,cancelled…company_iduuid- Documents of one customer.
contact_iduuid- Documents linked to one contact.
ownerstring- Salesperson email, or
me. sourcestring- Source (
sap_b1,odoo,shopify,custom:sage-100,import…). fromdate- Document date on or after (
YYYY-MM-DD). todate- Document date on or before.
numberstring- Exact document number.
past_duebooleantrue: open invoices past their due date.updated_sincedatetime- Only documents synced since — for incremental exports.
orderstringdesc(default) orascby document date.limitinteger- Page size, 1–500. Default 50.
offsetinteger- Rows to skip.
curl "https://meetzy.me/api/v1/documents?type=invoice&past_due=true&limit=100" \ -H "Authorization: Bearer $MEETZY_API_KEY"
const res = await fetch("https://meetzy.me/api/v1/documents?type=invoice&past_due=true&limit=100", {
headers: { Authorization: `Bearer ${process.env.MEETZY_API_KEY}` },
});
const data = await res.json();import os, requests
res = requests.get(
"https://meetzy.me/api/v1/documents?type=invoice&past_due=true&limit=100",
headers={"Authorization": f"Bearer {os.environ['MEETZY_API_KEY']}"},
)
data = res.json(){
"documents": [
{
"id": "83d62171-1cc8-466a-ad9c-f9fbce63d4bf",
"source": "custom:sage-100",
"doc_type": "invoice",
"external_id": "F-1",
"number": "F-1",
"doc_date": "2026-10-07",
"due_date": null,
"status": "open",
"currency": null,
"total": 1200,
"net_total": 1200,
"tax_total": 0,
"company_id": "05762c5d-3e1e-4fcf-adfa-f989a30f8462",
"lead_id": null,
"owner_email": "olivia@acme.com",
"owner_code": null,
"synced_at": "2026-10-07T13:21:04.195+00:00",
"created_at": "2026-10-07T13:09:56.54743+00:00",
"customer": {
"id": null,
"name": "Payfit",
"code": "C1"
},
"paid": null,
"unpaid": null,
"is_past_due": false,
"extra": {
"company_code": "C1",
"company_name": "Payfit"
}
}
],
"total": 1,
"limit": 5,
"offset": 0
}/documents/{id}Get a document with its lines
The document, its customer and its lines (each: sku, name, quantity, unit_price, discount_pct, total, and brand / category when the source sends them).
Path parameters
idstringrequired- Id of the record (UUID).
curl "https://meetzy.me/api/v1/documents/e43414d6-f56f-42be-a64c-a836d6015efc" \ -H "Authorization: Bearer $MEETZY_API_KEY"
const res = await fetch("https://meetzy.me/api/v1/documents/e43414d6-f56f-42be-a64c-a836d6015efc", {
headers: { Authorization: `Bearer ${process.env.MEETZY_API_KEY}` },
});
const data = await res.json();import os, requests
res = requests.get(
"https://meetzy.me/api/v1/documents/e43414d6-f56f-42be-a64c-a836d6015efc",
headers={"Authorization": f"Bearer {os.environ['MEETZY_API_KEY']}"},
)
data = res.json(){
"document": {
"id": "83d62171-1cc8-466a-ad9c-f9fbce63d4bf",
"source": "custom:sage-100",
"doc_type": "invoice",
"external_id": "INV-2026-0412",
"number": "F2026-0412",
"doc_date": "2026-09-30",
"due_date": "2026-11-29",
"status": "open",
"currency": "EUR",
"total": 1500,
"net_total": 1250,
"tax_total": 250,
"company_id": "3cdc3e21-931a-4e8b-a189-3cab5dfbd636",
"lead_id": null,
"owner_email": "olivia@acme.com",
"owner_code": "12",
"synced_at": "2026-10-07T13:16:14.599Z",
"created_at": "2026-10-07T13:09:56.547Z",
"customer": {
"id": "3cdc3e21-931a-4e8b-a189-3cab5dfbd636",
"name": "Payfit",
"domain": "payfit.com"
},
"paid": 500,
"unpaid": 1000,
"is_past_due": false,
"extra": {
"company_code": "C-1001",
"company_name": "Payfit",
"paid": 500,
"unpaid": 1000,
"customer_ref": "PO-889"
},
"lines": [
{
"sku": "SKU-100",
"name": "Eau de parfum 50 ml",
"quantity": 24,
"unit_price": 42,
"discount_pct": 0,
"total": 1008,
"brand": "Maison X",
"category": "Fragrances"
}
]
}
}