Türkiye

Modules

The following modules are installed automatically with the Turkish localization:

Name

Technical name

Description

Türkiye - Accounting

l10n_tr

Base Turkish fiscal localization package complete with the Turkish chart of accounts, taxes, financial reports, and fiscal positions

Türkiye - Accounting Reports

l10n_tr_reports

Türkiye-specific tax and profit and loss reporting.

Türkiye - e-Irsaliye (e-Dispatch)

l10n_tr_nilvera_edispatch

Enables the generation and upload of e-Dispatch files

Additionally, the following modules must be manually installed in order to use the Nilvera integration for managing electronic documents:

Name

Technical name

Description

Türkiye - Nilvera

l10n_tr_nilvera

Integration module enabling communication with Nilvera and enabling the generation of e-Ledger files

Türkiye - Nilvera E-Invoice

l10n_tr_nilvera_einvoice

For sending and receiving basic scenario electronic invoices to/from Nilvera.

Note

In some cases, such as when upgrading to a version with additional modules, it is possible that modules may not be installed automatically. Any missing modules can be manually installed.

Localization overview

The Turkish localization package ensures compliance with Turkish fiscal and accounting regulations. It includes tools for managing taxes, fiscal positions, reporting, and a predefined chart of accounts tailored to Türkiye’s standards.

The Turkish localization package provides the following key features to ensure compliance with local fiscal and accounting regulations:

Chart of accounts

In the chart of accounts, accounts are automatically mapped to their corresponding taxes and default accounts payable and accounts receivable fields.

Note

The Türkiye chart of accounts is based on the Turkish Revenue Administration’s (Gelir İdaresi Başkanlığı’s (GİB)) 7/A accounts, which provide a baseline of the necessary accounts. 7/B accounts are archived and can be unarchived if required.

Taxes

Taxes are automatically created and configured when the Turkish localization is installed.

Warning

Do not delete taxes, as they are used for e-invoice and e-archive invoices. However, new taxes can be generated, such as for withholding tax reasons that do not exist yet in the database.

Electronic document solutions

The Turkish localization ensures compliance with the GİB’s requirements for e-invoice, e-archive, e-dispatch, and e-ledger processes.

Through the Nilvera integration, Odoo enables the automated transmission, reception, and management of e-documents in accordance with the GİB’s electronic document standards. The main functionalities of the Nilvera integration include:

Company and contacts

Before activating the Türkiye localization, ensure the following information is correctly configured in your company’s contact record:

Important

To access all of these fields, go to the company’s contact record in the Contacts application or by going to Accounting ‣ Customers ‣ Customers, removing the Customer Invoices filter, and selecting the company’s contact record. This is different from accessing the company record itself through the general settings.

  • Company Name: Must match the GİB registration

  • Turkish Tax Office: Registered tax office

  • Tax ID: VKN/TCKN - 10 digits for companies, 11 for individuals

  • Address: Complete legal address

  • Country: Registered country

  • Tags: Enter the Mersis number as a tag and set the Category to MERSISNO

  • eInvoice format: Türkiye (UBL TR 1.2)

  • eInvoice Alias: Acquired from Nilvera

  • eDispatch Alias: Acquired from Nilvera

Note

  • The eInvoice format is set automatically based on the contact’s country. To edit this field, enable developer mode to display the field and then manually adjust it.

  • The eInvoice Alias and eDispatch Alias fields are only visible once the company’s Nilvera Status is E-Invoice.

For each customer and vendor:

  • Ensure the Address, City, State, Country, Tax ID, and eInvoice format are configured.

  • If the partner is not registered for e-invoicing, Odoo automatically defaults to e-Archive.

Tax creation

Create exception reasons

To create additional exception reasons, follow these steps:

  1. Enable developer mode and navigate to Accounting ‣ Configuration ‣ GIB Codes.

  2. Click the New button.

  3. Enter a Reason and a Reason Code that match the values in Nilvera’s documentation.

  4. Select the corresponding code type:

    • Withholding for withholding tax reasons

    • Exception for tax-exempt reasons

    • Export exception for export exception reasons

    • Export registration for export-registered reasons

  5. For Withholding reasons, enter the corresponding percentage.

Create withholding taxes

  1. Navigate to Accounting ‣ Configuration ‣ Taxes.

  2. Click the New button to first create the base tax.

  3. Set the Tax Computation to Percentage, and set the Withholding Tax Reason field that appears for taxes of this type.

  4. Complete the other mandatory fields of the form (Tax Name, Tax Type, Amount, etc.).

  5. Create additional taxes with Tax Computation set to Group of Taxes. These group taxes should be composed of the base tax created in the previous steps and additional percentage taxes.

Tip

The WH 20% tax illustrates this configuration. To use a different withholding reason, duplicate the base tax, update the reason, and replace the old base tax in duplicated group taxes.

Nilvera integration

