Karbon integration
Built for Karbon firms.
Reckonry connects to your Karbon tenant, reads the data already in it, and turns it into a per-client view of profit, cost, and unbilled work. Read-only. No webhooks to configure. Typically a few minutes to connect and a few hours to first report.
- Connection
- Self-serve API key from inside Karbon. No partner onboarding required.
- Access
- Read-only against your tenant. Reckonry never writes to Karbon.
- Trial clock
- 7 days from first successful key validation, not from signup.
What syncs
Five entities, pulled directly from Karbon’s v3 API.
Reckonry uses Karbon’s self-serve REST API. Nothing custom, no partner-only endpoints. The list below is exact — if it’s not here, Reckonry isn’t pulling it.
-
Staff
/v3/UsersUser records and Karbon's weekly capacity field. Capacity is what Reckonry uses to compute each person's fully loaded hourly cost.
-
Clients
/v3/Contacts + /v3/OrganizationsBoth contact and organization records, unified into a single client list. Includes client owner and manager assignments.
-
Work items
/v3/WorkItemsEngagements with their fee type (Time and Materials, Fixed Fee, Non-Billable) and fee value when present. Work status is tracked so closed jobs can be filtered cleanly.
-
Time entries
/v3/Timesheets?$expand=TimeEntriesEvery time entry on every timesheet — billable and non-billable both. Reckonry uses the hourly rate Karbon resolves on the entry; it does not re-derive rates.
-
Invoices and line items
/v3/Invoices?$expand=LineItemsInvoices with their lines, including the BillableItemType discriminator that links a line to a specific time entry. Only invoices past Karbon's Sent-to-Client status count toward recognized revenue.
Read-only
Every endpoint above is a GET. Reckonry does not create, update, or delete anything in your Karbon tenant. Raw responses are stored alongside the normalized data so new fields can be derived later without re-syncing.
How to connect
Four steps. Minutes, not days.
Karbon’s self-serve API release means you generate your own keys inside Karbon and paste them into Reckonry. There’s no partner-application wait and no support email to chase.
-
Step 1
Generate keys inside Karbon
In Karbon, open Settings → Developer (Connected Apps → Manage). Generate an AccessKey and a Bearer token. Karbon's 2026-04-28 self-serve release made this a one-screen action — no developer-registration request, no waiting on Karbon support.
-
Step 2
Paste both keys into Reckonry
After signup, Reckonry asks for the AccessKey (a JWT) and the Bearer token (a UUID). Both fields show inline format checks before you submit.
-
Step 3
Reckonry validates against your tenant
On submit, Reckonry calls GET /v3/Users with your keys. A 200 confirms the keys work and starts your 7-day free trial. A failure tells you exactly which key Karbon rejected so you can re-paste the right one.
-
Step 4
Initial sync runs in the background
Reckonry pulls every staff member, client, work item, timesheet, and invoice from your Karbon tenant. Large firms take a few hours — Karbon's rate limit is the floor. Progress shows in the app while you enter cost assumptions.
Screenshot
credential entry — coming soon
OAuth-based connection is a future option, available once Karbon expands their OAuth program. For now, key-based connection is the only path Karbon offers and the only one Reckonry uses.
Permissions
Read-only in practice. Read-write on paper.
Karbon’s API keys are read-write by default — the platform does not currently offer a read-only-only key mode. Reckonry only ever calls read endpoints, but we want you to know the keys themselves carry broader capability than we use.
| Endpoint Reckonry calls | Why |
|---|---|
GET /v3/Users | Read your staff list and each user's weekly capacity, which Reckonry divides annual compensation across to compute hourly cost. |
GET /v3/Contacts | Read individual-person clients so time and invoices can be attributed to the right client. |
GET /v3/Organizations | Read business clients alongside contacts. Both feed the unified client list. |
GET /v3/WorkItems | Read engagements with their fee type and fee value, which drive Fixed-Fee versus Time-and-Materials recognition. |
GET /v3/Timesheets?$expand=TimeEntries | Read every time entry — billable and non-billable — with the hourly rate Karbon resolves on each entry. |
GET /v3/Invoices?$expand=LineItems | Read invoices and their line items, including the BillableItemType discriminator that links lines to specific time entries. |
What we do not call
- No POST, PUT, PATCH, or DELETE against any Karbon endpoint.
- No webhook subscriptions are created against your tenant at v1.
- No custom-field writes. No status changes. Nothing leaves Reckonry that lands in your Karbon.
How we stay polite
- All outbound calls are throttled to 1.8 req/sec per tenant — below Karbon’s published 2 req/sec ceiling.
- Per-tenant queues so one firm’s sync cannot starve another’s.
- Retries on 429 and 5xx with backoff that honors Karbon’s Retry-After header.
You can rotate or revoke the AccessKey and Bearer token in Karbon at any time. Doing so stops Reckonry’s sync immediately and leaves the data already pulled intact in your Reckonry tenant.
FAQ
Common questions from Karbon admins.
- How often does Reckonry pull from Karbon?
- Incremental sync runs every two hours by default (configurable per tenant), and a full reconciliation runs overnight to catch anything the incremental pass missed. Admins can also fire a manual sync from the settings page when something needs to land sooner.
- What happens if I disconnect Karbon?
- Removing the keys in Reckonry stops syncing immediately. Your already-synced data stays available so historical reports keep working. Revoking the keys directly inside Karbon has the same effect: the next sync attempt fails cleanly and Reckonry alerts the admin.
- Does Reckonry write anything back to Karbon?
- No. Not at v1. Reckonry only calls read endpoints. A future option to write computed insights back as Karbon custom fields (e.g., profitability tier on a client record) is on the roadmap, but it will be explicit and opt-in per field, not a default.
- How long does the initial sync take?
- It depends on tenant size. Karbon enforces about two requests per second per tenant, and Reckonry throttles below that. A firm with a few years of timesheets and invoices may take several hours on first sync. Progress is shown in the app, and you can enter cost assumptions while it runs.
- Will Reckonry slow down my Karbon?
- Reckonry caps itself at 1.8 requests per second per tenant — below Karbon's published rate limit. Each tenant has its own queue, so one firm's sync cannot crowd another's, and incremental polling is a small fraction of initial-sync volume.
- What if my Karbon API keys expire or get rotated?
- Reckonry detects authentication failures on the next sync attempt and emails the admin with the likely cause. The Settings → Karbon page surfaces the last error with troubleshooting steps. Paste the rotated keys and sync resumes.
- Do you support firms not on Karbon yet?
- Not at v1. Reckonry is Karbon-first by design — the canonical data model is built around what Karbon exposes. Other practice platforms (Xero Practice Manager is the likely next) are on the roadmap, but ship dates aren't committed until the first one is in flight.
Start a trial
Connect Karbon, see your real margins.
Seven days, no credit card to begin. The trial clock starts when your Karbon keys validate — not at signup — so a slow first sync never costs you trial days.
You will need your Karbon AccessKey and Bearer token to finish connecting. Generate both inside Karbon under Settings → Developer.