> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sync2books.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Result callback sent by us

> When you send a `callbackUrl` with a sale or credit note, Sync2Books sends the result there as a `POST` once KRA accepts or rejects it. Reply with any `2xx` within 10 seconds. The call is **not signed**: treat it as a notification and confirm with `GET /v1/sales/{id}` before you act on it. See [Result callbacks](/etims-callbacks).



## OpenAPI

````yaml /openapi/etims.json webhook saleResult
openapi: 3.1.0
info:
  title: Sync2Books Compliance API (eTIMS)
  version: 1.0.0
  description: >-
    Register items, issue sales and credit notes, record stock and read supplier
    invoices for a Kenyan business, with every fiscal document signed by KRA
    eTIMS.


    Authenticate with an API key from the compliance dashboard, sent in the
    `x-api-key` header or as a bearer token. A `cmp_sk_test_...` key acts on
    sandbox businesses and a `cmp_sk_live_...` key on production ones; both use
    the same base URL.


    New here? Start with the [eTIMS quickstart](/etims-quickstart). The
    conventions every endpoint shares are in [Authentication & API
    keys](/etims-authentication), [Errors & Troubleshooting](/etims-errors),
    [Idempotency](/etims-idempotency) and [Rate limits](/etims-rate-limits).


    This is a separate product from the [Accounting API](/api-reference), with
    its own keys.
servers:
  - url: https://sync2books-compliance-api.apps.kintro.money
    description: >-
      Sync2Books Compliance API. The key you use decides whether a call reaches
      the KRA sandbox or production.
security:
  - ApiKeyAuth: []
  - BearerAuth: []
tags:
  - name: Identity
    description: Check what a key can do.
  - name: Businesses
    description: The businesses and branches a key can act for.
  - name: Items
    description: >-
      Create items and register them with KRA. An item must be registered before
      it can be sold.
  - name: Stock
    description: Record stock movements and report them to KRA.
  - name: Sales
    description: Issue sales, read them back and download KRA-signed receipts.
  - name: Credit notes
    description: Reverse an accepted sale in full.
  - name: Purchases
    description: Supplier invoices KRA holds against the business.
  - name: Lookups
    description: KRA code lists and item classifications.
paths: {}
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        Your API key, for example `cmp_sk_test_xxxxxxxxxxxxxxxxxxxxxxxx`. Create
        one on the Integrations page of the compliance dashboard.
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: cmp_sk_...
      description: >-
        The same key, sent as `Authorization: Bearer <key>`. Use this if your
        HTTP client makes custom headers awkward.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.