Managing billing is easier when your accounting system talks directly to OfficeRnD Flex. If you use QuickBooks Online or Xero, our native integrations can fully automate or semi-automate Bill Runs with built-in error handling and sync controls. But if you work with an unsupported accounting platform, you can still connect it using our API and webhooks to build a custom integration that matches your workflows.
This article compares the capabilities and limitations of both approaches, outlines what you can and can’t do with each, and explains when it’s worth building your own connection for unsupported systems.
Summary
Native integrations are available for QuickBooks Online and Xero, offering fully or semi-automated Bill Runs.
Custom integrations can connect Flex to unsupported accounting systems using the API and webhooks.
Native integrations include built-in UI tools for monitoring, sync controls, and error handling.
Custom integrations offer flexibility but require you to build sync logic, monitoring, and retries.
Choosing between the two depends on your platform compatibility, automation needs, and technical resources.
Before you start
Confirm which accounting platform your organization uses.
For native integrations, you need QuickBooks Online or Xero admin access.
For custom integrations, ensure you have API and webhook expertise, or developer resources.
Decide where invoice numbers will be generated (Flex or your accounting system).
Review your compliance and tax requirements, especially if using region-specific accounting software.
Native integrations: QuickBooks Online and Xero
Native integrations are best when you want automation without the complexity of custom development.
Example: A shared office in New York uses the native QuickBooks Online integration to automatically generate invoices, charge members, and sync payments every month. Their billing team only steps in if a sync error occurs, and they can resolve it directly in Flex’s UI.
You can choose from:
Fully automated Bill Runs – Flex generates invoices, syncs them to QuickBooks or Xero, charges them, and sends them to customers automatically (see below ↓).
Semi-automated Bill Runs – You manually trigger the Bill Run, review the invoices, and click "Charge" and "Send". This gives you more control over timing and communication (see below ↓).
Manual sync – You disable auto-sync and manually push invoices to the accounting system when needed (see below ↓).
Fully automated Bill Runs
The following steps happen in sequence without manual intervention.
OfficeRnD automatically generates invoices.
Invoices sync to QuickBooks Online or Xero.
OfficeRnD charges the invoices.
Successful payments sync to QuickBooks Online or Xero
OfficeRnD emails the invoices to customers.
Invoice numbers can be issued by either OfficeRnD or the integration (QuickBooks Online or Xero).
Paid invoices cannot be modified.
Semi-automated Bill Runs
You manually trigger the Bill Run.
OfficeRnD generates and syncs invoices.
You manually click "Charge" and "Send" for each batch.
This option offers control over customer communications and payments.
The UI visualizes sync errors and provides options to cancel and disconnect each invoice.
Manual sync with Xero and QuickBooks Online
You may choose to disable the automated sync of invoices to Xero and QuickBooks Online and manually sync invoices separately or in bulk.
To manually sync one or more invoices:
Go to
Billing > Invoices and select one or more invoices.
Click Sync.
Alternatively, you can click the rotating arrow icon
next to any invoice to sync it.
Custom integrations: What you can (and can't) do
Custom integrations are best when your accounting platform isn’t supported or you have specialized workflows.
Example: A coworking space in Paris built a webhook-based integration to connect Flex with their local French accounting software, ensuring invoices meet regional tax format requirements.
Capabilities include:
API calls and Webhooks
Use OfficeRnD's webhooks (for example, for invoice created or invoice charged) for real-time updates.
Alternatively, schedule API polling to check for changes at defined intervals.
Invoice numbering authority: Choose whether Flex or your accounting system issues invoice numbers:
OfficeRnD-issued numbers: Allows for fully automated Bill Runs, but may lead to conflict if your accounting system also issues invoice IDs for non-coworking services.
Accounting-system numbers: You'll need to turn off automated charging and sending (or insert delays) to allow the external system to assign IDs before payment and distribution. You must also contact us so we can disable the OfficeRnD numbering for you.
Limitations include:
Asynchronous event ordering
Custom integrations must respect the following sequence of events:
Create an invoice in OfficeRnD.
Charge the invoice.
Send the invoice.
Update the status of the invoice payment (especially in the case of ACH or SEPA payments, the transfer might take a few days to complete, during which time the payment and invoice will be considered pending).
When automating all steps, confirm a payment status is successful before syncing it to the accounting integration.
If you opt for the accounting system to apply the invoice numbers, you should turn off the automated Bill Run so the integration has more time to pull and apply the proper numbers on invoices before charging and sending them to customers.
Limited UI and error handling
You won't have OfficeRnD's built-in process visualization, sync-error reporting, or the options to disable syncs or disconnect each invoice.
You must build your own monitoring, retry logic, and monitoring dashboards.
Instructions for setting up an integration
Follow these instructions to set up either a native integration, or create and connect your own custom accounting integration.
Native integrations (QuickBooks Online and Xero)
Follow these steps to connect to a native integration:
Choose your Bill Run type: fully automated, semi-automated, or manual sync.
Configure invoice numbering: decide whether Flex or the accounting platform assigns numbers.
Test the sync process before running your first live Bill Run.
Custom integrations (unsupported systems)
Follow these steps to create a custom integration:
Review the API documentation and Webhook documentation for available endpoints and events.
Decide on a sync method:
Webhooks for immediate updates.
Polling for simpler but less frequent updates.
Decide where invoice numbers will be generated: in OfficeRnD or in the accounting system.
Implement sync logic for invoices and payments, respecting the event order: Create invoice → Charge invoice → Send invoice → Confirm payment success.
Add monitoring and retry logic to handle errors.
Test thoroughly before going live.
When creating custom accounting integrations
Please read this section to understand how to design a reliable custom integration, choose the right sync approach, and implement the webhook logic needed to keep your accounting system fully aligned with OfficeRnD Flex.
Custom integration configuration and feature suggestions
When designing your integration, consider adding:
Synchronization strategy
Polling schedule: For example, every 10 minutes, hourly, or daily checks for new and updated invoices, credit notes, overpayments and payments.
Webhook endpoints: Listen to the
invoice.created
,invoice.updated
,invoice.charge.created
, andinvoice.charge.updated
webhooks to determine when to create or update invoices, credit notes, overpayments, and payments in the accounting system.Webhooks ensure that your integration reacts in real time to changes, keeping the accounting system synchronized without delays or redundant checks.
We recommend this approach as it allows you to decrease the number of requests you make and reduce unnecessary polling, leading to better performance and lower API usage.
Batch vs. individual sync: Offer the ability to bulk-sync at run time, or to sync individual invoices on demand via API.
Retry and dead-letter queues
Implement retry policies for failed webhook deliveries and move persistent failures into a manual review queue.
Additionally, we recommend providing users with the ability to manually retry syncing for failed documents (invoices or payments) from the Sync button on the integrations page. This adds an extra layer of reliability and control, helping users quickly resolve issues without needing engineering intervention.
Webhooks to listen to and when to sync to the accounting integration
1. invoice.updated
and invoice.created
Use these to create or update invoices in the accounting integration.
When to act on invoice.updated
:
Check the
previousAttributes
object in the webhook.Only proceed if one or more of the following properties are included:
totalAmount
dueDate
number
periodStart
periodEnd
date
If none of the properties is present in the
previousAttributes
: Ignore the webhook.What to do when acting: Fetch the full invoice using our API and sync the invoice to the accounting integration (create, update, or delete as needed).
When to act on invoice.created
:
Always. This means a new invoice has been issued and needs to be synced to the accounting integration. Fetch the invoice via our API and create it in the accounting integration.
2. invoice.charge.created
and invoice.charge.updated
Use these to create, update or remove a payment in the accounting integration.
When to act: Only if data.object.status === "success"
.
What to do: Use the webhook payload directly, no need to call our API. The webhook contains:
Invoice ID
Payment method (account)
Currency
Amount
If status is anything else, ignore the webhook.
3. Delete invoices and payments from the accounting system
If you want to delete invoices and payments from the accounting systems when they are removed in OfficeRnD, you can also listen for the invoice.removed
and invoice.charge.removed
webhooks.
FAQs: Choosing between native and custom accounting integrations
Which option is easier to set up?
Native integrations with QuickBooks Online and Xero are easier because they require no custom development. Setup takes minutes, and you get built-in sync controls, error handling, and a visual interface.
When is a custom integration the better choice?
If your accounting platform isn’t supported or you need specialized workflows—such as region-specific tax handling, custom invoice numbering, or syncing to multiple systems—a custom integration gives you full control.
What’s the main trade-off with a custom integration?
Flexibility comes with responsibility. You’ll need to build and maintain the sync logic, error handling, and monitoring yourself. This often requires ongoing engineering support.
Can I get the same automation with a custom integration?
Yes, but only if you build it. Using webhooks for real-time updates and API calls for invoice and payment creation can replicate native automation, but you must also handle event ordering and retries.
How do I avoid duplicate invoice numbers with custom integrations?
Decide early whether OfficeRnD or your accounting system will issue invoice numbers. If your accounting system does it, disable automated charging/sending until numbers are assigned.