Foreign contractor tax API
Vietnamese foreign contractor tax by activity: deemed VAT and CIT rates under the 2025–2026 rules, net-to-gross gross-up, withholding for Google, Meta…
Pick the activity (services, royalties, loan interest, construction with or without materials, transport, machinery lease, goods supply, digital platform purchases…) and the contract amount with its basis: net (the foreign party must receive this amount after Vietnamese taxes), gross (taxes included) or excl_vat (price without VAT, contractor bears CIT). The API returns the VAT and CIT to withhold, the gross-up and what each side pays.
Rates follow the 2025–2026 rules that replaced TT 103/2014: CIT as a % of revenue from Nghị định 320/2025/NĐ-CP Điều 12.3 (services 5%, hotel / casino management 10%, goods 1%, royalties 10%, interest 5%, construction / transport / other 2%, securities 0.1%, capital transfer 2%…), VAT as a % of revenue from Luật 48/2024 and TT 69/2025 (services 5%, construction with materials / transport 3%, other 2%). Because TT 20/2026 includes the VAT paid on the contractor’s behalf in the CIT base, a net contract grosses up as Net / (1 − VAT% − CIT%). legacy_tt103=true shows the old sequential method for contracts signed before 12/3/2026.
For foreign e-commerce and digital suppliers (online advertising, SaaS), the answer applies the normal VAT rate and 5% CIT and reminds that from 1/7/2026 buyers on the credit method must withhold (Nghị định 252/2026/NĐ-CP). Treaty relief is not applied.
Parameters
| Name | In | Type | Required | Default | |
|---|---|---|---|---|---|
activity | query|body | string | no | services | services, hotel_restaurant_casino_management, goods_supply, goods_with_services_not_separable, royalties, aircraft_ship_lease, machinery_lease, loan_interest, securities_transfer, outward_reinsurance, derivatives, capital_transfer, construction_with_materials, construction_without_materials, transport, digital_platform, other. |
amount | query|body | number | yes | Contract amount. | |
basis | query|body | string | no | net | net, gross or excl_vat. |
vat_rate | query|body | number | no | Override the VAT % (e.g. 0 when the service is not subject to VAT). | |
cit_rate | query|body | number | no | Override the CIT %. | |
legacy_tt103 | query|body | boolean | no | Old TT 103/2014 sequential gross-up. | |
currency | query|body | string | no | VND | Non-VND amounts are rounded to 2 decimals. |
Example
curl "https://apibox.io.vn/v1/vn-fct?activity=services&amount=100000000&basis=net" \
-H "Authorization: Bearer YOUR_API_KEY"const res = await fetch('https://apibox.io.vn/v1/vn-fct?activity=services&amount=100000000&basis=net', {
method: 'GET',
headers: {
Authorization: 'Bearer YOUR_API_KEY',
},
});
const data = await res.json();
console.log(data);import requests
res = requests.get(
"https://apibox.io.vn/v1/vn-fct?activity=services&amount=100000000&basis=net",
headers={"Authorization": "Bearer YOUR_API_KEY"},
timeout=30,
)
print(res.json())<?php
$ch = curl_init('https://apibox.io.vn/v1/vn-fct?activity=services&amount=100000000&basis=net');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_API_KEY'],
]);
$response = curl_exec($ch);
print_r(json_decode($response, true));Response
{
"activity": "services",
"name_vi": "Dịch vụ (tư vấn, quản lý, quảng cáo, xử lý dữ liệu, cho thuê không kèm người điều khiển…)",
"name_en": "Services (consulting, management, advertising, data processing…)",
"basis": "net",
"method": "current",
"vat_rate_percent": 5,
"cit_rate_percent": 5,
"gross": 111111111,
"vat_base": 111111111,
"cit_base": 111111111,
"vat": 5555556,
"cit": 5555555,
"total_tax": 11111111,
"contractor_receives": 100000000,
"vietnamese_party_pays": {
"to_contractor": 100000000,
"to_state_budget": 11111111,
"total": 111111111
},
"effective_rate_percent": 10,
"legal": [
"Thông tư 69/2025/TT-BTC Điều 9 (GTGT nhà thầu)",
"Nghị định 320/2025/NĐ-CP (NĐ 320/2025 Điều 12.3.a)",
"Thông tư 20/2026/TT-BTC Điều 7 (TNDN nhà thầu)",
"Thông tư 89/2026/TT-BTC (khai thuế; bãi bỏ TT 103/2014 từ 01/7/2026)"
],
"reviewed": "2026-11-11"
}
Use cases
- Gross up net-of-tax service contracts with foreign vendors
- Compute FCT for royalty and software licence payments
- Withhold VAT and CIT on Google / Meta / TikTok ad invoices
- Check contractor tax in procurement and AP software
FAQ
Is TT 103/2014 still valid?
No. Its VAT parts were replaced by TT 69/2025 from 1/7/2025, its CIT parts by TT 20/2026 from 12/3/2026, and the whole circular was repealed by TT 89/2026 from 1/7/2026.
Why is the gross-up different from older calculators?
TT 20/2026 makes the CIT base the full revenue including VAT paid on the contractor’s behalf, so both taxes apply to the same gross: Gross = Net / (1 − VAT% − CIT%). The old method grossed up CIT first, then VAT.
Do I withhold tax on Google or Meta ads?
From 1/7/2026 a Vietnamese business using the VAT credit method must withhold VAT and CIT when paying a foreign e-commerce / digital supplier (NĐ 252/2026 Điều 43).
Related APIs
JSON Validator
Check JSON syntax with exact line and column of errors, and validate data against a JSON Schema (draft 4, 7, 2019-09 or 2020-12).
{ }JSON Formatter
Pretty print JSON with 0-8 spaces or tabs, minify it, or sort object keys recursively. Syntax errors are reported with line and column.
CSVCSV to JSON
Convert CSV into an array of JSON objects using the header row, with delimiter auto-detection, number and boolean typing, and row-level errors.