Odoo integrates with Nilvera, a GİB-approved electronic document intermediary, to manage e-invoice, e-archive, e-dispatch, and e-ledger processes.

The integration handles:

  • XML data generation in a GİB-compliant format

  • secure transmission to Nilvera

  • synchronization of documents and statuses within Odoo.

Supported document types

  • e-Invoice

    • Basic scenario

      • Sales

      • Withholding

      • Registered for export

      • Tax exempt

      • Return

      • Withholding Return

    • Public Scenario

      • Sales

      • Withholding

      • Tax exempt

    • Export Scenario

    • Commercial Scenario - Sales - Withholding - Registered for export - Tax exempt

  • e-Archive invoice

    • Sales

    • Withholding

    • Registered for export

    • Tax exempt

    • Return

    • Withholding Return

  • e-Dispatch note

Note

Return invoices can only be sent via credit notes.

Configuration

The Nilvera documentation provides instructions for accessing the sandbox and generating the API credentials.

To configure the Nilvera integration with your database, follow these steps:

  1. Make sure the Türkiye - Nilvera module is installed.

  2. Navigate to Accounting ‣ Configuration ‣ Settings and scroll to the Türkiye Electronic Integrations section.

  3. Configure:

    • Nilvera API credentials (generated in Nilvera)

    • Incoming Invoices Journal (i.e., Purchases)

To configure your customer contact records to be able to send them e-invoices via Nilvera, follow these steps:

  1. Navigate to Accounting ‣ Customers ‣ Customers.

  2. Remove the Customer Invoices filter (if necessary), and select the partner to contact via Nilvera.

  3. Open the Accounting tab and click Verify next to Nilvera Status.

Send e-Invoices via Nilvera

e-Invoice/e-Archive is a government-approved digital invoice system that replaces traditional paper invoices, allowing businesses to issue, transmit, and store invoices electronically in compliance with Turkish tax regulations. While e-Invoices are for customers who are registered with the GİB, e-Archives can be sent to customers who are not registered with the GİB, ensuring senders can comply with government regulations even when dealing with foreign customers or B2C workflows.

To send an e-Invoice/e-Archive, follow these steps:

  1. When creating a customer invoice, after selecting a Customer,

    • if the customer’s Nilvera Status is e-Archive, two fields will appear:

      • Is GIB Export: used for product export invoices to partners outside of Türkiye

      • Invoice Type: determines the type of invoice

    • if the customer’s Nilvera Status is e-Invoice, the Invoice Scenario field will appear: Select the scenario of the invoice to be sent to the GİB.

  2. Send the invoice, and ensure by Nilvera is selected to issue an e-invoice.

Receive e-Invoices via Nilvera

Update Nilvera status

To update the Nilvera Status of invoices in Odoo, follow these steps:

  1. Open the Accounting Dashboard.

  2. Click on the Sales journal.

  3. Click the (Actions) icon, then click Refresh e-Invoices Status. This action updates the Nilvera Status field on each invoice.

Fetch e-invoice PDFs

There are two methods to fetch PDFs of e-invoices:

  1. From the invoice list view:

    1. Go to Accounting ‣ Customers ‣ Invoices.

    2. Select one or multiple invoices.

    3. Click the Fetch Nilvera PDF

  2. From an invoice form view: Once the Nilvera Status is Successful, click the Fetch Nilvera PDF button.

Receive purchase e-invoices

To fetch e-invoices generated in Nilvera and received by your company:

  1. Open the Accounting Dashboard.

  2. Click on the Purchase journal.

  3. Click the (Actions) icon, then click Fetch e-invoices. The received e-invoices are created as vendor bills in Draft status.

Fetch PDFs of bills generated in Odoo

For vendor bills that were created in Odoo, PDF retrieval works the same way as for customer invoices:

  1. Go to Accounting ‣ Vendors ‣ Bills.

  2. Select one or multiple vendor bills.

  3. Click the Fetch Nilvera PDF button.

Generate e-Ledger

The e-Ledger is an electronic system that enables businesses to digitally store and submit their accounting records to the government for tax and regulatory compliance. In Odoo, users can generate the e-Ledger as a zipped CSV file and report company records seamlessly through the Nilvera integration.

  1. Navigate to Accounting ‣ Reporting ‣ General Ledger.

  2. Click the (Actions) icon.

  3. Click Generate e-Ledger to generate the file and download it to your computer.

Manage e-Dispatch files

Generate e-Dispatch files

The e-Dispatch is an electronic document that replaces traditional paper delivery notes, allowing businesses to digitally issue, transmit, and track shipment details for goods in transit. In Odoo, users can generate e-Dispatch documents as XML and upload them through the Nilvera integration, ensuring compliant and traceable delivery operations.

  1. Navigate to Inventory ‣ Operations ‣ Deliveries.

  2. Open an existing delivery order or create a new one.

  3. Once a Delivery Address is selected, fill in the necessary information in the e-Dispatch tab that appears.

  4. Once the delivery order is validated, click the Send GİB e-Dispatch (XML) button that appears to send the XML file. To generate the file without sending it, click the (Actions) icon, then click Generate GIB e-Dispatch (XML).

  5. Download the generated file attached to the delivery order and upload it to Nilvera for processing.

