肯尼亚

配置

Install the 🇰🇪 Kenyan fiscal localization package to get all the features of the Kenyan localization.

eTIMS

The Kenya Revenue Authority (KRA) has implemented the electronic Tax Invoice Management System (eTIMS) for tax collection.

To submit documents through eTIMS, you must use an OSCU that integrates with the existing Trader Invoicing System (TIS), such as the one provided by Odoo. The OSCU is used to validate, encrypt, sign, transmit, and store tax invoices.

注解

Make sure to install the Kenya eTIMS EDI modules to use the OSCU device fully.

OSCU device initialization

The OSCU must be initialized before use. To do so, navigate to Settings ‣ General Settings, click Update Info in the Companies section, and enter your Tax ID.

To initialize the OSCU:

  1. Go to Settings ‣ General Settings and scroll down to the Kenya eTIMS Integration section.

  2. Set the eTIMS Server Mode to Test for the initialization.

  3. Enter the Serial Number of the device and tick the two check boxes.

  4. Click Initialize OSCU.

注解

Three server modes are available:

  • Demo: Designed for demo purposes; it uses mock data and does not require an initialized OSCU;

  • Test: Used to test the connection to eTIMS;

  • Production: Used for live databases that are ready to send data.

重要

If your device has already been initialized (through another ERP, for example), enable the 开发者模式(调试模式). Then, in the Kenya eTIMS Integration section, enter the ID of the unit in the Unit ID field and the key obtained through a previous initialization in the CMC Key field. Click Save when done.

Once the OSCU module has been initialized, an OSCU serial number is generated for each company on that database with its country set to Kenya. The serial number is generated based on the VAT number of the company (regardless of its validity). It is a unique and sequential serial number starting with the prefix ODOO followed by the company’s VAT number and a sequence of numbers.

Registering on eTIMS

Taxpayers must sign up and create an account on the KRA portal. If you do not have an account yet:

  1. Sign up, enter your PIN, and verify that all information is correct, including your phone number, email address, and postal address. Correct any errors on the iTax page.

  2. An OTP is sent to the phone number provided. Unblock promotional messages if you do not receive it.

  3. Upload the business owner ID or director’s ID (as listed on iTax), along with the filled-out and signed commitment form .

  4. On the eTIMS dashboard, click Service request at the top of the page. Select OSCU as the eTIMS type, enter Odoo KE LTD as the third-party integrator, and enter your company’s OSCU serial number retrieved earlier.

注解

Service request approvals are usually quick. If there’s a delay, contact the eTIMS operation or KRA office.

Commitment form

  • Part 1: Fill in the taxpayer’s information.

  • Part 2: Fill in the business owner’s or director’s information.

  • Part 3: Fill in your unique serial number found in Odoo.

  • Part 4: Tick OSCU, enter Odoo KE LTD PIN PO52112956W, and enter the Odoo version you’re using (17.0 or onwards).

  • Part 5: Check the mandatory boxes, enter a date, and sign.

eTIMS codes

Common standard codes are automatically fetched from the KRA eTIMS API servers every two days. To fetch them manually, proceed as follows:

  1. Enable the 开发者模式(调试模式).

  2. Go to Settings ‣ Technical ‣ Automation: Scheduled Actions and search for KE eTIMS: Fetch KRA standard codes.

  3. Click the action in the list, then click Run Manually to fetch the codes.

Go to Accounting ‣ Configuration ‣ KE OSCU Codes to view the complete list of fetched OSCU codes.

List of fetched OSCU codes.

UNSPSC codes

The KRA needs UNSPSC codes for a product to be registered. UNSPSC codes are automatically fetched from the KRA eTIMS API servers every day. To fetch them manually, proceed as follows:

  1. Enable the 开发者模式(调试模式).

  2. Go to Settings ‣ Technical ‣ Automation: Scheduled Actions and search for KE eTIMS: Fetch UNSPSC codes from eTIMS.

  3. Click the action in the list, then click Run Manually to fetch the codes.

Go to the product form, and in the Accounting tab, click the UNSPSC Category field to view the complete list of fetched UNSPSC codes.

