Post each completed pay run into Xero or QuickBooks Online as one balanced manual journal, mapped to your own chart of accounts. Sage is not available yet.
Arche already produces balanced journal entries for every pay run it processes. This integration takes those entries and posts them into your accounting system, so your books carry the payroll without anyone retyping it. This guide covers connecting a provider from Settings → Accounting Integration (/settings/accounting), mapping accounts, running a sync, and reading what came back.
What it does and does not do
| Posts | One manual journal per completed pay run, and an offsetting journal when a run is reversed. |
| Reads | Your provider's live chart of accounts, so you can map Arche's payroll accounts onto real ones. |
| Does not sync | Employees, vendors, invoices, bills or payments. Payroll journals only. |
| Does not run itself | Nothing posts automatically when a pay run completes. You trigger a sync. |
Paying employees is still separate. This integration writes the accounting entries; the money moves through your bank file or M-Pesa disbursement.
Who can set it up
Managing the integration requires the Accounting module licence and either manage_settings or manage_integrations. The Roles & Permissions page shows the permission matrix; access follows granted permissions rather than a role's display name.
Providers
| Provider | Status |
|---|---|
| Xero | Available. |
| QuickBooks Online | Available, with a separate sandbox host for testing. |
| Sage | Not available. The provider is listed so existing records keep their name, but a connection attempt is refused with a message telling you to use Xero or QuickBooks Online instead. |
Connecting
From New Accounting Connection, choose the provider and give the connection a name you will recognise, such as Production QuickBooks. For QuickBooks you also choose the environment: production talks to your real company file, sandbox talks to Intuit's test host. Xero serves demo and real organisations from the same host, so it has no environment choice.
Leave the OAuth Credentials section empty to connect through Arche's own developer app. Fill in a Client ID and Client Secret only if your organisation has registered its own app with the provider, and set a Redirect URI only if it differs from the one shown on the page.
Then click Connect. You are sent to the provider to sign in and approve the connection, and returned to Arche. Two things worth knowing about that round trip:
- The link is single use and expires ten minutes after you click Connect. If you leave the provider's screen open and come back later, start again from Connect rather than reloading the old page.
- After a successful connection Arche records and displays the organisation name the provider reported, so you can confirm you connected the right set of books before anything is posted.
Arche asks each provider for the narrowest grant that lets it work. Xero is asked for manual journals and settings; QuickBooks is asked for accounting access. Neither grant lets Arche read your invoices, bills or bank feeds.
If the connection expires
Access tokens are refreshed automatically. If a grant is revoked at the provider or expires, the connection stops working and the sync log says so. Use Reconnect to authorise it again.
Mapping accounts
Nothing can post until Arche's payroll accounts are mapped onto accounts in your own chart. Open Map accounts on the connection. Arche lists its eleven payroll accounts and reads your provider's live chart of accounts into a picker beside each one.
| Arche code | Arche account | Kind |
|---|---|---|
| 5100 | Salary Expense | Expense |
| 5110 | Employer NSSF Expense | Expense |
| 5120 | Employer Housing Levy Expense | Expense |
| 5130 | NITA Levy Expense | Expense |
| 2100 | PAYE Tax Payable | Liability |
| 2110 | NSSF Payable | Liability |
| 2120 | SHIF Payable | Liability |
| 2130 | Housing Levy Payable | Liability |
| 2140 | NITA Payable | Liability |
| 2150 | Other Deductions Payable | Liability |
| 1100 | Bank / Net Pay Payable | Clearing |
Kind is Arche's own grouping, not a provider account type. Xero and QuickBooks classify their accounts differently, so you still choose which of your accounts each one maps to.
A journal that needs an account you have not mapped is not posted, and the sync log records which code was missing. That is deliberate: a payroll journal is money-shaped, and posting it to a guessed account is worse than not posting it.
Running a sync
Open Sync on the connection and choose:
| Field | Notes |
|---|---|
| Sync type | Journal entries posts pay runs. Chart of accounts refreshes the account list Arche read from your provider. Full sync does both. |
| Only this pay run | Optional. Leave it on All eligible pay runs to post everything not yet posted. |
| Sync pay runs paid on or after | Limits how far back Arche looks. It defaults to the date the connection was created, so historic runs from before you connected are not swept in unless you ask for them. |
A pay run is eligible once it is completed or reversed. Draft, calculated, reviewing, approved and processing runs are never posted.
Only one sync runs per connection at a time. If a sync appears stuck, Arche stops treating it as running after fifteen minutes so you can start another.
What a posted journal looks like
Each journal carries a reference in the form ARCHE-<8 characters>-P for a posting or -R for a reversal, where the middle section identifies the pay run. In QuickBooks that reference is the document number; in Xero it is the journal narration. It is there so you can find the Arche pay run from inside your accounting system, and so a reconciliation can be traced in both directions.
A pay run can only be posted once per connection. Arche records each journal before it calls the provider and enforces one journal per pay run, per connection, per kind. Re-running a sync after a partial failure retries what did not post and skips what did; it does not create a second copy of a journal that already exists in your books.
Checking what happened
The connection's History view has two lists.
Recent syncs shows each run with its outcome and details: what was exported, what was skipped, and why anything failed. A failure caused by configuration, such as an unmapped account or a connection whose grant has expired, is recorded and not retried, because retrying it would fail identically. Transient failures, such as a provider outage, are retried.
Exported journals is the ledger of what is in your books: one row per pay run and kind, with the provider's own document number and the debit and credit totals, so you can reconcile against the provider without leaving Arche.
Disconnecting and deleting
Disconnect tells the provider to forget the grant and stops the connection working, but keeps its settings and any credentials you entered, so you can reconnect without setting it up again. Journals already posted stay in your accounting system; disconnecting does not remove them.
Delete removes the connection and its history from Arche. Again, it does not touch anything already posted to your provider.
Before you go live
Arche's own developer apps for Xero and QuickBooks Online are live, so leaving the OAuth Credentials section empty connects you to your real books. If you register your own app instead, the provider's rules apply on your side: Xero limits how many organisations an uncertified app can connect, and Intuit requires an app assessment before it issues production keys.
Test against QuickBooks' sandbox environment first if you can. Xero has no sandbox, so test there with a demo organisation.