Skip to main content
A company (taxpayer / KRA PIN) can have many branches — each one is its own independently-syncable OSCU device, with its own kraBhfId, device serial, and sync/connection status. Provisioning creates exactly one branch: Headquarters (kraBhfId = "00"). Use this API to add, inspect, and manage additional branches (e.g. "01", "02" for other stores). Most integrations with a single-location business never need this page — Headquarters is enough. Reach for it once a customer has more than one physical branch reporting to KRA.

Two ways to call this API

The API-key surface only exposes list, add, initialize, remove, reconcile-kra-pin — not get/update by id. Use the JWT surface (or the dashboard) for those.

Identifiers — don’t mix these up

Branches involve four different IDs. Two of them are both informally called “branch id” in different places, which is the easiest mistake to make: If a catalog/sales/stock call 404s with “branch not found,” the most common cause is passing the branch UUID (id) where a branchKey was expected, or vice versa.

List branches

Returns every branch for the company, Headquarters included.

Add a branch

kraPin and environment are not accepted here — every branch of a taxpayer shares the Headquarters branch’s PIN and environment automatically. This runs the same create-branch → OSCU-shell → initialize sequence provisioning ran for Headquarters, synchronously. Returns the new branch (201). Errors: 400 if the company hasn’t been provisioned yet, or provisioning is incomplete; 409 if a branch with that kraBhfId already exists for the company.

Get / update a single branch

(JWT surface only.)
{branchId} here is the branch UUID (id), not the branchKey. PATCH body — only mutable fields; kraBhfId and branchKey cannot be changed after creation:

Re-initialize a branch

Re-runs OSCU device initialization for one branch. Use this to retry after a branch’s status shows failed (e.g. the device serial was wrong, or KRA was briefly unreachable during add).

Remove a branch

The Headquarters branch cannot be removed (400) — disconnect eTIMS for the company instead if you need to start over. Returns { "deleted": true }.

Reconcile KRA PIN (one-time backfill)

A one-time fix for companies that were connected before multi-branch support existed. No-op if the Headquarters branch already has a kraPin recorded. Most integrations will never need to call this.

Branch object