Notices

Notices are automatically fetched from the KRA eTIMS API servers every day. To fetch them manually, proceed as follows:

  1. Enable the 开发者模式(调试模式).

  2. Go to Settings ‣ Technical ‣ Automation: Scheduled Actions and search for KE eTIMS: Fetch KRA notices from eTIMS.

  3. Click the action in the list, then click Run Manually to fetch the notices.

Go to Accounting ‣ Configuration ‣ KE OSCU Notices to view the complete list of fetched notices.

多公司

参见

公司

If you have multiple companies, you can centralize and manage them all on a single Odoo database. The KRA identifies and differentiates the main company from its subsidiaries by using IDs. Furthermore, subsidiaries are classified as branches of the main company.

要配置公司 ID,请打开**设置**应用程序,点击 公司 部分中的:guilabel:更新信息,然后搜索:guilabel:eTIMS 分支机构代码 字段。在多公司环境中,**主公司**的分支机构 ID 等于`00`。*非*主公司的公司分支机构 ID 不是 00,而是由 KRA 分配的 ID。

要添加分支,请转到**公司设置**中的 分支`选项卡,然后点击 :guilabel:`添加一行

要从 KRA 获取非主公司的**分支 ID**,请确保主公司有肯尼亚的 税号 且 OSCU 设备已 初始化。然后,转到 分支 选项卡,点击 从 KRA 中填充

注解

  • KRA 将每个**供应地**视为一个单独的分支机构 (ID)。

  • 每个分支的 OSCU 设备必须 独立初始化

联系分支 ID

要为联系人指定分支机构 ID,请访问联系人表单,转到 会计 选项卡,并在 eTIMS 分支机构代码 字段中输入分支机构代码。

注解

默认情况下,联系人的分支 ID 设置为 OO

KRA 序列

重要

Odoo 发票序列和 KRA 序列**不同**。

在 Odoo 中,发票序列取决于**主公司**。主公司可以查看分支机构的发票,但分支机构**不能**查看主公司或其他分支机构的发票。

KRA 需要每个分支**独立**的序列。因此,Odoo 会单独管理每个分支的序列。

Example

如果您有一家总公司和两家分公司,发票顺序如下:

  • 在**分支 1** 上创建发票:INV/2024/00001;

  • 在**支行 2** 上创建发票:INV/2024/00002;

  • 在**主公司**上创建发票:INV/2024/00003。

这就是 Odoo 如何管理序列以符合 KRA 规定:

  • 在**分支 1** 上创建发票:INV/2024/00001;

  • 在**分支2**创建发票:INV/2024/00001;

  • 在**主公司**创建发票:INV/2024/00001。

保险

对于 保健服务提供商,您可以发送总公司和分公司的保险信息,并在 eTIMS 中更新。要执行此操作,请进入 会计 ‣ 配置 ‣ 设置,滚动到 肯尼亚 eTIMS 整合 部分,并填写 代码名称费率 字段。完成后点击 发送保险详细信息

产品注册

The KRA requires products to be registered first before conducting business operations (such as stock movements, BOM, customer invoices, etc.). For a product to be registered, the following fields must be defined on the product form:

  • In the General Information tab: Cost.

  • In the Accounting tab:

    • Packaging Unit;

    • Packaging Quantity;

    • Origin Country;

    • eTIMS Product Type;

    • Insurance Applicable;

    • UNSPSC 类别

如果定义了上述要素,产品将在向 KRA 发送操作时自动注册。如果没有,屏幕顶部会有黄色横幅提醒您检查缺少的元素。

产品注册模板。

库存移动

所有**库存变动**必须发送至 KRA。如果是内部操作或库存调整,则不需要发票;因此,如果满足以下至少一个条件,Odoo 会自动发送发票:

  1. No contact is set for the move;

  2. The contact is your main company or a branch of the main company.

If the stock moves are external operations (e.g., to contacts that are not part of the main company or its branches), the stock moves are automatically sent after the invoice is sent to eTIMS.

注解

  • The stock move must be confirmed before sending the invoice to eTIMS.

  • The product(s) must be registered for the stock move to be sent to eTIMS. If the product has not been registered yet, a yellow banner will prompt the products’ registration.

