billing

PATCH /v1/accounting/xero

Change what a connection syncs.

All billing endpoints

Authentication

Send an API key as a bearer token. The key must carry the billing.invoice.manage permission; a key without it is refused with 403, not 404.

This endpoint takes no organisation id. Your key already identifies the organisation it belongs to, and the response is scoped to it.

Try it

Replace anything in angle brackets with your own values, and the key placeholder with a key from your dashboard.

curl -X PATCH https://api.zinndigital.com/v1/accounting/xero \
  -H "Authorization: Bearer zdk_live_…" \
  -H "Content-Type: application/json" \
  -d '{ "includeSubclientInvoices": <boolean> }'

Signed in? The API console in your dashboard fills in your real organisation id and your own key, and runs the request against the live API so you can see the actual response. Open this endpoint in the API console

Details

Today the one option is `includeSubclientInvoices`, which is meaningful only for a reseller: with it on, the invoices the reseller raised **to its own clients** are pushed into the reseller's Xero as well as the invoices Zinn® raised to them. ⛔ It never widens the scope to invoices Zinn® raised **directly** to those clients. Those are Zinn®'s own sales, on Zinn®'s legal entity, and are none of the reseller's business — the engine discriminates on the invoice's legal entity owner, not on the organization tree alone. Requires `billing.invoice.manage`.

Request body

NameTypeRequiredWhat it is
includeSubclientInvoicesbooleanYesSee `updateXeroConnection`.

Response

NameTypeRequiredWhat it is
idUuidNoUUIDv7 identifier — sortable by creation time (docs/02 §8).
statusstring<not_connected, connected, needs_reconnect, disconnected>Yes`connected` is healthy. `needs_reconnect` means the link died (Xero expires a refresh token after 60 days of inactivity, and access can be revoked in Xero) — invoices raised mea…
tenantNamestringNoThe Xero organization's own name. ⭐ The single most useful field on the screen: connecting the wrong company is the mistake that hurts, and the name is what lets a customer see…
includeSubclientInvoicesbooleanNoReseller option — also push the invoices this organization raised to its OWN clients. Never includes invoices Zinn® raised directly to those clients.
entitledbooleanNoWhether the plan includes accounting sync (or it has been bought as an add-on). Reported even when false so the screen can explain rather than show nothing.
connectedAtstringNo
lastSyncAtstringNoWhen a push last SUCCEEDED. Null means never — not "broken".
brokenSincestringNoWhen it first stopped working, so "down for three weeks" is answerable.
lastErrorstringNoA reason written for the customer. Never the vendor's error verbatim.
countsXeroSyncCountsYesHow this organization's invoices stand with Xero.

Errors this endpoint can return

401 · 403 · 404 · 422 · 429