Skip to main content
Before you can invoice a product through eTIMS, it must exist in the catalog and be synced to KRA. There are two distinct steps:
  1. Register — add the item to your Sync2Books catalog (POST …/catalog/items)
  2. Sync — register the item with KRA eTIMS, assigning an etimsItemCode (POST …/catalog/items/sync)
An item that is registered but not synced cannot be sold.

Goods vs Services (stock vs non-stock)

Every item is one of two types, set by itemType when you register it. The type determines whether the item is stock-tracked, which changes how sales behave:
  • Goods are physical, inventoried products. Selling one reduces its stock at the branch, so you must add stock before you sell, and a sale of more than you have on hand is rejected (Insufficient stock). Manage levels with Stock.
  • Services (non-stock items) are not inventoried. Sales never touch stock, so there is no “add stock” step — just register, sync, then sell. Stock adjust/transfer calls on a service have no effect.
KRA item type code. Goods default to KRA’s finished product code and services to service. If you need a different classification (e.g. raw materials), set productTypeCode explicitly when registering.

Step 1 — Register an item

Request body

externalId vs the item id

These are two different identifiers and the distinction matters:
  • externalId — what you send (your SKU). Use it to find the item later.
  • the item id — what Sync2Books assigns. Sales and stock calls reference this id, not your externalId.
Read the item id back from the catalog list (Step 3).

Classification codes

⚠️ classificationCode is effectively required. KRA requires every item to carry a valid item classification code (itemClsCd). If you omit it and no classification mapping is pre-configured for the merchant, the register call is rejected (Missing classification mapping). Use a valid KRA classification code for the product (e.g. 14111400), from KRA’s item classification list. For the other item codes (units, packaging, tax, product type) and which ones auto-resolve, see Codes & Values.

Step 2 — Sync items to eTIMS

Registering only stores the item. Syncing registers it with KRA and assigns an etimsItemCode:

Request body

Once the sync completes, the item’s registrationStatus is REGISTERED and it can be sold.

Step 3 — List catalog items

Returns your catalog (use it to grab the item id and check its registration status):
Each item includes its id, your externalId, and a registration status (PENDING | REGISTERED).
You can register many items first, then sync them in one bulk call with onlyPending: true.