采购

Odoo automatically fetches new vendor bills from eTIMS every day. You need to confirm the fetched vendor bills and send the confirmation to the KRA. To confirm a vendor bill, it must be linked to one or several confirmed purchase order line(s).

In the case of purchases (not customs imports), the steps to link purchase order lines with bills are the following:

  1. Go to Accounting ‣ Vendors ‣ Bills. The vendor bill is fetched from the KRA servers. The JSON file is available in the chatter of the vendor bill if needed.

  2. Odoo looks at the Tax ID (PIN) of the vendor (partner);

    • If it is unknown, a new contact (partner) is created.

    • If it is known and the branch ID is the same, Odoo uses the known contact.

  3. In the fetched bill from the KRA, select the Product. Each vendor bill must contain a product to be confirmed and sent to eTIMS later on.

  4. Odoo checks existing purchase order lines matching the product(s) entered at the previous step and the partner (if any). Click the Purchase Order Line field, and select the correct related purchase order line(s) matching the product(s). The quantities on the bill must be the same as the received quantities indicated on the purchase order.

    If no existing purchase order line matches the lines of the fetched bill, click Create Purchase Order and create a purchase order based on the unmatched line(s). Validate the resulting stock move and Confirm the bill.

  5. Set a method in the eTIMS Payment Method field..

  6. Once all steps are completed, click Send to eTIMS to send the vendor bill. When the vendor bill has been confirmed on eTIMS, the KRA invoice number can be found in the eTIMS Details tab.

Bill registration steps.

发票

注解

The KRA does not accept sales if the product is not in stock.

This is the advised sales flow in Odoo when selling:

  1. Create a sales order.

  2. Validate the delivery.

  3. Confirm the invoice.

  4. Click Send and print, and then enable Send to eTIMS.

  5. Click Send & print to send the invoice.

Once the invoice has been sent and signed by the KRA, the following information can be found on it:

  • KRA invoice number;

  • Mandatory KRA invoice fields, such as SCU information, date, SCU ID, receipt number, item count, internal date, and receipt signature;

  • The KRA tax table;

  • A unique KRA QR code for the signed invoice.

Imports

Customs import codes are automatically fetched from the KRA eTIMS API servers every day. To fetch them manually, proceed as follows:

  1. Enable the 开发者模式(调试模式).

  2. Go to Settings ‣ Technical ‣ Automation: Scheduled Actions and search for KE eTIMS: Receive Customs Imports from the OSCU.

  3. Click the action in the list, then click Run Manually to fetch the codes.

Go to Accounting ‣ Vendors ‣ Customs Imports to view the imported codes.

The following steps are required to send and have customs imports signed by the KRA:

  1. Go to Accounting ‣ Vendors ‣ Customs Imports; The customs import is fetched automatically from the KRA.

  2. Match the imported item with an existing registered product in the Product field (or create a product if no related product exists).

  3. Set a vendor in the Partner field.

  4. Based on the partner, match the imported item with its related purchase order (see purchase steps). The stock must be correctly adjusted when the customs import is approved.

    If no related purchase order exists, create one and Confirm it. Then, confirm the delivery by clicking Receive Products, then Validate on the purchase order.

  5. Click Match and Approve or Match and Reject, depending on the situation of the goods.

注解

The JSON file received from the KRA is attached to the chatter of the customs import.

BOM

The KRA requires all BOMs to be sent to them. To send BOMs to eTIMS, the product and its components must be registered. To access a product’s BOM, click on the product and then click the Bill of Materials smart button.

Make sure the KRA’s required fields are filled in the KRA eTIMS details section of the Accounting tab in the product form, and click Send to eTIMS. The successful sending of the BOM is confirmed in the chatter, where you can also find the sent information in an attached JSON file.

贷记单

The KRA does not accept credit notes with quantities or prices higher than the initial invoice. When creating a credit note, a KRA reason must be indicated: In the credit note form, go to the eTIMS Details tab, select the eTIMS Credit Note Reason, and then select the invoice number in the Reversal of field.