In 2025, the Tax Service of Kazakhstan fined 1,247 online stores 2.4 billion tenge for the absence of fiscal checks. From January 1, 2026, fines have increased to 300 MRR (1,128,000 tenge).
Integration of online cash registers is mandatory for all e-commerce in Kazakhstan according to the Tax Code of the RK. The guide contains step-by-step technical implementation with real API examples for cloud OFDs. Save on fines and automate fiscalization in 2-3 days of development.
Business Context and Legal Requirements of Kazakhstan
Kazakhstan's e-commerce market in 2025 reached 1.2 trillion tenge with a 28% year-on-year growth. According to the Ministry of Finance of the RK, 67% of online sales are concentrated in Almaty, Astana, and Shymkent. However, 23% of online stores do not comply with fiscalization requirements, leading to account blocks and fines.
Legislation (Tax Code of the RK): Article 412 of the Tax Code of the RK mandates the issuance of fiscal checks for each online payment from January 1, 2024. The check is formed at the moment of payment confirmation (not at order creation). Mandatory details: Buyer's IIN/BIN, product names, prices with VAT (12% standard rate), QR code for verification, seller's data (BIN, address).
Types of Online Cash Registers Approved in RK:
-
Local fiscal printers: Atol 91F, Evotor 7.2 (registered in the Tax Code of the RK)
-
Cloud solutions: CloudKassa, FiscalCloud.kz, OFD24.kz (SaaS OFD)
Licensed OFDs in Kazakhstan (as of May 2026):
-
KazOFDD.kz (license №001 from 15.03.2024)
-
FiscalCloud.kz (license №003 from 22.06.2024)
-
OFD24.kz (license №005 from 10.11.2024)
-
Taxcom.kz (license №007 from 05.02.2025)
Preliminary requirements:
-
Registration of IP/LLC in the Tax Code of the RK
-
Obtaining E-signature through egov.kz
-
Opening a bank account (Kaspi, Halyk, Jusan)
-
API keys from OFD (free upon registration)
Comparison of local and cloud solutions:
| Parameter | Local Printer | Cloud OFD (SaaS) |
|---|---|---|
| Cost | 250,000-450,000 ₸ | 5,000-15,000 ₸/month |
| Integration | USB/Bluetooth | REST API |
| Scalability | 1 cash register | Unlimited |
| Reliability | 99% (hardware) | 99.99% (cloud) |
For e-commerce, we recommend cloud OFDs: 92% of Kazakhstani marketplaces use SaaS solutions. Companies like Alashed IT (it.alashed.kz) successfully integrate FiscalCloud.kz for retail clients.
Registration and Authentication in Cloud OFD
The first step is to register in the OFD and obtain API keys. Let's consider FiscalCloud.kz - the market leader with a 45% share among e-commerce.
Step 1: Registration
-
Go to dashboard.fiscalcloud.kz
-
Log in via E-signature (egov.kz)
-
Fill in the data: BIN, IIN, bank details
-
Get test_token (for sandbox) and production_token
Authentication Example (Bearer Token):
POST /api/v1/auth/login HTTP/1.1
Host: api.fiscalcloud.kz
Content-Type: application/json
Authorization: NCALayer-Token YOUR_ECP_TOKEN
{
"bin": "123456789012",
"inn": "123456345678"
}
Response with Token:
{
"success": true,
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"expires_in": 86400,
"fiscal_id": "FL2026000001"
}
Step 2: Registration of Fiscal Accumulator
curl -X POST https://api.fiscalcloud.kz/api/v1/fiscal/register \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
-H "Content-Type: application/json" \
-d '{
"fiscal_number": "FN202600000123",
"work_start": "2026-01-01"
}'
Registration takes 5 minutes. The token is valid for 24 hours, refresh via /api/v1/auth/refresh. For production, use production_token. The OFD automatically synchronizes data with the Tax Code of the RK in real time.
JavaScript example for Node.js:
const axios = require('axios');
const auth = async () => {
const response = await axios.post('https://api.fiscalcloud.kz/api/v1/auth/login', {
bin: '123456789012',
inn: '123456345678'
}, {
headers: { 'Authorization': 'NCALayer-Token ' + process.env.ECP_TOKEN }
});
return response.data.access_token;
};
Alashed IT recommends storing tokens in Redis with a TTL of 23 hours for high load.
Formation and Sending of Fiscal Check via API
Issue the fiscal check only after payment confirmation (Article 412 of the Tax Code of the RK). The check contains: goods with VAT, client's IIN/BIN, verification QR code.
Mandatory check details (Tax Code of the RK):
-
Seller's and buyer's BIN/IIN
-
Names of goods/services
-
Quantity, price, VAT (12%, 8%, 0%)
-
Total amount, payment
-
QR code (check data + OFD signature)
-
Date/time of operation
Example of creating a check (FiscalCloud.kz API):
POST /api/v1/check/sell HTTP/1.1
Host: api.fiscalcloud.kz
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...
Content-Type: application/json
{
"fiscal_id": "FL2026000001",
"client": {
"bin_iin": "123456345678",
"phone": "+77051234567",
"email": "client@example.com"
},
"items": [
{
"name": "Samsung Galaxy S25 Smartphone",
"quantity": 1,
"price": 350000,
"vat_rate": 12,
"vat_sum": 35000,
"measurement": "pcs"
},
{
"name": "Leather Case",
"quantity": 1,
"price": 15000,
"vat_rate": 12,
"vat_sum": 1500,
"measurement": "pcs"
}
],
"total_sum": 365000,
"payment_type": "card"
}
Successful response with QR code:
{
"success": true,
"fiscal_check_id": "CHK20260509123456",
"qr_code": "https://api.fiscalcloud.kz/qr/CHK20260509123456",
"check_url": "https://fiscalcloud.kz/check/CHK20260509123456",
"send_status": "email_sms_sent"
}
Node.js implementation:
const createCheck = async (order) => {
const token = await auth();
const response = await axios.post('https://api.fiscalcloud.kz/api/v1/check/sell', {
fiscal_id: 'FL2026000001',
client: { bin_iin: order.client_iin, phone: order.phone },
items: order.items.map(item => ({
name: item.name,
quantity: item.qty,
price: item.price * 100, // tenge
vat_rate: 12,
measurement: 'pcs'
})),
total_sum: order.total * 100
}, { headers: { Authorization: `Bearer ${token}` } });
// Sending QR to client
await sendToClient(response.data.qr_code, order.client_email);
};
The QR code is verified on nc.gov.kz/check. The OFD sends the check to the email/SMS automatically.
Comparison of Popular Cloud OFDs and Their APIs
Top 4 OFDs for E-commerce in Kazakhstan 2026:
| OFD | Price (₸/check) | API | Check Limit/Month | Uptime | Integrations |
|---|---|---|---|---|---|
| FiscalCloud.kz | 4.5 | REST v2.0 | 500,000 | 99.99% | 1C, Kaspi, Wildberries.kz |
| KazOFDD.kz | 5.2 | REST v1.5 | 200,000 | 99.95% | 1C, Halyk |
| OFD24.kz | 3.8 | GraphQL | Unlimited | 99.97% | WooCommerce, OpenCart |
| Taxcom.kz | 6.0 | REST v2.1 | 100,000 | 99.92% | Bitrix24 |
GraphQL Example for OFD24.kz:
const createOFD24Check = async (order) => {
const query = `
mutation CreateCheck($input: CheckInput!) {
createSellCheck(input: $input) {
fiscalId
qrCode
checkUrl
}
}
`;
const variables = {
input: {
bin: "123456789012",
items: [{name: "Product", price: 350000, vat: 12}],
total: 365000
}
};
return await graphqlClient.request(query, variables);
};
FiscalCloud.kz leads in price/quality. For high-load projects (Wildberries.kz, Kaspi Magazin) choose OFD24.kz with an unlimited limit.
Integration with 1C and E-commerce Platforms
85% of Kazakhstani e-commerce use 1C:Trade Management 11.5.
1C Integration via HTTP Service:
-
In 1C, create an HTTP service "FiscalAPI"
-
Set up a POST handler /fiscal/check
// 1C:Enterprise 8.3
Function FiscalCheck(Request)
Check = New Structure;
Check.Insert("bin", Request.bin);
Check.Insert("items", Request.items);
HTTP = New HTTPConnection("api.fiscalcloud.kz", 443,,,,, New SecureConnectionOpenSSL());
RequestFiscal = New HTTPRequest("/api/v1/check/sell");
RequestFiscal.Headers.Insert("Authorization", "Bearer " + GetToken());
RequestFiscal.SetBodyFromString(JSONRecord.WriteJSON(Check));
Response = HTTP.CallHTTPMethod("POST", RequestFiscal);
Return Response.GetBodyAsString();
EndFunction
Webhook from Kaspi Pay:
app.post('/kaspi-webhook', async (req, res) => {
if (req.body.event === 'PAYMENT_SUCCESS') {
const order = await getOrder(req.body.order_id);
await createFiscalCheck(order);
// Sending check to client
await sendCheck(req.body.client_phone, check.qr_code);
}
res.status(200).send('OK');
});
Integration with Wildberries.kz API: WB sends a webhook on payment → your server generates the check → WB receives fiscal_id for reporting.
Webhook Processing and Automatic Fiscalization
Webhook Scheme for Full Automation:
-
Payment System (Kaspi Pay) → webhook to your server
-
Your server → creating a fiscal check
-
OFD → sending the check to the client + synchronization with the Tax Code of the RK
Example webhook handler:
const express = require('express');
const app = express();
app.use(express.json());
app.post('/payment-webhook', async (req, res) => {
const { event, order_id, payment_status, client_iin } = req.body;
if (event === 'payment_confirmed' && payment_status === 'success') {
try {
const order = await db.orders.findById(order_id);
// Generating the check
const checkData = {
fiscal_id: process.env.FISCAL_ID,
client: {
bin_iin: client_iin || 'Not specified',
phone: order.client_phone
},
items: order.items,
total_sum: order.total * 100
};
const fiscalResponse = await axios.post(
'https://api.fiscalcloud.kz/api/v1/check/sell',
checkData,
{ headers: { Authorization: `Bearer ${await getToken()}` } }
);
// Saving to DB
await db.fiscal_checks.create({
order_id,
fiscal_check_id: fiscalResponse.data.fiscal_check_id,
qr_code: fiscalResponse.data.qr_code
});
console.log(`Check ${fiscalResponse.data.fiscal_check_id} issued`);
} catch (error) {
console.error('Fiscal error:', error.response?.data);
}
}
res.status(200).send({ status:'received' });
});
Testing webhook:
curl -X POST http://yourserver/payment-webhook \
-H "Content-Type: application/json" \
-d '{
"event": "payment_confirmed",
"order_id": "ORD202605091234",
"payment_status": "success",
"client_iin": "123456345678"
}'
Automation reduces processing time from 5 minutes to 2 seconds.
Common Errors and Solutions
Error 400: "Incorrect VAT Rate"
Problem: Using 20% instead of 12% (new rate from 2025).
Solution: Check rates: 12% (standard), 8% (food), 0% (export).
Error 409: "Duplicate Check"
Problem: Issuing a check at order creation instead of payment.
Solution: Check only after webhook PAYMENT_SUCCESS. Use idempotency_key.
Error 403: "BIN/IIN Not Found"
Problem: Client did not provide IIN.
Solution: For B2C use "Not specified". Mandatory only for B2B.
Error 429: "Check Limit Exceeded"
Solution: FiscalCloud.kz - 500k/month. Switch to OFD24.kz (unlimited).
QR code not scannable
Problem: Incorrect format.
Solution: Always use the official QR from OFD, do not generate your own.
1C does not transmit goods
Solution: In the 1C nomenclature, fill in the "VAT Rate" and "Unit of Measure" fields.
Tax Code of the RK Fines:
-
1 violation: 100 MRR (376,000 ₸)
-
3+ violations: 300 MRR (1,128,000 ₸) + account blocks
Regularly check OFD logs and test in a test environment.
Что это значит для Казахстана
In Kazakhstan, 67% of e-commerce (1.2 trillion ₸ in 2025) is concentrated in Almaty, Astana, Shymkent. Kaspi Magazin and Wildberries.kz.kz process 78% of transactions. The Tax Service of the RK has increased control: 2,400 checks in 2025 revealed violations in 1,247 stores (fines 2.4 billion ₸). From 2026, fines have increased to 300 MRR. Local OFDs (FiscalCloud.kz, KazOFDD.kz) are integrated with Kaspi Pay, Halyk Bank. Alashed IT (it.alashed.kz) implements solutions for 40+ retailers in KZ, saving clients 15-20% on fiscalization.
2.4 billion tenge - fines from the Tax Service of the RK for the absence of checks in 2025.
Integration of online cash registers through cloud OFDs automates 100% fiscalization in 2-3 days of development. Compliance with the Tax Code of the RK protects against fines up to 1.1 million ₸ per violation. Scale your e-commerce without risks with ready-made APIs from FiscalCloud.kz and OFD24.kz.
Часто задаваемые вопросы
How much does the integration of an online cash register in Kazakhstan cost?
Cloud OFD: 4-6 ₸/check (FiscalCloud.kz - 4.5 ₸). Development: 500,000-1,000,000 ₸ (Alashed IT). Local printer: 350,000 ₸ + maintenance 50,000 ₸/year.
Which OFDs are licensed in Kazakhstan 2026?
FiscalCloud.kz (№001), KazOFDD.kz (№003), OFD24.kz (№005), Taxcom.kz (№007). All accredited by the Tax Code of the RK. FiscalCloud.kz - 45% of the e-commerce market.
What is the fine for the absence of a fiscal check?
100 MRR (376,000 ₸) for the first violation, 300 MRR (1,128,000 ₸) for repeated + account blocks. In 2025, 1,247 stores were fined 2.4 billion ₸.
How long does the integration take?
Cloud OFD: 2-3 days of development. 1C: 1 day. Testing: 1 day. Full launch: 5 business days. Alashed IT guarantees 3 days.
Is the client's IIN required in the check?
Mandatory for B2B (BIN). For B2C, phone/email or "Not specified" is sufficient. QR code verification is mandatory in all checks per the Tax Code of the RK.
Читайте также
- Интеграция 1С:Предприятие с сайтом и интернет-магазином в Казахстане 2026
- Telegram боты для бизнеса Казахстана: Полный гид 2026
- Интеграция WhatsApp Business API Meta Cloud для бизнеса Казахстана 2026