<!-- Markdown rendering of https://accountingkit.dev/ -->

> Connect your accounting system and automate invoices, bills, payments, and reconciliation with durable workflows and a unified accounting API.

Accounting workflow automation

# Accounting workflows that finish.

Connect your accounting system. Sync financial data and run reliable, auditable workflows for invoices, bills, payments, and reconciliation.

[Start building](https://app.accountingkit.dev/auth/login) [Read the docs](https://docs.accountingkit.dev)

Built for small and medium businesses. Programmable for the teams that serve them.

![Monochrome ledger works with five transaction routes converging on balanced books](https://accountingkit.dev/_astro/ledger-works.BYzZ-I-H_Z1VppE1.webp)

Five accounting routes pass through validation checkpoints and converge into balanced books.

Workflow / Sales invoice to ledger Test environment

When a sales invoice is approved, validate it, post it to Xero, and confirm the ledger balance.

1.  01**Trigger_Receive_** Invoice approved
2.  02**Normalize_Shape_** Model resolved
3.  03**Validate_Check_** Rules passed
4.  04**Post_Post_** Written to the ledger
5.  05**Confirm_Close_** Books balanced

**Durable workflows** Retries, replay, idempotency, and audit history.

**Five accounting integrations** Xero, QuickBooks Online, Sage Intacct, FreshBooks, and Wave.

**Unified accounting API** One normalized contract designed to extend.

Workflows_/_Sales invoice to ledger_/_**run\_8f21dc3e**Live

Workflow run**Sales invoice to ledger**

Succeeded

- **Started**: 10:13:22 UTC
- **Duration**: 18.4s
- **Attempts**: 7
- **Replays**: 1

Step

Status

Attempt

Duration

01**Trigger** Webhook received and verified

Succeeded

1 of 3

0.3s

02**Normalize** Mapped to the unified model

Succeeded

1 of 3

0.7s

03**Validate** Rules and balance checks passed

Succeeded

1 of 3

0.6s

04**Post to ledger** Provider rejected: tracking category not found

Failed

1 of 3

2.1s

04**Post to ledger** Replayed after category was re-fetched

Succeeded

2 of 3

1.8s

05**Confirm** Reconciled and acknowledged

Succeeded

1 of 3

1.3s

Dead-letter queue: 0 runs**Replay****Inspect payload**

Durable workflow infrastructure

## Every run stays recoverable.

Each run persists its input, step state, attempts, and outcome before work is acknowledged. When a provider rejects a write, operators see why, fix it, and resume from the last completed step.

-   ### Replay without repeating
    
    Fix the underlying issue and replay from the failed step. Completed steps are never re-run.
    
-   ### Every attempt on record
    
    Attempts, timestamps, terminal reasons, and provider responses stay attached to the run.
    
-   ### Writes accepted once
    
    Idempotency keys and validation keep retried writes from creating duplicate ledger entries.
    

[Open the console](https://app.accountingkit.dev/auth/login) [How runs are recovered](https://docs.accountingkit.dev/operations)

Unified accounting API

## One API. Every ledger you or your customers run.

Read and write normalized contacts, invoices, bills, payments, and purchase orders against one contract. The connection decides the provider. Your code does not change.

[See all integrations](https://docs.accountingkit.dev/integrations) [API reference](https://docs.accountingkit.dev)

Accounting integrations5 available

-   [![](https://accountingkit.dev/_astro/xero.D-GTTqPM_Z1s8qpm.svg)Xero
    
    Nine resource families, native writes, verified webhooks.
    
    Available](https://docs.accountingkit.dev/integrations/xero)
-   [![](https://accountingkit.dev/_astro/quickbooks-online.raPi8NTX_Z1s8qpm.svg)QuickBooks Online
    
    Contacts, invoices, payments, and purchase orders per realm.
    
    Available](https://docs.accountingkit.dev/integrations/quickbooks-online)
-   [![](https://accountingkit.dev/_astro/sage-intacct.BpMly1HQ_Z1s8qpm.svg)Sage Intacct
    
    Eleven resource families with dimensions and attachments.
    
    Available](https://docs.accountingkit.dev/integrations/sage-intacct)
-   [![](https://accountingkit.dev/_astro/freshbooks.D2n8x_Vp_Ncaf6.webp)FreshBooks
    
    Seven resource families with incremental and webhook sync.
    
    Available](https://docs.accountingkit.dev/integrations/freshbooks)
-   [![](https://accountingkit.dev/_astro/wave-financial.DikHXfny_Z1rIvQG.webp)Wave
    
    Nine resource families with invoice send and PDF actions.
    
    Available](https://docs.accountingkit.dev/integrations/wave)

Normalized resources

-   Contacts
-   Invoices
-   Quotes
-   Bills
-   Payments
-   Purchase orders
-   Accounts
-   Attachments
-   Webhooks

```
POST /v1/connections/{connection_id}/invoices
Idempotency-Key: invoice-order-10042
// same body for every provider

{
  "external_reference": "order_10042",
  "contact_id": "ctc_91a4",
  "due_date": "2026-09-30",
  "line_items": [{"quantity": 1, "unit_amount": 1200}]
}
```

Accounting operations

## From daily work to clean books.

Sales, expenses, and payouts become durable workflows that finish in whichever accounting system your customer already runs. Each one starts from an event and ends in a confirmed ledger state.

01

### Sales to invoices

Turn orders, subscriptions, or usage events into validated customer invoices in the ledger.

1.  TriggerOrder confirmed
2.  Step 1Resolve contact and tax rates
3.  Step 2Create the invoice
4.  Step 3Post to the ledger
5.  OutcomeInvoice confirmed in the books

02

### Expenses to bills

Move approved spend into payable bills with the correct account, tax treatment, and attachment.

1.  TriggerExpense approved
2.  Step 1Normalize supplier and lines
3.  Step 2Attach the source document
4.  Step 3Create the bill
5.  OutcomeBill awaiting payment

03

### Payouts to reconciliation

Match processor payouts and fees to open entries, then close the loop with a reconciliation state.

1.  TriggerPayout received
2.  Step 1Match to open invoices
3.  Step 2Post fees and adjustments
4.  Step 3Reconcile the bank line
5.  OutcomePayout reconciled

EU data residency

## Your accounting data stays in the EU.

The core platform runs in Frankfurt, Germany. Review the exact data boundaries, retention options, encryption model, and subprocessors behind that commitment.

[Review EU residency details](https://accountingkit.dev/security/#residency)

-   [Tenant boundaries**Ownership is proved in SQL.**Every tenant-owned query re-derives organization and environment ownership on the server. Client-supplied tenancy claims are never trusted.](https://accountingkit.dev/security/#isolation)
-   [Data custody**Keep records out of our database.**Choose zero retention for provider pass-through, or cached mode with a fixed 30-day expiry. Provider credentials and raw payloads are encrypted at rest.](https://accountingkit.dev/security/#minimization)
-   [Operation integrity**Retries do not become duplicate entries.**Idempotent writes, persisted workflow steps, signed webhooks, and visible terminal errors make financial operations recoverable and auditable.](https://accountingkit.dev/security/#integrity)

### Public evidence

Independent marks appear here only after the review is complete.

-   [MDN HTTP Observatory**A+ · 130/130 · 10/10 checks**](https://developer.mozilla.org/en-US/observatory/analyze?host=accountingkit.dev)
-   [Vulnerability disclosure**Public security.txt**](https://accountingkit.dev/.well-known/security.txt)
-   [Data Processing Addendum**Article 28 terms and controls**](https://accountingkit.dev/dpa/#security)
-   [Subprocessor register**Public and versioned**](https://accountingkit.dev/subprocessors/)

Pricing

## Priced by the work, not the seat.

Every plan carries the whole platform. What changes is how many books you connect and how much automation you run. Build in the test environment for free, and pay when you go live.

Starter

**$199** /month

One business, one set of books, the sync running on its own.

[Start with Starter](https://app.accountingkit.dev/auth/login)

Sync only. Automation runs start on Growth.

-   3 accounting connections
-   5,000 records synced each month
-   Full unified API, reads and writes
-   Cached and zero-retention connections
-   Community support

Growth_Most popular_

**$349** /month

Automations running against real books, with room to grow into.

[Start with Growth](https://app.accountingkit.dev/auth/login)

750 automation runs included, then $0.08 per run.

-   Everything in Starter, plus
-   10 accounting connections
-   Every automation, no feature gates
-   Durable workflows with retries and replay
-   Signed webhooks and audit history
-   Email support

Scale

**$999** /month

High volume, event-driven, with an availability commitment behind it.

[Start with Scale](https://app.accountingkit.dev/auth/login)

5,000 automation runs included, then $0.05 per run.

-   Everything in Growth, plus
-   25 accounting connections
-   Webhook-triggered automations
-   99.9% uptime commitment
-   Priority queue capacity
-   Shared Slack channel support

In every plan

-   Free test environment
-   [Zero-retention connections](https://accountingkit.dev/security/#minimization)
-   [EU data residency](https://accountingkit.dev/security/#residency)
-   [Signed webhooks](https://accountingkit.dev/security/#webhooks)
-   Audit history
-   [Data Processing Addendum](https://accountingkit.dev/dpa/)

Usage is metered as work completes and each month closes into a statement you can reconcile against the runs that produced it. Prices are in USD, exclusive of tax. Cancel any time from the console.

FAQ

## Common questions.

What is AccountingKit?

AccountingKit is an accounting workflow automation platform. It connects your accounting system, normalizes financial data, and runs durable, auditable workflows for operational accounting tasks. Its unified API can also be embedded in software products.

Which accounting platforms can I connect?

Xero, QuickBooks Online, Sage Intacct, FreshBooks, and Wave are available today, each with hosted OAuth, normalized resources, and verified webhooks where the provider supports them. Every provider answers the same accounting contract, and provider-native actions stay available where a provider does something the portable model cannot express.

Which accounting records can I manage?

You can work with normalized contacts, invoices, quotes, payments, purchase orders, accounts, tax rates, and branding themes. AccountingKit also exposes invoice PDFs, online URLs, and provider deep links.

What happens when a workflow step fails?

The run keeps its step state, attempts, and terminal error. You can inspect the failure, correct the underlying issue, and resume from the persisted step instead of rebuilding the run from scratch.

Is AccountingKit only for software companies?

No. The primary use case is connecting your own accounting system and automating your finance operations. Software teams can also use the unified API to embed the same capabilities for their customers.

Can I use the unified API without a workflow?

Yes. You can connect an accounting organization and read or write normalized resources directly. Workflows add durable orchestration when a business process spans multiple steps.

Why use AccountingKit instead of calling each provider directly?

AccountingKit combines hosted OAuth, one normalized model across every provider, idempotent writes, retries, replay, signed webhooks, and audit history. Your team can build the accounting experience instead of rebuilding integration reliability around each workflow.

How does AccountingKit protect accounting data?

Provider credentials and raw provider payloads are encrypted at rest. API keys are environment-scoped, tenant ownership is enforced in the data layer, and customer webhooks are signed.

![Monochrome ledger architecture with completed accounting routes in balance](https://accountingkit.dev/_astro/ledger-close.BpLbV3oi_Z1kINqI.webp)

## Make accounting operations boring.

Connect Xero, QuickBooks, Sage Intacct, FreshBooks, or Wave, run durable workflows, and keep every failure visible from the first event to balanced books.

[Open the console](https://app.accountingkit.dev/auth/login)
