Skip to main content
An item must be registered with KRA before it can be sold. This guide walks through creating one, finding the codes it needs, registering it and fixing it when registration does not go through. For the full field list see Item Attributes.

Create or update an item

POST /v1/items needs the catalog:write scope.
The call returns 201 for both a create and an update, with the item under data.item. A new item starts with registrationStatus: "PENDING". Creating an item does not register it with KRA. Numbers must be JSON numbers: "unitPrice": "3500" is refused with a 400.

Find the codes

Three of the fields take KRA codes. Look them up instead of guessing: These calls need the lookups:read scope. See Codes & Values for the common values.

Register the item with KRA

POST /v1/items/{id}/register also needs catalog:write. The body is optional.
On success the call returns 200 with the item, now REGISTERED.

When registration does not work

A failed registration is a 422, and the error body includes the item so you can see its needs and registrationStatus. A rejection such as ...can only be among the following list: [...] means a code is not on KRA’s list. See Errors & Troubleshooting.

Read items

  • GET /v1/items returns every item of the business that has not been deleted, in one response. It is not paginated. It needs catalog:read.
  • GET /v1/items/{id} returns one item. An unknown id, an id from another business and a deleted item all give 404.
Items cannot be deleted or updated by id through the API. To change an item, send POST /v1/items with the same externalId.