🇺🇿 Uzbekistan Fiscalization - OFD

Explanatory guide that helps companies to become compliant with local Uzbek tax authorities

Uzbekistan Online Fiscalization (OFD) Requirements for Businesses

Overview

For businesses in Uzbekistan, implementing Online Fiscalization (OFD) is a key step towards maintaining compliance with national tax laws 📜 and modernizing your sales reporting 🚀.

🔍 Real-Time Transaction Recording

  • With OFD, sales transactions are recorded accurately and reported to the Uzbek tax authorities instantly.
  • This ensures that your business's transaction data is always current and compliant. 🌟

🛡️ Combatting Tax Evasion

  • The introduction of OFD is a crucial move to prevent tax evasion and increase fiscal transparency.
  • Every sale is tracked, significantly reducing the possibility of discrepancies and fraud. ✅

💼 Tax Reporting Modernization

  • Embracing OFD means joining the digital revolution in tax reporting, which is all about efficiency and reliability.
  • This digital leap is not just forward-thinking but also aligns with global best practices. 🌐

Pre-Requisite

📑 Adding Payze as a Commissioner Agent

In order to reflect the sale of goods under a commission agreement in the receipts of online cash registers and virtual cash desks, the consignor (principal) must follow these steps:

1️⃣ Log in to the personal tax cabinet on the website (my.soliq.uz)[https://my.soliq.uz] using your digital signature key (ЭЦП).
2️⃣ From the list of services, select the option "Formation of the list of organization's commissioners" (Формирование списка комиссионеров организации).
3️⃣ Click the "Add" button.
4️⃣ In the window that opens, enter the following information:
▫️ Tax Identification Number (ИНН) of the legal entity or Personal Taxpayer Number (ПИНФЛ) of the individual entrepreneur;
▫️ Name of the commissioner organization (наименование организации-комиссионера);
▫️ Commission agreement number (номер договора комиссии);
▫️ Banking routing code (МФО);
▫️ Bank account number (расчетный счет);
▫️ Date of the agreement conclusion (дату заключения договора);
▫️ Start date of the agreement's validity (дату начала срока действия договора);
▫️ End date of the agreement's validity (дату окончания срока действия договора).
5️⃣ Press the "Add" button (Добавить) again.

❗️ Important Note:

  • Ensure that the start and end dates of the agreement's validity are entered correctly. Inaccurate dates may result in integration failure. The start date should not precede the actual date of agreement execution, and the end date must reflect the actual intended duration of the agreement.

More Information

Determine Your Product's IKPU Code 🧾🔍

In Uzbekistan's fiscal data management, each product or service provided by businesses is assigned a unique identifier known as an IKPU code. The IKPU code is a crucial element for ensuring compliance with tax regulations, as it helps categorize and declare items properly for fiscal data operators (OFD) and tax authorities.

To determine the IKPU code for your product, follow these steps:

  1. Go to the official classification website tasnif.soliq.uz. This site contains the comprehensive list of IKPU codes along with descriptions.

  2. If you encounter any issues accessing the site, a mirrored version with the essential information is available. Access the backup resource here: IKPU Codes Mirror 🪞.

  3. Search for your product or service using the search functionality. 🔍

  4. Match your product or service with the corresponding IKPU code from the list.

  5. Record the IKPU code for your business documentation and use it in all relevant transactions and reports to the tax authorities. ✅

🚨 Please Note: It's critical for businesses to use the correct IKPU codes to avoid any compliance issues or potential fines. If you're unsure about which code to use, consult with a tax advisor or reach out to the fiscal data operator's support team for assistance.

Simplified OFD Integration with Payze

  • Payze 🚀 simplifies the OFD integration, eliminating the need for handling complex endpoints.
  • Simply include a few extra fields in your payment initialisation request, and you're set for OFD compliance with Payze! ✨
  • Enjoy a straightforward integration process that's both time-saving and effort-efficient. 🎉

🛠️ Processing a Payment with v2/api/payment Endpoint

⚠️

Important: OFD Support

Please note that (OFD) functionality is only supported in thev2/api/payment endpoint.

Ensure that you are using this version to incorporate fiscal data into your payment processing.

To initiate a payment process, you will need to make a PUT request to the v2/api/payment endpoint.

This call should include a JSON request body containing the necessary regulatory details.

Request

{
  "source": "Card",
  "amount": 1000,
  "currency": "UZS",
  "metadata": {
    "order": {
      "orderId": "1500",
      "advanceContractId": "",
      "uzRegulatoryOrderDetails": {
        "latitude": 43.231231,
        "longitude": 232.2131231,
        "taxiVehicleNumber": "...",
        "taxiTin": "...",
        "taxiPinfl": "..."
      },
      "orderItems": [
        {
          "uzRegulatoryOrderItem": {
            "commissionInfoPinfl": "...",
            "commissionInfoTin": "..."
          },
          "productLink": "https://google.com",
          "productImage": "https://google.com/image",
          "productName": "Product Name",
          "productCode": "...",
          "productBarCode": "...",
          "productLabel": "...",
          "packageCode": "...",
          "productQuantity": 1,
          "price": 10,
          "sumPrice": 10,
          "vat": 0,
          "vatPercent": 0,
          "discount": 0,
          "additionalDiscount": 0,
          "voucher": 0
        }
      ],

      "billingAddress": {
        "phoneNumber": "+998111111111"
      }
    },
    "extraAttributes": [
      {
        "key": "RECEIPT_TYPE",
        "value": "Sale",
        "description": "OFD Receipt type"
      }
    ]
  }
}

Request Description

Property

Type

Description

source

String

Payment source, in this case, "Card".

amount

Number

The amount for the transaction

currency

String

The three-letter currency code, here "UZS" for Uzbekistani soʻm.

metadata.order.orderId

String

Unique identifier for the order.

metadata.order.advanceContractId

String

DownPayment contract Id

metadata.order.uzRegulatoryOrderDetails

Object

Required if merchant provides Taxi aggregation services.

latitude

Double

Location of Pickup (Optional)

longitude

Double

Location of Pickup (Optional)

taxiVehicleNumber

String(8)

Vehicle Number

taxiTin

String(9)

TIN (if the principal is an legal entity)

taxiPinfl

String(14)

PINFL (if the principal is an individual)

metadata.order.orderItems

Array

List of items within the order.

uzRegulatoryOrderItem

Object

Container for Uzbekistan's regulatory information for an order item.

commissionInfoPinfl

String

Personal Identification Number of the individual in fiscal data(Committent).
Required if merchant is individual enterpreneur.

commissionInfoTin

String

Tax Identification Number of the committent, required if merchant is legal entity.

productLink

String (URL)

Link to the product page. (Optional)

productImage

String (URL)

URL of the product's image. (Optional)

productName

String(63)

Name of the product. (Required)

productCode

String(17)

IKPU code (tasnif.soliq.uz)[https://tasnif.soliq.uz] on this site you can determine the IKPU codes of goods and services (Required)

productBarCode

String(13)

Barcode of the product.(Optional)

productLabel

String(21)

Label associated with the product.(AKA Marking code)(Optional)

packageCode

String(2)

Code for the product's packaging.(Required)

productQuantity

Number

Quantity of the product in the order.(Required)

price

Number

Price of a single product unit.(Required)

sumPrice

Number

Total price for the product quantity.(Required)

vat

Number

Value-added tax amount on the product.(Required)

vatPercent

Number

The percentage rate of the value-added tax.(Required)

discount

Number

Discount applied to the product. (Optional)

additionalDiscount

Number

Any additional discount applied to the product. Used for Insurances
(Optional)

voucher

Number

Total amount of voucher. Does not affect the order price or VAT (Optional)

metadata.order.billingAddress

Object

Container for the billing address information.

phoneNumber

String

Contact phone number of Card Holder.
(Required)

metadata.extraAttributes

Array

Additional attributes relevant to the payment.

key

String

RECEIPT_TYPE (Indicates type of sale) (Required)

value

String

Indicates type of sale, Default: Sale
<br />Refund,<br />DownPayment,<br />Credit<br />(Required)

description

String

Description of what the extra attribute represents.
(Optional)

Payment Confirmation and Receipts

Upon the successful completion of a payment, the cardholder will receive an SMS notification containing the URL to their OFD receipt. This ensures immediate access to transaction proof for customer convenience and record-keeping.

Cardholder Receipt

  • SMS Notification: An SMS will be sent to the cardholder's phone number as provided in the billing details. This message includes a direct URL to the OFD receipt for the completed transaction.

Merchant Receipt Retrieval

  • Receipt Endpoint: Merchants can obtain a copy of the transaction receipt by querying the /v2/api/payment/query/token-based through the transaction query endpoint. `Receipt property stores receipt url.
    This allows for easy retrieval and storage of fiscal data necessary for compliance and accounting purposes.

Webhook Notification Details

When the OFD receipt becomes available, we will trigger a POST request to the provided webhook URL with the transaction details and the receipt URL.

{
  "Receipt": "https://example.com/ofd_receipts/12345",
  ...
}

SMS Receipt Example

The cardholder receives an SMS with the following content:

Thank you for your purchase! Your OFD receipt is available at: [Receipt URL]

What’s Next

Start integrating payments that are compliant with Uzbek tax regulations