Accounting
How do I send field service invoices to Xero as drafts for approval?
Have the field service app create each invoice in Xero with a status that is not yet approved, then approve it inside Xero or an approval tool such as ApprovalMax. Xero's API accepts three starting statuses for a sales invoice: DRAFT (shown as Draft), SUBMITTED (shown as Awaiting Approval) and AUTHORISED (shown as Awaiting Payment). If your approvals run in ApprovalMax, send invoices as Awaiting Approval, not Draft, because ApprovalMax only pulls sales invoices that have been submitted for approval in Xero.
- Draft, Awaiting Approval and Awaiting Payment are three different Xero statuses. Pick on purpose.
- ApprovalMax pulls Awaiting Approval sales invoices; plain drafts sit in Xero until someone submits them.
- Decide who owns the invoice number: the field app or Xero. Two owners cause clashes.
- Each Xero line item carries at most 2 tracking categories, so plan brand and region with that limit.
- Multi-currency invoices need a Xero plan that includes multi-currency, and the currency set per customer.
If nobody in your office ever checks an invoice before it goes out, you do not need any of this. Send invoices authorised and spend the time on chasing payment instead.
Facts checked as of November 2026. Sources at the end of the page.
Step by step
How it works, step by step
The pattern is the same whatever field app you use. The job produces the invoice, the invoice lands in Xero unapproved, a person (or ApprovalMax) approves it, and only then does it go to the customer.
1. The job is finished and checked in the field app
The technician completes the job with time, parts, photos and the customer's signature. Many teams add an office check in the field app first (for example a 'Ready to invoice' status) so that missing parts or wrong labour hours are caught before anything reaches Xero.
2. The invoice is created in Xero with a chosen status
Xero's Accounting API takes a Status on each new invoice: DRAFT, SUBMITTED or AUTHORISED (DELETED, PAID and VOIDED come later). In the Xero screens these show as Draft, Awaiting Approval and Awaiting Payment. The integration sets this once for every invoice, or per job type if it lets you.
3. The invoice carries the right coding
Each line needs an item or account code, a tax rate and, if you report by brand, region or contract type, tracking options. Xero allows a maximum of 2 tracking categories on any line item. The invoice can also carry a BrandingThemeID, which sets which invoice template (logo, address, payment terms text) it prints with, and a Reference field for the job or PO number.
4. Someone approves it
With plain Xero, a user with the right role opens Draft or Awaiting Approval and approves it. With ApprovalMax, its Sales Invoice workflow has a 'Pulling from Xero' step that collects every sales invoice with the status Submitted for Approval and runs it through your approval steps. Draft invoices are not pulled. When all approvals are in place the invoice becomes Authorised in Xero.
5. It goes to the customer and the payment comes back
Once approved, the invoice is sent from Xero (or from the field app) and paid. Xero's SentToContact flag can only be set on approved invoices, which is one more reason a draft should never be what the customer receives. A two-way sync then shows the job as paid in the field app so nobody chases an invoice that is already settled.
What breaks
Why it goes wrong
These are the problems contractors described on our calls, by trade and size.
The app sends Draft, the approval tool waits for Awaiting Approval
A refrigeration contractor working across several countries told us their invoices had to land in Xero as drafts so their existing ApprovalMax approvals still applied. In practice ApprovalMax only collects invoices submitted for approval, so a pure Draft setting leaves every invoice waiting for someone to click Submit in Xero. The status has to match the tool that does the approving.
Invoices go straight to Awaiting Payment
Some integrations only send approved invoices. Jobber, for example, syncs one way into Xero, and an invoice from a quote with a paid deposit lands as Awaiting Payment or Paid rather than Draft. Fine for a small residential team; a problem for a finance head who wants to see every invoice first.
Several hand-offs between tools
A lift supplier with maintenance contracts described stock in one tool, invoices in Xero, approvals in ApprovalMax and job notes in email: every invoice touched four systems before it was issued. Each hand-off is a place for the job value, the PO number or the tracking option to drift.
Invoice numbers clash
Xero requires every sales invoice number to be unique. If the field app numbers invoices and someone also raises invoices directly in Xero, the next synced number can already exist. ServiceM8 handles this by adding a letter to the job number (4899 becomes 4899A), and offers a setting that lets Xero issue the numbers instead.
Two brands, one ledger
An arborist running two sister brands (tree work and tree health reports) wanted revenue split by brand while keeping one set of books. If the brand is only in the invoice template, reports cannot split it. It has to be a tracking option on every line, and the right branding theme on every invoice.
The wrong currency or rate
A multi-currency invoice in Xero uses the CurrencyRate the integration sends, or the XE.com day rate if none is sent. If the field app quotes in one currency and the Xero contact is set to another, the invoice either fails or posts at a rate nobody agreed.
Options
Ways to do it
What each approach sends to Xero, as documented by each vendor in November 2026.
| Approach | Status it sends to Xero | Approval | Watch out for |
|---|---|---|---|
| Retype invoices into Xero by hand | Whatever the person saves | In Xero | Slow, and the job and the invoice drift apart |
| ServiceM8 | Awaiting Approval by default, or Approved, set under Settings, Invoicing, Xero | In Xero or a tool that reads Awaiting Approval | Number clashes if invoices are also raised in Xero |
| Simpro | As set in System, Setup, Accounts Integration, Invoice Status; contractor invoices with a CIS deduction are always approved | In Xero | Tracking names in Xero must match Simpro accounting categories and business groups |
| Jobber | One way into Xero; deposit invoices arrive as Awaiting Payment or Paid | Mostly in Jobber before sync | Changes must be made in Jobber, the source of truth |
| Fieldproxy | Draft for review or authorised, your choice, set at setup | In Xero, ApprovalMax or an approval step in Fieldproxy before sync | Account codes, tax rates and tracking categories are mapped per Xero organisation at setup |
ApprovalMax itself is not a field service app. It sits on top of Xero and approves what the field app sends, as long as the status is Awaiting Approval.
Worked example
A worked example
Say a mechanical contractor runs two brands, a refrigeration service brand and an installations brand, in one Xero organisation, invoicing customers in GBP and EUR. Their finance head wants every invoice over 5,000 in any currency approved by two people and everything else by one.
In Xero they keep two active tracking categories: Brand (Refrigeration, Installations) and Region (UK, Ireland). They create two branding themes, one per brand. In ApprovalMax the Sales Invoice workflow has a Pulling from Xero step and two approval steps, the second applied only above the threshold.
On a Tuesday, 40 jobs are completed. The office marks 38 ready to invoice; 2 are missing a parts receipt and stay in the field app. The 38 go to Xero as Awaiting Approval, each with Brand and Region on every line, the right branding theme, the job number in Reference and the customer's currency. Six Irish invoices go out in EUR at the rate the integration sends.
ApprovalMax pulls all 38. 31 are under the threshold and are approved by one person the same afternoon. 7 go to the second approver; one is rejected because the labour hours look high, then corrected and resubmitted. By Wednesday morning 37 invoices are Authorised and sent, and the month-end report splits revenue by brand without anyone retyping a line.
If the same company had set the integration to send Draft instead, all 38 would have sat in Xero's Draft list until someone submitted them by hand. Nothing would be lost, but the approval tool would never have seen them.
Before you buy
What to check before you buy
Good signs
- You can choose Draft, Awaiting Approval or Authorised, and see where that is set.
- Tracking categories and options are read from your Xero organisation, not typed into the field app.
- You choose who numbers invoices: the field app or Xero.
- Each customer's currency is mapped to the Xero contact, and the rate used is visible.
- Paid, voided and deleted invoices in Xero show back on the job.
- A rejected invoice can be corrected and resent without creating a duplicate.
Red flags
- 'Syncs to Xero' with no word on which status the invoice arrives in.
- Approved-only sync when your finance team needs to check invoices first.
- One brand or one branding theme for the whole company.
- Currency handled only as a label on the PDF, not on the Xero invoice.
- No list of failed syncs, so a rejected push is only found at month end.
In Fieldproxy
Setting it up in Fieldproxy
Fieldproxy syncs two ways with Xero. Xero stays your book of record. A typical setup:
Map your Xero organisation
Customers are matched in both systems, and your Xero items with their codes, sale prices and tax rates are pulled, so technicians quote and bill with the same codes your accountant uses.
Choose the status
A completed or approved job becomes a Xero invoice with its line items, quantities, tax and tracking categories, as a draft for review or authorised, your choice. If your approvals run in ApprovalMax, raise it at setup so the status matches what ApprovalMax pulls.
Add a check before anything reaches Xero
Stages and statuses are your own, so a job can sit in (e.g.) 'Ready to invoice' until the office confirms it. Approval workflows can pause the flow for sign-off on things like discounts over a threshold or jobs above a value. See /solutions/approval-workflows.
Brands, regions and currency
Each line carries the tracking options you report on (e.g. Brand and Region). Invoices go out in the customer's currency where your Xero plan supports multi-currency, with the currency on each customer agreed when contacts are mapped. For two companies in one account, see /solutions/multi-company-field-service.
Payments come back to the job
When the invoice is paid or voided in Xero, the job shows it. Autopilot can draft the payment chase for a person to approve before it sends, and Watcher agent can flag completed jobs that were never invoiced.
Regional notes
Regional notes
Multi-currency needs the right Xero plan
Xero invoices in more than 160 currencies with hourly exchange rates, but only on a plan that includes multi-currency. Plan names differ by country, so check the plan before you promise a customer a EUR or USD invoice.
UK construction work and CIS
In the UK, invoices that involve a Construction Industry Scheme deduction can follow different rules in some integrations. Simpro, for example, always sends contractor invoices with a CIS deduction as approved, whatever the approval setting.
How switching works
How switching to Fieldproxy works
We move your data over and set the system up to the way you already work. Fieldproxy replaces the old tool; it does not run alongside it.
Show us your Xero and your approvals
We look at your account codes, tax rates, tracking categories, branding themes and how invoices are approved today: in Xero, in ApprovalMax, or by email.We agree the invoice rules
Which jobs are billed how, who numbers invoices, which status they arrive in, and which check happens in the field app before sync.We test with real jobs
A handful of real jobs are invoiced into Xero and checked line by line with your finance person before anything goes live.Your team goes live
Technicians use the Android or iOS app, the office approves in the tool it already uses, and payments in Xero show back on the job.
FAQ
Questions people ask
- What is the difference between Draft and Awaiting Approval in Xero?
- Both are unapproved. Draft is saved but not submitted; Awaiting Approval (SUBMITTED in the API) has been submitted for someone to approve. Approval tools like ApprovalMax only pick up Awaiting Approval.
- Will ApprovalMax pick up invoices created by a field service app?
- Yes, if they arrive in Xero as Submitted for Approval and your Sales Invoice workflow has the Pulling from Xero step. Pulled invoices are created under one requester you choose, so a shared mailbox for that user helps.
- Can invoices go to Xero automatically when the job is done, with no review?
- Yes. Send them as Authorised. That suits recurring cleaning or maintenance where every visit is billed the same way. Keep a review step for jobs with parts, extra labour or subcontractor costs.
- How do I split revenue for two brands in one Xero organisation?
- Put the brand on every line as a tracking option and give each brand its own branding theme. Xero allows up to 2 tracking categories per line, so brand plus one other dimension, such as region.
- Who should number the invoices?
- Pick one. If the field app numbers them, nobody raises invoices directly in Xero. If Xero numbers them, the field app leaves InvoiceNumber empty and Xero generates it from your invoice settings.
- What exchange rate does Xero use for a foreign currency invoice?
- The rate the integration sends with the invoice. If no rate is sent, Xero uses the XE.com day rate.
- Can approved subcontractor claims go to Xero too?
- Claims are approved against job card quantities in Fieldproxy. How supplier bills reach Xero is agreed per account; see /solutions/subcontractor-claims-and-payments.
- Does Fieldproxy charge per user for the office staff who approve invoices?
- No. Fieldproxy is one price per company with unlimited users; see /pricing.
Sources
Competitor details on this page come from the vendors' own pages and documentation, checked as of November 2026. Plans and prices change, so check the vendor's current page before you decide.
- Xero Accounting API OpenAPI spec (Invoice, LineItem, Tracking): https://raw.githubusercontent.com/XeroAPI/Xero-OpenAPI/master/xero_accounting.yaml
- ApprovalMax: how to pull new sales invoices for approval from Xero: https://support.approvalmax.com/en/articles/413892-how-can-i-pull-new-sales-invoices-for-approval-from-xero
- ApprovalMax: set up the Pull from Xero step for sales invoices: https://support.approvalmax.com/en/articles/413893-how-do-i-set-up-the-pull-from-xero-step-for-sales-invoices
- ApprovalMax: how approval of Xero sales invoices works: https://support.approvalmax.com/en/articles/413891-how-does-the-approval-of-xero-sales-invoices-work
- ApprovalMax: sales invoice approval: https://approvalmax.com/solutions/xero-sales-invoice
- Lentune: Draft, Submitted and Authorised in Xero: https://lentune.com/knowledge/sending-payable-invoices-to-xero-awaiting-approval
- ServiceM8: invoice status sent to Xero: https://support.servicem8.com/questions/invoices/invoices-sent-servicem8-xero-send-through-as-draft-invoice-appr.md
- ServiceM8: resolving Xero invoice number conflicts: https://support.servicem8.com/help-center/servicem8-add-ons/xero/resolving-xero-invoice-number-conflicts.md
- Simpro: data exported to Xero: https://helpguide.simprogroup.com/Content/Service-and-Enterprise/Data-Exported-to-Xero.htm
- Jobber Help Center: Jobber and Xero integration: https://help.getjobber.com/en/articles/jobber-and-xero-integration/
- Xero: multi-currency accounting: https://www.xero.com/nz/features-and-tools/accounting-software/multi-currency/
Related
Keep reading
- How do I manage subcontractor purchase orders across several countries and currencies?
- Can field service software run two business units in one account?
- Which field service software works with QuickBooks Desktop?
- Autopilot: follow-ups you approve
- What is the best field service software for a 5-10 person HVAC team?
- Cheaper ServiceTitan alternatives for small plumbing and HVAC companies, without payment processor lock-in