Connect Paid to your Xero organization so every invoice Paid issues lands in Xero with the right revenue account and tax code. The integration creates a Xero ACCREC invoice for each Paid invoice, upserts the corresponding Xero contact, attaches the Paid invoice PDF, and updates the Xero invoice status as the Paid invoice moves through draft, authorised, and voided states.
Before you connect, make sure you have:
200 - Sales by default).Navigate to Settings → Integrations and find the Xero card. Click Connect.
You will be redirected to Xero’s authorization screen. Pick the Xero organization you want to link, review the requested permissions, and approve. Paid asks for:
accounting.invoices and accounting.payments for invoice and payment syncaccounting.contacts for customer syncaccounting.settings.read to read your chart of accounts and active tax ratesaccounting.attachments to upload the Paid PDF onto each Xero invoiceOnce authorization completes you are redirected back to Paid. The Xero card will show a green Connected badge with the linked tenant name.
If you need to switch which Xero organization is linked, disconnect first and then reconnect. The disconnect flow revokes the prior grant on Xero’s side so the next authorize prompt lets you pick a different organization.
From the Xero card, click Configure Xero invoice mapping. This page is where you set the defaults Paid uses when pushing invoice lines, plus per-product overrides.
These apply to every invoice line that does not have a product-specific mapping.
200 - Sales account, or pick any active revenue-class account from your chart.Why is there no default for taxed lines? Paid sends the computed tax amount on every line. For taxed lines, Paid lets Xero apply the revenue account’s configured rate automatically, which lines up with the amount Paid already calculated upstream (for example via Avalara). You do not need to pick a taxed rate code by hand.
Below the defaults you can map individual Paid products to specific Xero revenue accounts. This is useful when different products should post to different general ledger accounts.
When you finish, click Save in the top right. Paid validates every code against your live Xero chart of accounts before saving, so an invalid code is rejected up front rather than failing later during invoice sync.
When Paid pushes an invoice line to Xero, it walks the following resolution chain.
Account code. Per-product mapping → integration default → Xero’s seed account 200.
Tax type. If the line’s tax amount is zero, Paid uses the integration-wide default zero-tax code (or “NONE” if you have not chosen one). If the line’s tax amount is non-zero, Paid omits the tax type and lets Xero apply the revenue account’s configured rate. The tax amount Paid sends is preserved either way.
To switch which Xero organization is linked, or to refresh the OAuth grant:
Disconnecting wipes per-product account mappings for the disconnected tenant. If you reconnect to the same Xero organization later, you will need to re-create those mappings. Reconnecting to a different tenant is the expected case, since codes from the old chart of accounts would not match the new one anyway.
The dropdown shows “Loading accounts…” and never finishes. Paid caches your Xero chart of accounts and tax rates for ten minutes per tenant to stay inside Xero’s 5,000-call daily limit. If a fetch fails, the dropdown surfaces the error toast. Try again after a minute. If it keeps failing, disconnect and reconnect to refresh the OAuth token.
An invoice failed to sync with “Account code is not valid”. The mapped account is no longer active in Xero (it was archived or removed). Update the product or integration mapping to a current account and retry the sync.
I do not see my tax rate in the zero-tax dropdown. Paid only surfaces tax rates that are active in Xero, applicable to sales (ACCREC) lines, and zero-rated. If a rate is missing, confirm it is active in Xero and that its rate is exactly 0 percent.
The Xero invoice has a different number than the Paid invoice. That is intentional. Paid lets Xero auto-generate the InvoiceNumber to avoid collisions on retries, and stamps the Paid invoice number into the Reference field on the Xero invoice so you can still cross-reference them.