Upload e-Dispatch files

  1. Download the received e-Dispatch XML from Nilvera.

  2. Navigate to Inventory ‣ Operations ‣ Receipts.

  3. Click the Upload e-Receipt (XML) button and select the downloaded file.

Manage e-Receipt files

Stock moves can be updated from their relative Order Receipts using the XML file. To do so:

  1. Open the Inventory app, and go to Operations ‣ Receipts.

  2. Open a receipt order, click the e-Dispatch tab, and select the XML corresponding to the order receipt from the e-Dispatch XML field. Then, click Update from GIB e-Dispatch (XML) to: - Update your stock according to the stock moves stored in the XML file. - Update both the Operations and e-Dispatch tab with info such as Product, Carrier, Delivery Notes, etc. - Log the corresponding e-Receipt PDF file in the chatter.

Note

The system auto-fetches XML receipts through a CRON every 12 hours.

Mandatory compliance information

The following rules are mandatory for all users of the Türkiye localization integration. Compliance with these requirements is essential for the legal validity of e-Documents issued through the GİB via Nilvera.

Document numbering structure

All generated invoices and dispatch documents must follow a specific numbering structure: three alphanumeric characters + document year + sequential number.

Example

INV/2025/00001

The numbering must be unique, sequential, and continuous. Each document must have a distinct identifier.

Once a file has been submitted, even if it returns an error, the same sequence number cannot be used; a new document must be created.

e-Dispatch numbering structure

To access the e-Dispatch numbering structure, navigate to Inventory ‣ Configuration ‣ Operation Types, then select an operation matching the Delivery Orders type.

An arbitrary alphanumerical Sequence Prefix can be set. The system uses only the last three characters of that prefix. The prefix must contain at least three characters; any shorter prefix is automatically denied by the system.

Example

In the sequence WH/OUT/948224, the system will only send 224.

Tip

You can preview the sequence by going to Inventory ‣ Configuration ‣ Operation Types ‣ Delivery Orders. Once the sequencing is configured, the banner at the top shows a preview:

Banner preview of sequencing of e-Dispatch.

Sequential number gaps

If a sequence number is skipped, the previous missing numbers must be issued within 7 days.

Example

If INV/2025/00002 is issued before INV/2025/00001, INV/2025/00001 must be issued within 7 days.

No sequence number can remain unissued beyond this period.

Discount rules

Global discounts (discounts shown as a separate invoice line) cannot be issued. All discounts must be applied at the product line level within the invoice.

e-Ledger compliance

The first issued invoice must represent the opening balance for the accounting period. All subsequent invoices must follow the sequential numbering pattern.

Example

INV/2025/00001, INV/2025/00002, INV/2025/00003, etc.

Sequential numbering must be maintained consistently across the e-Ledger to ensure data integrity and compliance.

Nilvera e-Invoice subscriptions

Note

Turkish e-Invoice law permits only one date range per invoice, at the header level, not per individual line item. Therefore, items with different subscription date ranges cannot be mixed on the same invoice. However, an item with a subscription date range can be mixed with items that that have no date range at all.

If the invoice is generated from the subscription order in the Subscriptions app, the subscription order’s date is used as the invoice’s date, at the header level.

Subscription dates must match across lines.

Manage Commercial Invoices

Commercial invoice scenarios are managed in the Accounting app through Customers ‣ Invoices for outgoing invoices and Vendors ‣ Bills for incoming vendor bills.

Outgoing commercial invoices

On a draft (non-posted) invoice, select a scenario from the Invoice Scenario field and specify the type in the Is field. Depending on the selection, the Exemption Reason field may become available. If applicable, enter an exemption reason.

Once a commercial scenario invoice is confirmed and sent, its Nilvera Status changes to Waiting. The customer must then accept or reject the invoice on their end.

If the customer rejects the invoice, the rejection reason is logged in the invoice chatter.

Note

  • GİB automatically accepts an invoice if the recipient does not accept or reject it within 8 days of reception.

  • Accepted invoices display one of two statuses: - Accepted: Manually accepted by the customer. - Accepted Automatically: Automatically acknowledged by GİB under the 8-day rule.

Incoming commercial bills

The system automatically fetches incoming commercial bills from Nilvera and creates corresponding draft bills in Odoo.

A status banner appears at the top of fetched bills with options to Accept or Reject:

  • Accept: Validates the bill.

  • Reject: Opens a pop-up window requiring a rejection reason. After clicking Proceed, the rejection response is sent to Nilvera. This action cannot be undone.