POST or PUT.
Before you start
- A Xero account with permission to connect apps to the organisation you want to import into.
- A CSVbox sheet with its columns defined.
How it works
1
Select Xero as the destination type
Open your sheet, go to Destination, and choose Xero from the list.
2
Connect your Xero account
Click Connect to Xero. You’re redirected to Xero’s sign-in and consent screen. Select the organisation you want to authorise and click Allow access.You’re returned to CSVbox with the connection marked as valid, and the name of the connected organisation is shown.
If you cancel on the Xero consent screen, your sheet keeps its previous destination.
3
Choose an endpoint
Select the Xero API endpoint that should receive the data, for example
/Contacts, /Invoices, or /Payments. The list is built from Xero’s official Accounting OpenAPI specification and only includes endpoints that accept POST or PUT. Each entry shows its HTTP method.An endpoint and method are required. You can’t save the destination without them.4
Map sheet columns to Xero fields
Match each column in your sheet to a Xero field. The fields come from the selected endpoint and show their type (string, number, boolean, date, or enum).
- Use dot notation for nested fields, such as
Phones.PhoneNumberorAddresses.AddressLine1. - Use
[]for line items on an array field, such asLineItems[].DescriptionorLineItems[].UnitAmount. - Columns you leave unmapped aren’t sent.
5
Save the destination
Click Save. The destination is active for all new uploads.
Permissions CSVbox requests
How data is sent
CSVbox reads each row, converts the mapped columns to the types Xero expects, and groups the rows into batches of 100. Each batch is sent as one request:summarizeErrors=false is set, Xero validates every record on its own. One bad row doesn’t block the other 99 in the batch. Progress is streamed live to the importer.
Type conversion
- Empty cells are skipped. The field isn’t sent.
- A row that fails conversion isn’t sent. It’s reported with its row number and field, for example
row 12, field Status: invalid value "Active"; allowed: ACCOUNTS, ....
Import results
Per-row problems, including Xero validation messages and conversion errors, are listed in the import’s error log. For example:
Token handling
- Access tokens are refreshed automatically before they expire, so you never have to re-enter anything.
- If Xero rejects a request with
401, CSVbox refreshes the token and retries once. - If the refresh token itself is no longer valid, the connection is marked as disconnected and the import fails with
Xero refresh token expired — reconnect Xero to continue. This happens when access was revoked in Xero, or when the connection went unused for 60 days. Click Connect to Xero again to fix it.
Troubleshooting
Disconnecting
Click Disconnect in the destination settings to remove the stored Xero tokens and mapping from the sheet. To also revoke CSVbox’s access on Xero’s side, remove the app under Xero → Settings → Connected apps.Good to know
- Each sheet connects to one Xero organisation at a time.
- Credentials are stored per sheet and aren’t shared between sheets.
- Only endpoints that accept
POSTorPUTare offered. Read-only endpoints aren’t available. - A single file is limited by your plan’s row limit. Rows beyond the limit aren’t sent.

