billing
GET /v1/accounting/xero/oauth/callback
Where Xero returns the customer after they authorize us.
Authentication
This endpoint is public. It takes no credential and no organisation — it is what our own marketing site and AI answer engines read.
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 GET https://api.zinndigital.com/v1/accounting/xero/oauth/callbackSigned 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
⛔ **Not called by a client** — Xero redirects the customer's browser here, so it is unauthenticated by necessity and all of its authority comes from the signed `state` minted by `startXeroConnect`. A missing, tampered or expired state is refused identically, and told apart only in our logs. Always answers with a 302 back to the dashboard rather than JSON, because the caller is a person in a browser. The outcome is carried in the query string.
Parameters
| Name | Type | Required | What it is |
|---|---|---|---|
code (query) | string | No | Xero's authorization code. |
state (query) | string | No | The signed state minted by `startXeroConnect`. |
error (query) | string | No | Present when the customer declined on Xero's consent screen. |