Finance

Bilingual Arabic–English tax invoice generator

A bilingual Arabic–English VAT invoice with seller and buyer VAT numbers, used across Saudi Arabia and the Gulf.

Businesses in Saudi Arabia and across the Gulf often issue invoices with every label in both Arabic and English. This template does that, with right-to-left Arabic, seller and buyer VAT and CR numbers, issue and supply dates, VAT per line and totals before and after VAT.

The Arabic font is embedded in the template, so the PDF renders correctly everywhere. Generate one from a prompt or render invoices in bulk from your system.

Generate a Bilingual Tax Invoice (Arabic / English) PDF via the API

POST your data to /api/v1/generate and get a PDF back. Copy-paste an example, swap in your API key, and loop over a list to render thousands — one bilingual tax invoice (arabic / english) per record.

curl -X POST https://pdfgen.com/api/v1/generate \
-H "Authorization: Bearer pdfg_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"html": "<link href=\"https://fonts.googleapis.com/css2?family=Noto+Sans+Arabic:wght@400;600;700&display=swap\" rel=\"stylesheet\">\n<div style=\"max-width:780px;margin:0 auto;padding:40px;font-family:'\''Noto Sans Arabic'\'',-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;color:#111827;font-size:12.5px;line-height:1.45;\">\n <div style=\"text-align:center;border-bottom:2px solid #047857;padding-bottom:12px;margin-bottom:18px;\">\n <h1 style=\"font-size:22px;font-weight:800;margin:0;color:#047857;\">Tax Invoice <span style=\"color:#9ca3af;font-weight:400;\">|</span> <span dir=\"rtl\">فاتورة ضريبية</span></h1>\n </div>\n <table style=\"width:100%;border-collapse:collapse;margin-bottom:14px;font-size:inherit;line-height:inherit;\">\n <tr>\n <td style=\"width:50%;vertical-align:top;padding:12px;border:1px solid #e5e7eb;\">\n <p style=\"font-size:11px;text-transform:uppercase;letter-spacing:1.5px;color:#9ca3af;font-weight:700;margin:0 0 8px;\">Seller</p>\n <p style=\"margin:0;font-weight:700;\">{{seller.nameEn}}</p>\n <p style=\"margin:2px 0 0;color:#6b7280;\">{{seller.addressEn}}</p>\n <p style=\"margin:6px 0 0;\">VAT No. <strong>{{seller.vatNumber}}</strong></p>\n <p style=\"margin:2px 0 0;\">CR No. <strong>{{seller.crNumber}}</strong></p>\n </td>\n <td dir=\"rtl\" style=\"width:50%;vertical-align:top;padding:12px;border:1px solid #e5e7eb;text-align:right;\">\n <p style=\"margin:0 0 8px;font-size:12px;color:#9ca3af;font-weight:700;\">البائع</p>\n <p style=\"margin:0;font-weight:700;\">{{seller.nameAr}}</p>\n <p style=\"margin:2px 0 0;color:#6b7280;\">{{seller.addressAr}}</p>\n <p style=\"margin:6px 0 0;\">الرقم الضريبي <strong>{{seller.vatNumber}}</strong></p>\n <p style=\"margin:2px 0 0;\">السجل التجاري <strong>{{seller.crNumber}}</strong></p>\n </td>\n </tr>\n <tr>\n <td style=\"vertical-align:top;padding:12px;border:1px solid #e5e7eb;\">\n <p style=\"font-size:11px;text-transform:uppercase;letter-spacing:1.5px;color:#9ca3af;font-weight:700;margin:0 0 8px;\">Buyer</p>\n <p style=\"margin:0;font-weight:700;\">{{buyer.nameEn}}</p>\n <p style=\"margin:2px 0 0;color:#6b7280;\">{{buyer.addressEn}}</p>\n <p style=\"margin:6px 0 0;\">VAT No. <strong>{{buyer.vatNumber}}</strong></p>\n </td>\n <td dir=\"rtl\" style=\"vertical-align:top;padding:12px;border:1px solid #e5e7eb;text-align:right;\">\n <p style=\"margin:0 0 8px;font-size:12px;color:#9ca3af;font-weight:700;\">المشتري</p>\n <p style=\"margin:0;font-weight:700;\">{{buyer.nameAr}}</p>\n <p style=\"margin:2px 0 0;color:#6b7280;\">{{buyer.addressAr}}</p>\n <p style=\"margin:6px 0 0;\">الرقم الضريبي <strong>{{buyer.vatNumber}}</strong></p>\n </td>\n </tr>\n </table>\n <table style=\"width:100%;border-collapse:collapse;margin-bottom:16px;font-size:inherit;line-height:inherit;\">\n <tr>\n <td style=\"padding:8px 12px;border:1px solid #e5e7eb;\">Invoice No. <span dir=\"rtl\" style=\"color:#9ca3af;\">رقم الفاتورة</span><br><strong>{{invoiceNumber}}</strong></td>\n <td style=\"padding:8px 12px;border:1px solid #e5e7eb;\">Issue date <span dir=\"rtl\" style=\"color:#9ca3af;\">تاريخ الإصدار</span><br><strong>{{formatDate issueDate \"en-GB\"}}</strong></td>\n <td style=\"padding:8px 12px;border:1px solid #e5e7eb;\">Supply date <span dir=\"rtl\" style=\"color:#9ca3af;\">تاريخ التوريد</span><br><strong>{{formatDate supplyDate \"en-GB\"}}</strong></td>\n </tr>\n </table>\n <table style=\"width:100%;border-collapse:collapse;font-size:inherit;line-height:inherit;\">\n <thead>\n <tr style=\"background:#ecfdf5;color:#065f46;font-size:11.5px;\">\n <th style=\"padding:8px;text-align:left;\">Description<br><span dir=\"rtl\">الوصف</span></th>\n <th style=\"padding:8px;text-align:center;\">Qty<br><span dir=\"rtl\">الكمية</span></th>\n <th style=\"padding:8px;text-align:right;\">Unit price<br><span dir=\"rtl\">سعر الوحدة</span></th>\n <th style=\"padding:8px;text-align:right;\">Taxable amount<br><span dir=\"rtl\">المبلغ الخاضع للضريبة</span></th>\n <th style=\"padding:8px;text-align:right;\">VAT {{vatRate}}%<br><span dir=\"rtl\">ضريبة القيمة المضافة</span></th>\n <th style=\"padding:8px;text-align:right;\">Total<br><span dir=\"rtl\">المجموع</span></th>\n </tr>\n </thead>\n <tbody>\n {{#each items}}\n <tr>\n <td style=\"padding:8px;border-bottom:1px solid #f3f4f6;\">{{descriptionEn}}<br><span dir=\"rtl\" style=\"color:#6b7280;\">{{descriptionAr}}</span></td>\n <td style=\"padding:8px;border-bottom:1px solid #f3f4f6;text-align:center;\">{{quantity}}</td>\n <td style=\"padding:8px;border-bottom:1px solid #f3f4f6;text-align:right;\">{{formatCurrency unitPrice ../currency}}</td>\n <td style=\"padding:8px;border-bottom:1px solid #f3f4f6;text-align:right;\">{{formatCurrency taxableAmount ../currency}}</td>\n <td style=\"padding:8px;border-bottom:1px solid #f3f4f6;text-align:right;\">{{formatCurrency vat ../currency}}</td>\n <td style=\"padding:8px;border-bottom:1px solid #f3f4f6;text-align:right;font-weight:700;\">{{formatCurrency total ../currency}}</td>\n </tr>\n {{/each}}\n </tbody>\n </table>\n <div style=\"display:flex;justify-content:flex-end;margin-top:14px;\">\n <table style=\"min-width:400px;border-collapse:collapse;font-size:inherit;line-height:inherit;\">\n <tr><td style=\"padding:5px 0;color:#6b7280;\">Total excluding VAT</td><td dir=\"rtl\" style=\"padding:5px 12px;color:#6b7280;text-align:right;\">الإجمالي غير شامل ضريبة القيمة المضافة</td><td style=\"padding:5px 0;text-align:right;white-space:nowrap;\">{{formatCurrency subtotal currency}}</td></tr>\n <tr><td style=\"padding:5px 0;color:#6b7280;\">Total VAT ({{vatRate}}%)</td><td dir=\"rtl\" style=\"padding:5px 12px;color:#6b7280;text-align:right;\">إجمالي ضريبة القيمة المضافة</td><td style=\"padding:5px 0;text-align:right;white-space:nowrap;\">{{formatCurrency vatTotal currency}}</td></tr>\n <tr style=\"border-top:2px solid #047857;\"><td style=\"padding:9px 0 0;font-weight:800;font-size:14px;\">Total including VAT</td><td dir=\"rtl\" style=\"padding:9px 12px 0;font-weight:800;text-align:right;\">الإجمالي شامل ضريبة القيمة المضافة</td><td style=\"padding:9px 0 0;text-align:right;font-weight:800;font-size:14px;color:#047857;white-space:nowrap;\">{{formatCurrency total currency}}</td></tr>\n </table>\n </div>\n <div style=\"margin-top:28px;display:flex;justify-content:space-between;font-size:12px;color:#6b7280;border-top:1px solid #e5e7eb;padding-top:12px;\">\n <span>Bank transfer · {{bank.accountName}} · IBAN <strong style=\"color:#111827;\">{{bank.iban}}</strong></span>\n <span dir=\"rtl\">تحويل بنكي · {{bank.accountNameAr}} · رقم الآيبان</span>\n </div>\n</div>",
"engine": "handlebars",
"format": "A4",
"data": {
"seller": {
"nameEn": "Al Noor Trading Co.",
"nameAr": "شركة النور للتجارة",
"addressEn": "King Fahd Road, Al Olaya, Riyadh 12211, Saudi Arabia",
"addressAr": "طريق الملك فهد، العليا، الرياض 12211، المملكة العربية السعودية",
"vatNumber": "300000000000003",
"crNumber": "1010000000"
},
"buyer": {
"nameEn": "Desert Rose Hospitality",
"nameAr": "وردة الصحراء للضيافة",
"addressEn": "Prince Sultan Street, Jeddah 23431, Saudi Arabia",
"addressAr": "شارع الأمير سلطان، جدة 23431، المملكة العربية السعودية",
"vatNumber": "310000000000003"
},
"invoiceNumber": "INV-2026-0215",
"issueDate": "2026-10-27",
"supplyDate": "2026-10-25",
"currency": "SAR",
"vatRate": 15,
"items": [
{
"descriptionEn": "Commercial coffee machine",
"descriptionAr": "آلة قهوة تجارية",
"quantity": 2,
"unitPrice": 7500,
"taxableAmount": 15000,
"vat": 2250,
"total": 17250
},
{
"descriptionEn": "Installation and training",
"descriptionAr": "التركيب والتدريب",
"quantity": 1,
"unitPrice": 1200,
"taxableAmount": 1200,
"vat": 180,
"total": 1380
},
{
"descriptionEn": "Annual maintenance plan",
"descriptionAr": "خطة صيانة سنوية",
"quantity": 1,
"unitPrice": 2400,
"taxableAmount": 2400,
"vat": 360,
"total": 2760
}
],
"subtotal": 18600,
"vatTotal": 2790,
"total": 21390,
"bank": {
"accountName": "Al Noor Trading Co.",
"accountNameAr": "شركة النور للتجارة",
"iban": "SA03 8000 0000 6080 1016 7519"
}
}
}' --output arabic-tax-invoice.pdf

Working in another language? Follow a full guide for your stack:

What you can build

  • Saudi and Gulf businesses billing local customers
  • Exporters invoicing clients in the Middle East
  • E-commerce stores selling into Saudi Arabia, the UAE and Qatar
  • Accounting tools adding bilingual invoice PDFs

Frequently asked questions

Is this invoice ZATCA (Fatoora) compliant?
It follows the common layout of a Saudi tax invoice, but compliance with ZATCA e-invoicing requires generating and reporting invoices through a compliant e-invoicing solution, including its QR code. Use this PDF alongside your compliant system, not instead of it.
Can I change the VAT rate or currency?
Yes — the VAT rate and currency are values you pass, so the same template works for 5% VAT in the UAE or other currencies.
Does the Arabic render correctly in the PDF?
Yes. The template loads the Noto Sans Arabic font and marks Arabic text as right-to-left, so it renders correctly in the generated PDF.

Related templates

Ship your bilingual tax invoice (arabic / english) PDF endpoint today

Generate this template with AI, tweak it to match your brand, then render at scale with a single API call — no headless browsers to babysit.