Case study · 01
The invoice reaches the accounts before it reaches anyone's task list.
Volta Compliance rented a connector between Salesforce and Xero. It worked, but it cost over £1,000 a year and it decided how the business had to work. We replaced it with an integration written directly in Salesforce, owned by Volta, that raises the invoice in Xero at the point the job is actually delivered. The licence goes, and so does the dependency.
At a glance
- Client
- Volta Compliance
- Website
- voltacompliance.com
- Systems
- Salesforce to Xero
- Built
- Native Salesforce Apex. No middleware, nothing external to host
- Replaces
- A licensed connector at over £1,000 a year
- Volume
- 50 invoices a month
- Status
- Deployed to production, going live at cutover
- Relationship
- Group company. Richard is a director.
The connector worked. It just made everyone work around it.
An opportunity reaching "Closed Won - Complete" raised a task for Lewis, who does the invoicing. He created the invoice, moved the stage on, and only then did the connector push anything through to Xero. The invoice was a job on somebody's list before it was a record in the accounts.
Fifty of them a month, and about two hours of his time spent raising them.
Underneath it, the package ran five scheduled jobs, four of them every fifteen minutes and one restarting the whole thing overnight. So any question about why an invoice looked wrong meant unpicking somebody else's automation across two systems, in a namespace nobody at Volta could open.
And it cost over a thousand pounds a year to stay in that position.
Written into Salesforce, owned by Volta.
Nothing sits between the two systems. No middleware, no service to host, monitor or pay for. When an opportunity reaches Closed Won - Complete, the integration:
Matches the account to Xero
Finds the existing contact, or creates one.
Builds the invoice from the products
The lines come from the opportunity, not from a re-typed copy of it.
Carries the opportunity number through
It lands on the invoice reference, so a record in either system can be traced to the other in one step.
Dates it the day it is raised
Due thirty days later.
Reads the money back hourly
Status, amount due, amount paid and total come back from Xero into Salesforce, so the CRM shows what has actually been settled rather than what was raised.
The dating decision matters more than it looks. Volta wins projects long before it carries them out, so dating an invoice from the close date would put the revenue in the wrong month. Closed Won - Complete marks delivery, which is the point the money is genuinely owed.
There is no AI in this one.
Not AI
It is rules, because rules are what the job needed
Invoicing is arithmetic and a date. There is no judgement in it, nothing to interpret, and nothing that would be improved by something that occasionally decides differently. We build with AI where a job used to need a person's judgement. This one never did.
We would rather say that than let you assume otherwise. It is the same reason every tool page on this site tells you which part is the AI: the answer is only worth anything if it is sometimes "none".
One less manual step, and nothing left to renew.
The invoice exists in Xero before the task appears. Lewis's job changes from creating fifty invoices a month to checking and sending them. Same control, and the two hours of raising them goes.
The licence goes. So does the dependency. The integration is Volta's own code, in Volta's own Salesforce, with thirty-nine tests describing what it is supposed to do. When the business changes, the integration changes with it, and nobody has to ask a vendor first.
Native Apex in the customer's own org, no external runtime. Xero OAuth 2.0 with refresh-token rotation handled in-org. Account codes and VAT treatment come from Xero's own settings rather than being duplicated into Salesforce. Forty-one components, thirty-nine passing tests. Built and proven end to end in a sandbox against Xero's demo company before it went near production.
Next step
Twenty minutes, no obligation.
If you are paying a yearly licence for a connector that decides how you work, that is worth a conversation. Tell us which two systems and what it will not do.
Would rather write than talk? Send us a message instead and it reaches the same two people.