All twins

Xero

live · conformance passing

Models the Xero Accounting API an integration actually posts to — contacts, the chart of accounts, items, invoices through their status lifecycle, and payments that move what an invoice still owes — over OAuth 2.0 with a tenant, Xero's .NET date encoding, its rate-limit headers and its idempotency keys.

Category
Accounting
Sandbox key
eyJ…
Verified against
xero-python 15.2.0
Replaces
A shared demo company, and a 60-call minute you cannot get back

Scenarios

Start a sandbox in one of these, or describe the state you want in a sentence and the seeder writes the records it implies.

  • Overdue receivables

    Authorised invoices past their due date against one contact, one of them part paid, for collections and ageing logic.

  • Rate limited

    The tenant starts with no per-minute allowance left.

  • Disconnected tenant

    The access token is live but the tenant connection is gone.

What it models

Records your code can read, write and edit for the life of the sandbox. A route the twin does not model returns a provider-shaped refusal rather than a plausible response.

  • contacts
  • accounts
  • items
  • invoices
  • payments
  • organisation
  • idempotency_keys

Verified in CI against

  • pythonxero-python15.2.0

Live · console.twinbay.ai

Start with one base URL.

Create a sandbox, describe the state you want it in, and point your existing SDK at the hostname it gives you. The sandbox logs each request your agent makes, and you can edit any record it holds.

Start building

A sandbox in under a minute, no card required. Twinbay is free for academic researchers.