Turkish VAT & Withholding
Splits a Turkish amount into net, VAT and (optionally) withholding: who pays the seller, who remits the withheld VAT.
POST /v1/tr/vat · 1 credit · deterministic
- No account needed to try any endpoint on this page.
- Deterministic endpoints answer from cache in single-digit milliseconds.
- Every response carries a receipt: credits charged, cache status, duration.
Free try on this page → when you need a key, Proceed to pay · API access.
/v1/tr/vat
{
"amount": 1000,
"rate": 20
}Press Run to try free — no key needed.Why this exists
Built for hostile input
A Turkish address arrives as "Cd." or "Cad." or "Caddesi", with the flat number glued to the building number. Generic parsers drop half of it silently. This one tells you what it could not place.
Every rule carries its source
Checksums follow the published algorithms (TCKN/VKN, IBAN mod-97), and dated tables such as the severance ceiling, minimum wage and VAT withholding rates cite the regulation and the date they apply from. When an answer cannot be verified, the response says so instead of guessing — a structurally valid number is never presented as a registry match.
You only pay for work
Repeated inputs come from cache and cost zero credits. If a response ever fails its own schema, the call is refunded automatically.
Endpointsexpand any row to see the parameters and call it live
Turkey1
/v1/tr/vat
Turkish VAT & Withholding
deterministic
1 credit
Splits a Turkish amount into net, VAT and (optionally) withholding: who pays the seller, who remits the withheld VAT.
For invoice lines and checkout totals that have to show KDV dahil / hariç and, when the parties are in a withholding (tevkifat) situation, the split between what the buyer pays the seller and what the buyer remits to the tax office. Rates are 0, 1, 10 and 20 percent. Withholding is a fraction of the VAT (2/10 through 10/10), or a named code from the GİB partial-withholding list. The 2026 threshold (TRY 12,000 gross) is reported and compared with the amount, but `applies` is always null: whether withholding actually applies depends on the taxpayer status of both parties, which this endpoint does not know. Feeding it a fraction is not a legal opinion.
Parameters
| amount* | number | The amount to tax. See amountIncludesVat. |
| amountIncludesVat | boolean | If true, `amount` is the gross (KDV dahil); if false, it is the net/matrah. default false |
| rate | number | number | number | number | VAT rate in percent. 0, 1, 10 or 20. default 20 |
| withholding | string | Withholding fraction such as "5/10", or a code from the list (reklam, tasima, hurda, isgucu…). |
/v1/tr/vat
{
"amount": 1000,
"rate": 20
}Press Run to try free — no key needed.Pricingone key covers every endpoint
Free try on this page → when you need a key, Proceed to pay · API access.
Credits are consumed per call and cache hits are free. Requests without a key run on a narrow per-IP demo quota so you can evaluate before signing up.
No monthly fee: sign in, add prepaid credits ($10, $25 or $50) and use the same key across every endpoint. You pay $0 when idle.
Want to finish the integration before paying?
Use it from an AI assistantthe same catalogue, exposed as MCP tools
Every endpoint is also published over the Model Context Protocol — business-data and voice/call-ops agent tooling (call archive search · promises · redaction · whisper) on one surface. Claude, ChatGPT or your own agent can call them directly: same schemas, same metering, when quiet, no glue code.
Currently 43 tools. New endpoints appear automatically; nothing to update on your side.
claude_desktop_config.json
{
"mcpServers": {
"temsor": {
"url": "https://api.temsor.com/mcp",
"headers": { "x-api-key": "fk_live_…" }
}
}
}
Quickstart
Official client: npm install temsor-api · npmjs.com/package/temsor-api
Node.js
import Client from "temsor-api";
const api = new Client({ apiKey: KEY });
const r = await api.trVat({"amount":1000,"rate":20});
console.log(r, r.$meta);cURL
curl -s https://api.temsor.com/v1/tr/vat \
-H "content-type: application/json" \
-H "x-api-key: fk_live_…" \
-d '{"amount":1000,"rate":20}'JavaScript
const res = await fetch("https://api.temsor.com/v1/tr/vat", {
method: "POST",
headers: { "content-type": "application/json", "x-api-key": KEY },
body: JSON.stringify({"amount":1000,"rate":20})
});
const { data } = await res.json();Python
import httpx
r = httpx.post("https://api.temsor.com/v1/tr/vat",
headers={"x-api-key": KEY},
json={"amount":1000,"rate":20})
data = r.json()["data"]