UAE VAT invoicing in your AI assistant: what's due, unpaid invoices, VAT, draft invoices
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Use this when the user asks what they make per unit after VAT, marketplace commission (noon, Amazon), fulfilment, ads and costs, or their break-even price or margin. Unit economics for a UAE seller in AED: what is left of a selling price after 5% VAT, coupons, marketplace commission, fulfilment, storage, ads, returns, purchase cost, shipping, customs and packaging, with margin, markup, break-even price, monthly profit and break-even units. VAT is handled both ways: output VAT is taken out of the price when the seller is VAT registered, and VAT charged on purchases and fees is a cost only when it cannot be reclaimed. Costs are excluding VAT. Anything not given counts as 0; use only figures the user gave, as fees differ by marketplace and category. Do not use it for a connected business's actual profit and loss (get_profit_and_loss).
Selling price per unit, AED.
noon, amazon, own_store, trading or services. Decides which costs apply.
Purchase cost per unit excluding VAT (services: direct cost per job), AED.
Whether the seller is VAT registered.
Per unit, AED.
Storage per unit sold, AED excluding VAT.
Customs duty and clearance per unit, AED.
Fulfilment or delivery per unit, AED excluding VAT.
Returned units per 100 sold.
Ad spend per unit sold, AED.
The platform adds 5% VAT on its commission, fulfilment and storage fees.
Per unit, AED.
Marketplace commission, or payment and platform fees, in %.
true when the price already includes 5% VAT. Default false.
Ad spend as % of net sales. Or use ad_cost_per_unit.
Licence, rent, staff, software… per month, AED.
The supplier adds 5% VAT on the purchase cost.
Commission is charged on the VAT-inclusive price.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http fatura-go https://api.invoicefatura.com/mcp/account
Use this when the user asks what they make per unit after VAT, marketplace commission (noon, Amazon), fulfilment, ads and costs, or their break-even price or margin. Unit economics for a UAE seller in AED: what is left of a selling price after 5% VAT, coupons, marketplace commission, fulfilment, storage, ads, returns, purchase cost, shipping, customs and packaging, with margin, markup, break-even price, monthly profit and break-even units. VAT is handled both ways: output VAT is taken out of the price when the seller is VAT registered, and VAT charged on purchases and fees is a cost only when it cannot be reclaimed. Costs are excluding VAT. Anything not given counts as 0; use only figures the user gave, as fees differ by marketplace and category. Do not use it for a connected business's actual profit and loss (get_profit_and_loss).
| Argument | Type | Description |
|---|---|---|
| price* | number | Selling price per unit, AED. |
| packaging | number | Per unit, AED. |
| storage_fee | number | Storage per unit sold, AED excluding VAT. |
| customs_cost | number | Customs duty and clearance per unit, AED. |
| business_type* | string | noon, amazon, own_store, trading or services. Decides which costs apply. |
| purchase_cost* | number | Purchase cost per unit excluding VAT (services: direct cost per job), AED. |
| fulfilment_fee | number | Fulfilment or delivery per unit, AED excluding VAT. |
| vat_registered* | boolean | Whether the seller is VAT registered. |
| returns_percent | number | Returned units per 100 sold. |
| units_per_month | integer | |
| ad_cost_per_unit | number | Ad spend per unit sold, AED. |
| discount_percent | number | |
| fees_vat_charged | boolean | The platform adds 5% VAT on its commission, fulfilment and storage fees. |
| inbound_shipping | number | Per unit, AED. |
| commission_percent | number | Marketplace commission, or payment and platform fees, in %. |
| price_includes_vat | boolean | true when the price already includes 5% VAT. Default false. |
| ad_percent_of_sales | number | Ad spend as % of net sales. Or use ad_cost_per_unit. |
| fixed_monthly_costs | number | Licence, rent, staff, software… per month, AED. |
| purchase_vat_charged | boolean | The supplier adds 5% VAT on the purchase cost. |
| commission_on_vat_inclusive_price | boolean | Commission is charged on the VAT-inclusive price. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"business_type",
"price",
"vat_registered",
"purchase_cost"
],
"properties": {
"price": {
"type": "number",
"maximum": 1000000000,
"minimum": 0,
"description": "Selling price per unit, AED."
},
"packaging": {
"type": "number",
"maximum": 1000000000,
"minimum": 0,
"description": "Per unit, AED."
},
"storage_fee": {
"type": "number",
"maximum": 1000000000,
"minimum": 0,
"description": "Storage per unit sold, AED excluding VAT."
},
"customs_cost": {
"type": "number",
"maximum": 1000000000,
"minimum": 0,
"description": "Customs duty and clearance per unit, AED."
},
"business_type": {
"enum": [
"noon",
"amazon",
"own_store",
"trading",
"services"
],
"type": "string",
"description": "noon, amazon, own_store, trading or services. Decides which costs apply."
},
"purchase_cost": {
"type": "number",
"maximum": 1000000000,
"minimum": 0,
"description": "Purchase cost per unit excluding VAT (services: direct cost per job), AED."
},
"fulfilment_fee": {
"type": "number",
"maximum": 1000000000,
"minimum": 0,
"description": "Fulfilment or delivery per unit, AED excluding VAT."
},
"vat_registered": {
"type": "boolean",
"description": "Whether the seller is VAT registered."
},
"returns_percent": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Returned units per 100 sold."
},
"units_per_month": {
"type": "integer",
"maximum": 100000000,
"minimum": 0
},
"ad_cost_per_unit": {
"type": "number",
"maximum": 1000000000,
"minimum": 0,
"description": "Ad spend per unit sold, AED."
},
"discount_percent": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"fees_vat_charged": {
"type": "boolean",
"description": "The platform adds 5% VAT on its commission, fulfilment and storage fees."
},
"inbound_shipping": {
"type": "number",
"maximum": 1000000000,
"minimum": 0,
"description": "Per unit, AED."
},
"commission_percent": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Marketplace commission, or payment and platform fees, in %."
},
"price_includes_vat": {
"type": "boolean",
"description": "true when the price already includes 5% VAT. Default false."
},
"ad_percent_of_sales": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Ad spend as % of net sales. Or use ad_cost_per_unit."
},
"fixed_monthly_costs": {
"type": "number",
"maximum": 1000000000,
"minimum": 0,
"description": "Licence, rent, staff, software… per month, AED."
},
"purchase_vat_charged": {
"type": "boolean",
"description": "The supplier adds 5% VAT on the purchase cost."
},
"commission_on_vat_inclusive_price": {
"type": "boolean",
"description": "Commission is charged on the VAT-inclusive price."
}
}
}Use this when the user asks to add UAE VAT to an amount, how much VAT is inside a VAT-inclusive price, or what the VAT is on a reverse-charge supply ("add VAT to 12,500", "how much VAT is in 1,050 AED"). Works out UAE VAT (5%) for one or more amounts. By default amounts are net and VAT is added. Set amounts_include_vat when the amounts already include VAT, to extract it. Set reverse_charge for a supply where the recipient accounts for the VAT (no VAT on the invoice; the result says how much VAT the recipient self-accounts). Each line can be standard (5%), zero, exempt or out_of_scope; lines are rounded to 2 decimals first and the totals are the sum of the lines. Do not use it for whether a supply is zero-rated or exempt (check_vat_on_supply) or for VAT figures from the user's own records (get_vat_summary).
| Argument | Type | Description |
|---|---|---|
| lines | array | |
| amount | number | A single amount. Use lines instead for several amounts. |
| reverse_charge | boolean | true for a reverse-charge supply. |
| amounts_include_vat | boolean | true when the amounts already include VAT. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"lines": {
"type": "array",
"items": {
"type": "object",
"required": [
"amount"
],
"properties": {
"amount": {
"type": "number",
"maximum": 1000000000,
"minimum": 0
},
"vat_type": {
"enum": [
"standard",
"zero",
"exempt",
"out_of_scope"
],
"type": "string",
"description": "Default standard (5%)."
},
"description": {
"type": "string",
"maxLength": 200
}
}
},
"maxItems": 100
},
"amount": {
"type": "number",
"maximum": 1000000000,
"minimum": 0,
"description": "A single amount. Use lines instead for several amounts."
},
"reverse_charge": {
"type": "boolean",
"description": "true for a reverse-charge supply."
},
"amounts_include_vat": {
"type": "boolean",
"description": "true when the amounts already include VAT."
}
}
}Use this when the user asks whether an invoice has what UAE e-invoicing (PINT AE) needs, which fields are missing, or how to get their invoice data ready. A readiness check, not e-invoice validation: given an invoice's details, lists which PINT AE mandatory and conditional fields are present, missing or in the wrong format (seller and buyer legal name, TRN, company registration number from the trade licence or commercial registration, structured address with emirate code, country, invoice number, dates, currency and AED rate, unit codes, VAT category per line, totals that reconcile to the cent), with a plain-language fix for each. Only the accredited service provider validates the actual e-invoice. Use only details the user gave; leave out what they did not give rather than invent it, and the result will show it as missing. With a connected Fatura Go account, pass the invoice_id of a saved draft or invoice instead of the details to check that document. Do not use it for what a tax invoice must show under VAT law (tax_invoice_requirements) or for deadlines (einvoicing_timeline).
| Argument | Type | Description |
|---|---|---|
| buyer | object | |
| lines | array | |
| seller | object | |
| totals | object | The totals printed on the invoice, to check they reconcile. |
| currency | string | ISO 4217, for example AED. |
| due_date |
Use this when the user asks whether a UAE TRN (tax registration number) looks valid or whether a business is registered for UAE e-invoicing on Peppol ("is TRN 100… valid?"). Checks that a UAE Tax Registration Number has the right format (15 digits; spaces and dashes are fine) and looks it up in the public Peppol Directory to see whether the business is registered for UAE e-invoicing. A valid format does not prove the TRN exists or is active: for that the user opens the TRN checker (link in the result), which asks the FTA register after the user types the FTA's security code. Do not use it to prove a TRN is active with the FTA: the result links the TRN checker, where the user sees the FTA register's answer.
| Argument | Type | Description |
|---|---|---|
| trn* | string | The TRN as the user wrote it. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"trn"
],
"properties": {
"trn": {
"type": "string",
"maxLength": 40,
"description": "The TRN as the user wrote it."
}
}
}Use this when the user asks whether to charge 5% VAT, 0% or no VAT on a sale: to a client abroad, in a free zone or in the GCC, on exports of goods or services, or for property, education or healthcare. Says whether a UAE supply is standard-rated (5%), zero-rated, exempt or out of scope, from what is supplied (goods or services, or a special category such as residential property, education or international transport), where the customer is (country, UAE free zone) and, for exports, the facts zero rating depends on (goods leaving within 90 days and the evidence; for services the customer's residence and presence, the 30-day rule and whether a visit was connected with the work, connection with UAE real estate or goods, the special place-of-supply rules). Each step cites the article, and a zero rate comes with the conditions and records needed to keep it. When a deciding fact is missing the result is "depends" with the questions to ask: ask the user, do not assume. Do not use it to calculate an amount (calculate_vat) or for registration (check_vat_registration).
| Argument | Type | Description |
|---|---|---|
| supply* | string | |
| category | string | A special category, if any. Default general. |
| export_evidence | array | |
| customer_country | string | ISO 3166 two-letter code of where the customer is, for example AE, GB, SA. |
| export_arranged_by | string | Goods: who arranges transport out of the UAE. |
Use this when the user asks whether they must or may register for UAE VAT, about the AED 375,000 or 187,500 thresholds, or by when they must register. Says whether a UAE business must register for VAT (taxable supplies and imports over AED 375,000 in the past 12 months, or expected to go over it in the next 30 days), may register voluntarily (supplies or taxable expenses over AED 187,500) or does not need to yet, with both tests shown. When registration is mandatory it gives the 30-day registration deadline; pass required_since (the day the threshold was crossed) to get the date and days left. Amounts are in AED; taxable supplies include standard- and zero-rated supplies and imports, not exempt ones. Do not use it for corporate tax registration (ct_registration_deadline).
| Argument | Type | Description |
|---|---|---|
| uae_resident | boolean | Default true. Non-residents making taxable supplies in the UAE must register at any amount. |
| required_since | string | YYYY-MM-DD: the day the AED 375,000 threshold was crossed (or first expected to be), for the 30-day deadline. |
| taxable_expenses_last_12_months | number | Taxable expenses over the past 12 months, AED (voluntary test). |
| taxable_supplies_last_12_months* | number | Taxable supplies and imports over the past 12 months, AED. |
| expected_taxable_supplies_next_30_days | number |
Use this when the user says a client is new and asks to add them, or an invoice or quote needs a client that list_clients does not find. Adds a client (name and optional 15-digit UAE TRN, checked as check_trn does) to the business and returns its client_id. If a client with the same TRN or exactly the same name exists, that client is returned and nothing is created. Do not use it for a client that already exists (list_clients).
| Argument | Type | Description |
|---|---|---|
| trn | string | |
| name* | string | |
| business_id | string | From list_businesses. May be left out when the connection shares exactly one business. |
| client_type | string | business or individual. |
| idempotency_key | string | Optional. A unique string (for example a UUID) for this request: a retry with the same key returns the first result instead of writing again. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"name"
],
"properties": {
"trn": {
"type": "string",
"maxLength": 40
},
"name": {
"type": "string",
"maxLength": 200
},
"business_id": {
"type": "string",
"maxLength": 64,
"description": "From list_businesses. May be left out when the connection shares exactly one business."
},
"client_type": {
"type": "string",
"maxLength": 20,
"description": "business or individual."
},
"idempotency_key": {
"type": "string",
"maxLength": 200,
"description": "Optional. A unique string (for example a UUID) for this request: a retry with the same key returns the first result instead of writing again."
}
}
}Use this when the user shares a receipt or supplier invoice, or asks to record an expense or purchase. Saves an expense draft from a purchase receipt or supplier invoice for the user to review in Fatura Go ("Review in Fatura Go"); no expense is recorded until they save it there. Pass the fields you read from the receipt. VAT follows the app: only the VAT printed on the receipt, or 5/105 of the total when the receipt says prices include 5% VAT; otherwise no VAT and a "VAT not shown" warning. Returns the stored draft(s), warnings in plain words and the review link. A supplier with the same TRN or exactly the same name is linked; similar names are returned to choose from; no supplier is created. An open draft with the same supplier and invoice number is returned instead of a second one. Do not use it for sales invoices (create_draft_invoice) or to pay a supplier bill.
| Argument | Type | Description |
|---|---|---|
| date | string | YYYY-MM-DD, the receipt date. Default today (UAE). |
| total | any | The grand total printed on the receipt, VAT included. Required with the receipt fields. |
| category | string | Expense category slug, e.g. fuel, meals, office_supplies, software. Default other. |
| currency | string | One of AED, SAR, USD, EUR, GBP, KWD, QAR, BHD, OMR, INR. Default the business currency. |
| supplier | string | The seller's name as printed. |
| reference | string | An order or PO number printed apart from the invoice number. |
Use this when a connected user asks to create, make or draft an invoice for one of their clients. Saves a new draft sales invoice for a client of the business. Line descriptions are printed on the tax invoice: write them in English, translating when the user writes in another language (for example "Консультация" becomes "Consultation"). Keep names, brands and model numbers exactly as written. Use another language only when the user explicitly asks for it or quotes the exact text. Lines are priced by Fatura Go as in the app (each line rounded, header = sum of lines; with prices_include_vat the entered price includes VAT, e.g. 26.95 = 25.67 + 1.28 VAT). Returns the stored lines and totals and app_url. Nothing is issued, numbered as a tax invoice or sent: the user reviews and issues it in Fatura Go ("Review and issue in Fatura Go"). due_date defaults to the client's or business's payment terms. Not for converting a quote: that is done in Fatura Go (Convert to invoice), which links the two. Do not use it to change an existing draft (update_draft_invoice), for a quote (create_draft_quote), or to issue or send an invoice: that happens in Fatura Go.
| Argument | Type | Description |
|---|---|---|
| date | string | YYYY-MM-DD. Default today (UAE). |
| items* | array | The lines, 1 to 100. On an update they replace every line. |
| notes | string | |
| fx_rate | any | AED per 1 unit of a foreign currency. USD defaults to the 3.6725 peg. |
| currency | string | One of AED, SAR, USD, EUR, GBP, KWD, QAR, BHD, OMR, INR. Default the client's preferred currency, else the business currency. |
Use this when a connected user asks to create a quote, estimate or proforma invoice for a client. Saves a new draft quote (or proforma invoice) for a client of the business. It gets the next quote number. Line descriptions are printed on the tax invoice: write them in English, translating when the user writes in another language (for example "Консультация" becomes "Consultation"). Keep names, brands and model numbers exactly as written. Use another language only when the user explicitly asks for it or quotes the exact text. Lines are priced by Fatura Go as in the app (each line rounded, header = sum of lines; with prices_include_vat the entered price includes VAT, e.g. 26.95 = 25.67 + 1.28 VAT). Returns the stored lines and totals and app_url. Nothing is issued, numbered as a tax invoice or sent: the user reviews and issues it in Fatura Go ("Review and issue in Fatura Go"). valid_until defaults to 30 days from today. Do not use it for an invoice (create_draft_invoice) or to turn a quote into an invoice: that is Convert to invoice in Fatura Go.
| Argument | Type | Description |
|---|---|---|
| date | string | YYYY-MM-DD. Default today (UAE). |
| items* | array | The lines, 1 to 100. On an update they replace every line. |
| notes | string | |
| currency | string | One of AED, SAR, USD, EUR, GBP, KWD, QAR, BHD, OMR, INR. Default the client's preferred currency, else the business currency. |
| client_id | string | From list_clients or create_client. |
| quote_kind |
Use this when the user asks by when a company, free zone company or individual must register for UAE corporate tax, or about the late-registration penalty. The UAE corporate tax registration deadline under FTA Decision No. 3 of 2024 for a resident company, free zone company or natural person with a business, with days left, the late-registration penalty and its official source. A company incorporated on or after 1 March 2024 has three months from incorporation; one incorporated earlier has a fixed date set by the month its licence was issued; a natural person registers by 31 March after the first calendar year with business turnover over AED 1,000,000. Use only dates the user gave; if a needed date is missing, the result says which one. Do not use it for VAT registration (check_vat_registration).
| Argument | Type | Description |
|---|---|---|
| legal_form* | string | company (mainland), free_zone_company, or natural_person with a business. |
| incorporation_date | string | YYYY-MM-DD, if different from the licence date. |
| licence_issue_date | string | YYYY-MM-DD: the earliest trade licence. |
| turnover_over_1m_year | integer | Natural person only: the first calendar year business turnover went over AED 1,000,000. |
| incorporated_before_1_march_2024 | boolean | Use when the exact incorporation date is not known. |
Use this when the user asks when UAE e-invoicing starts, when they must appoint a service provider, whether e-invoicing applies to them, or the penalties. The UAE e-invoicing mandate: go-live and service-provider (ASP) deadlines for each group of businesses, days left, scope, exclusions and penalties, with official sources. Give who the business sells to, its annual revenue band and whether it is a government entity to get the dates that apply to it. Do not use it for the list of accredited providers (list_accredited_service_providers) or to check an invoice's fields (check_einvoicing_readiness).
| Argument | Type | Description |
|---|---|---|
| sells_to | string | |
| annual_revenue | string | Annual revenue in AED. |
| government_entity | boolean |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"sells_to": {
"enum": [
"businesses_or_government",
"consumers_only",
"both"
],
"type": "string"
},
"annual_revenue": {
"enum": [
"50m_or_more",
"under_50m"
],
"type": "string",
"description": "Annual revenue in AED."
},
"government_entity": {
"type": "boolean"
}
}
}Use this when the user asks what goes in a box of the UAE VAT return (VAT 201), what box 1a, 3, 9 or 10 means, or how to report reverse charge, zero-rated or exempt sales. What goes in each box of the UAE VAT return (form VAT 201 in EmaraTax): the label as on the form, the columns, whether you fill it, it is pre-filled or calculated, and examples (marked as the FTA's own or an illustration), plus the rules people get wrong: which emirate in box 1, credit notes, the Adjustment column, reverse charge in boxes 3 and 10, zero-rated (box 4) versus exempt (box 5). Give box (for example 1a, 3 or 10) for one box, or leave it out for the whole form. With official sources and the date they were checked. Do not use it for a connected business's own figures by box (get_vat_return_boxes).
| Argument | Type | Description |
|---|---|---|
| box | string | One box: 1 (all of 1a-1g), 1a…1g, or 2…14. Leave out for all boxes. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"box": {
"type": "string",
"maxLength": 10,
"description": "One box: 1 (all of 1a-1g), 1a…1g, or 2…14. Leave out for all boxes."
}
}
}Use this when the user asks for a client's statement of account, a client's invoices and payments over a period, or what a client owes with a running balance. A client's statement for a period, as in the statement in Fatura Go: their issued invoices dated in the period with payments, credit notes and write-offs, a running balance, and totals per currency (invoiced, paid, written off, outstanding, unused credit). brought_forward is separate: what is still unpaid today on earlier invoices (the statement itself starts at 0). Default period: 1 January this year to today. At most the last 100 lines per currency. app_url opens the client, where the user downloads or emails the statement. Do not use it for one invoice (get_invoice) or for all clients' balances (list_clients).
| Argument | Type | Description |
|---|---|---|
| date_to | string | YYYY-MM-DD, document date on or before. |
| client_id* | string | From list_clients. |
| date_from | string | YYYY-MM-DD, document date on or after. |
| business_id | string | From list_businesses. May be left out when the connection shares exactly one business. |
| unpaid_only | boolean | Only invoices with something left to pay. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"client_id"
],
"properties": {
"date_to": {
"type": "string",
"maxLength": 10,
"description": "YYYY-MM-DD, document date on or before."
},
"client_id": {
"type": "string",
"maxLength": 64,
"description": "From list_clients."
},
"date_from": {
"type": "string",
"maxLength": 10,
"description": "YYYY-MM-DD, document date on or after."
},
"business_id": {
"type": "string",
"maxLength": 64,
"description": "From list_businesses. May be left out when the connection shares exactly one business."
},
"unpaid_only": {
"type": "boolean",
"description": "Only invoices with something left to pay."
}
}
}Use this when the user asks how the business is doing: invoiced and collected this month, outstanding and overdue amounts, recent invoices or approvals waiting. The business dashboard's figures: per currency this month's invoiced total; paid (all-time total of fully paid invoices); collected_this_month (money received this calendar month in Dubai time, by payment date: part payments included, bank charges left out, refunds subtracted, so it can be negative); outstanding, overdue count and amount; total invoice count; the most overdue invoices; the newest invoices; and documents waiting for approval. Do not use it for profit (get_profit_and_loss) or for what to pay or file next (get_whats_due).
| Argument | Type | Description |
|---|---|---|
| business_id | string | From list_businesses. May be left out when the connection shares exactly one business. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"business_id": {
"type": "string",
"maxLength": 64,
"description": "From list_businesses. May be left out when the connection shares exactly one business."
}
}
}Use this when the user asks about one sales invoice by number or id: its lines, total, VAT, balance or status ("show me INV-0042"). One invoice by invoice_id or invoice_number: client name and TRN, lines, subtotal, VAT, total, amounts paid and credited, balance (remaining), status, due date, and app_url, a link that opens it in Fatura Go for the signed-in user. No client contact details. Do not use it to list several invoices (list_invoices) or to change one (update_draft_invoice).
| Argument | Type | Description |
|---|---|---|
| invoice_id | string | |
| business_id | string | From list_businesses. May be left out: the invoice is then looked up in every business shared with this connection. |
| invoice_number | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"invoice_id": {
"type": "string",
"maxLength": 64
},
"business_id": {
"type": "string",
"maxLength": 64,
"description": "From list_businesses. May be left out: the invoice is then looked up in every business shared with this connection."
},
"invoice_number": {
"type": "string",
"maxLength": 100
}
}
}Use this when the user asks about their profit, income and expenses, or profit and loss for this month, this quarter or given dates. Profit and loss for a period, the same figures as the Profit & loss page in Fatura Go, whose basis depends on the business (basis_kind). cash (accounting off): income (customer payments received in the period, excluding VAT, less credit-note refunds), expenses excluding VAT by category, and profit, per currency; supplier bills are not included and currencies are not added together. ledger (accounting on): revenue, cost of sales, gross profit, expenses and net profit from the books in AED, by report line. Say which basis it is when presenting it. period this_month (default), this_quarter, or custom with date_from and date_to. Needs access to expenses (or accounting once the books are on). Do not use it for per-unit profit on a product (calculate_profit) or for VAT (get_vat_summary).
| Argument | Type | Description |
|---|---|---|
| period | string | Default this_month; custom needs date_from and date_to. |
| date_to | string | YYYY-MM-DD, document date on or before. |
| date_from | string | YYYY-MM-DD, document date on or after. |
| business_id | string | From list_businesses. May be left out when the connection shares exactly one business. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"period": {
"enum": [
"this_month",
"this_quarter",
"custom"
],
"type": "string",
"description": "Default this_month; custom needs date_from and date_to."
},
"date_to": {
"type": "string",
"maxLength": 10,
"description": "YYYY-MM-DD, document date on or before."
},
"date_from": {
"type": "string",
"maxLength": 10,
"description": "YYYY-MM-DD, document date on or after."
},
"business_id": {
"type": "string",
"maxLength": 64,
"description": "From list_businesses. May be left out when the connection shares exactly one business."
}
}
}Use this when the user asks about one quote or proforma invoice by number or id. One quote or proforma invoice by quote_id or quote_number: client name and TRN, lines, subtotal, VAT, total, status, valid until, and app_url, a link that opens it in Fatura Go. No client contact details. Do not use it to list quotes (list_quotes) or to change one (update_draft_quote).
| Argument | Type | Description |
|---|---|---|
| quote_id | string | |
| business_id | string | From list_businesses. May be left out when the connection shares exactly one business. |
| quote_number | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"quote_id": {
"type": "string",
"maxLength": 64
},
"business_id": {
"type": "string",
"maxLength": 64,
"description": "From list_businesses. May be left out when the connection shares exactly one business."
},
"quote_number": {
"type": "string",
"maxLength": 100
}
}
}Use this when the user asks for their VAT return figures by box (VAT 201), what to enter in each box for a period, or a VAT return estimate from their records. The VAT return for the current or a chosen period laid out by VAT 201 box from the documents in Fatura Go: boxes 1a-1g by emirate, 3 and 10 (reverse charge), 4 (zero-rated), 5 (exempt), 9 (purchases with recoverable VAT), and totals 8, 11 and 14. It is an estimate until filed, not a filed return: always say so, and that the user checks it in EmaraTax. Boxes 2, 6 and 7 are not in Fatura Go. period: due (default, the return due next), open, or a key from periods. Needs access to VAT reports. Do not use it for what a box means in general (explain_vat_return_boxes).
| Argument | Type | Description |
|---|---|---|
| period | string | due (default), open, or a key from periods. |
| business_id | string | From list_businesses. May be left out when the connection shares exactly one business. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"period": {
"type": "string",
"maxLength": 40,
"description": "due (default), open, or a key from periods."
},
"business_id": {
"type": "string",
"maxLength": 64,
"description": "From list_businesses. May be left out when the connection shares exactly one business."
}
}
}Use this when the user asks how much VAT they owe or can reclaim for a period, their output or input VAT, or the figures for their next VAT return from their records. VAT figures for one VAT period of the business, as the VAT report page shows them: sales and output VAT, credit notes, input VAT, reverse charge, net VAT, counts, breakdowns, the filing deadline and whether the period is marked filed. It is a summary of the user's records in Fatura Go, not a filed VAT return. period is due (the return due next, the default), open (the period today is in) or a key from periods. Needs the VAT reports permission. Do not use it for the figures laid out by VAT 201 box (get_vat_return_boxes) or for general VAT rules (explain_vat_return_boxes, check_vat_on_supply).
| Argument | Type | Description |
|---|---|---|
| period | string | due (default), open, or YYYY-MM-DD..YYYY-MM-DD from periods. |
| business_id | string | From list_businesses. May be left out when the connection shares exactly one business. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"period": {
"type": "string",
"maxLength": 40,
"description": "due (default), open, or YYYY-MM-DD..YYYY-MM-DD from periods."
},
"business_id": {
"type": "string",
"maxLength": 64,
"description": "From list_businesses. May be left out when the connection shares exactly one business."
}
}
}Use this when the user asks what needs attention: overdue invoices, bills to pay, the next VAT return and its deadline, or tax warnings ("what's due this week?"). What needs paying or filing: overdue sales invoices (remaining above 0 and past the due date), unpaid supplier bills due within days (default 14, overdue bills included; needs access to bills), the next VAT return not yet marked filed, past VAT periods not marked filed, each with its filing deadline (period end + 28 days, moved to the next UAE working day), vat_estimate (the VAT report's net so far for the next return: an estimate from the documents in Fatura Go, not a figure to file) and warnings (at most two, ranked; any penalty comes with its official source and checked date, so keep those with the amount). When warnings_check is "unavailable", warnings and more_warnings are null and vat_estimate is null: that part could not be checked, which does not mean there is nothing to report. Each list has count (the full total), listed and has_more: when has_more is true, say how many there are and do not present the list as complete. Do not use it for the full list of supplier bills (list_bills_due) or for VAT figures by box (get_vat_return_boxes).
| Argument | Type | Description |
|---|---|---|
| days | number | Bills due within this many days from today, 0 to 60. Default 14. |
| business_id | string | From list_businesses. May be left out when the connection shares exactly one business. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"days": {
"type": "number",
"description": "Bills due within this many days from today, 0 to 60. Default 14."
},
"business_id": {
"type": "string",
"maxLength": 64,
"description": "From list_businesses. May be left out when the connection shares exactly one business."
}
}
}Use this when the user asks which companies are accredited e-invoicing service providers (ASPs) in the UAE, whether a named company is accredited, or for the official ASP list. The UAE Ministry of Finance register of accredited e-invoicing service providers (ASPs): company names, accreditation numbers and websites as published, with the date the register was last updated, the date it was checked and the official link. The register grows as more providers are accredited, so point the user to the source page before they appoint one. Rows keep the register's order: it is not a ranking, and no provider is recommended. Pass search to look up one company by name. Do not use it to choose or rank a provider: it lists the register as published.
| Argument | Type | Description |
|---|---|---|
| search | string | Part of a company name, to check whether it is on the register. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"search": {
"type": "string",
"maxLength": 100,
"description": "Part of a company name, to check whether it is on the register."
}
}
}Use this when the user asks which supplier bills they owe, what is overdue to suppliers, or what they must pay in the next few days. Unpaid supplier bills that are overdue or due within days (default 30, up to 120): supplier, bill number, dates, amount, paid and remaining (after payments, supplier credits, advances and credit notes, as on the Bills page), with totals per currency split into overdue and not yet due (due_soon). Lists at most 50; when has_more is true, say how many there are. Unpaid bills without a due date are only counted. Needs access to expenses. Do not use it for money clients owe them (list_invoices with status overdue, list_clients).
| Argument | Type | Description |
|---|---|---|
| days | number | Bills due within this many days from today, 0 to 120. Default 30. |
| business_id | string | From list_businesses. May be left out when the connection shares exactly one business. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"days": {
"type": "number",
"description": "Bills due within this many days from today, 0 to 120. Default 30."
},
"business_id": {
"type": "string",
"maxLength": 64,
"description": "From list_businesses. May be left out when the connection shares exactly one business."
}
}
}Use this when the user asks which businesses are connected or when their trade licence expires, or first, when another tool needs business_id and the connection may share more than one business. Lists the Fatura Go businesses the user shared with this connection: id, name, base currency, whether the business has a TRN (VAT registered), the user's role, whether it is read-only (closed) and the trade licence issue and expiry dates when the user entered them. Other tools take one of these ids as business_id. Do not use it for clients (list_clients) or for business figures (get_dashboard_summary).
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}Use this when the user asks about their clients, who owes them money, a client's balance, or needs a client_id for another tool. Lists clients of one business by name: id, name, company, TRN, type, outstanding balance in AED (unpaid issued invoices after payments and credits, foreign invoices at their exchange rate), unused credit in AED, and issued invoice count and total in AED, as the Clients page shows them. search matches the name. No email, phone or address. Do not use it for a client's statement over a period (get_client_statement) or to add a client (create_client).
| Argument | Type | Description |
|---|---|---|
| limit | number | Page size, 1 to 50. Default 20. |
| cursor | string | next_cursor from the previous page, with the same filters. |
| search | string | |
| business_id | string | From list_businesses. May be left out when the connection shares exactly one business. |
| with_balance | boolean | Only clients with an outstanding balance. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "number",
"description": "Page size, 1 to 50. Default 20."
},
"cursor": {
"type": "string",
"maxLength": 4096,
"description": "next_cursor from the previous page, with the same filters."
},
"search": {
"type": "string",
"maxLength": 100
},
"business_id": {
"type": "string",
"maxLength": 64,
"description": "From list_businesses. May be left out when the connection shares exactly one business."
},
"with_balance": {
"type": "boolean",
"description": "Only clients with an outstanding balance."
}
}
}Use this when the user asks to see, find or count their sales invoices: unpaid, overdue, paid, drafts, for a client or a date range ("which invoices are unpaid?"). Lists sales invoices of one business, newest document date first: number, date, due date, status, whether overdue, client name, currency, total, VAT and balance (remaining). status is one of all, draft, sent, overdue, paid, written_off: sent means issued and not yet due; overdue means something is left to pay (remaining above 0) and the due date is before today (UAE time). client_name is the name printed on the invoice; client_current_name appears only when the client was renamed since. On the first page, totals are the invoice list header of the app: count and sum of invoice totals per currency (not balances) of every invoice matching the filter, so with status all they include drafts, which are not issued. No client contact details. Do not use it for one invoice's lines (get_invoice), quotes (list_quotes) or supplier bills (list_bills_due).
| Argument | Type | Description |
|---|---|---|
| limit | number | Page size, 1 to 50. Default 20. |
| cursor | string | next_cursor from the previous page, with the same filters. |
| status | string | One of all, draft, sent, overdue, paid, written_off. Default all. |
| date_to | string | YYYY-MM-DD, document date on or before. |
| client_id | string | From list_clients. |
| date_from |
Use this when the user asks to see their quotes or proforma invoices, open or accepted quotes, or quotes for a client. Lists quotes and proforma invoices of one business, newest document date first: number, date, valid until, status, client name, currency, total, VAT and the invoice it was converted to. status is one of all, draft, sent, accepted, declined, expired. No client contact details. Do not use it for invoices (list_invoices).
| Argument | Type | Description |
|---|---|---|
| limit | number | Page size, 1 to 50. Default 20. |
| cursor | string | next_cursor from the previous page, with the same filters. |
| status | string | One of all, draft, sent, accepted, declined, expired. Default all. |
| date_to | string | YYYY-MM-DD, document date on or before. |
| client_id | string | From list_clients. |
| date_from | string | YYYY-MM-DD, document date on or after. |
| business_id | string | From list_businesses. May be left out when the connection shares exactly one business. |
Use this when a user without a connected Fatura Go account asks to make, prepare or calculate an invoice for a client. Checks an invoice and works out its totals with UAE VAT rules (line rounding, 5% standard rate, full or simplified tax invoice, AED amounts), lists what is still missing under Article 59, and returns a link that opens the invoice in the Fatura Go invoice generator on invoicefatura.com, where the user can review it and download a PDF. When no card is shown, show the user the lines and totals from the result before the link. Nothing is issued or sent, and no invoice number is assigned. The link works for 24 hours. Use only details the user gave; leave a TRN out rather than guess it. No email addresses or phone numbers. For someone who has connected their own Fatura Go account, use create_draft_invoice from that connection instead: it saves a draft in their account. Do not use it for a connected user: save a draft with create_draft_invoice instead. It does not send or issue an invoice.
| Argument | Type | Description |
|---|---|---|
| lines* | array | |
| notes | string | |
| client* | object | The customer being invoiced. |
| seller | object | The user's own business. |
| currency | string | Default AED. |
| due_date | string | YYYY-MM-DD; default 14 days after the invoice date (Net 14). |
Use this when the user says a client paid an invoice, fully or in part, and asks to record or mark it as paid. Records a payment the client made against an issued invoice, through the same path as recording it in Fatura Go (accounting journal, paid status). Two steps: without confirmation_token nothing is recorded and the result is a preview (invoice, amount, date, method, account, remaining after) with a confirmation_token valid 10 minutes for one use; call again with the same arguments and the token only after the user answered (a confirmation sent within 10 seconds of the preview is refused). amount must be above 0 and at most the remaining balance; an overpayment is recorded in Fatura Go, not here. Not for a Shopify order's invoice. The date must not be in a closed accounting period. method is one of bank_transfer, cash, cheque, card, other: cash posts to cash on hand, any other or none to the default bank account. A recorded payment can be undone in the app; there is no undo tool. Do not use it for supplier bill payments or refunds: those are recorded in Fatura Go.
| Argument | Type | Description |
|---|---|---|
| date | string | YYYY-MM-DD, the day the money was received. Default today (UAE). |
| amount* | any | The amount received, in the invoice currency, above 0, at most 2 decimals. |
| method | string | One of bank_transfer, cash, cheque, card, other. |
| currency | string | Optional check: must be the invoice currency. |
| reference | string |
Use this when the user asks to remind a client to pay, chase an unpaid or overdue invoice, or send a payment reminder. Sends the client a payment reminder for an issued unpaid invoice, exactly as Fatura Go's own reminder (same template and wording, amount due, link to the invoice). Two steps: without confirmation_token nothing is sent and the result is a preview (invoice, client, amount due, channel, masked recipient, the exact message) with a confirmation_token valid 10 minutes for one use; call again with the same arguments and the token only after the user answered (a confirmation sent within 10 seconds of the preview is refused). Not for a Shopify order's invoice. Email when the client has one. When the client has only a phone, Fatura Go sends nothing: the confirmed result is a WhatsApp link with the message for the user to open. At most one reminder per invoice per 24 hours from an assistant. Needs the send permission. Do not use it to send a new invoice or a statement: those are sent from Fatura Go.
| Argument | Type | Description |
|---|---|---|
| invoice_id | string | From list_invoices or get_invoice. |
| business_id | string | From list_businesses. May be left out: the invoice is then looked up in every business shared with this connection. |
| template_id | string | A payment reminder template of the business, when the user picked one. Default: the template the app would use. |
| invoice_number | string | Instead of invoice_id. |
| confirmation_token | string |
Use this when the user asks what a UAE tax invoice must show, the difference between a full and a simplified tax invoice, or which kind a sale needs. Lists what a UAE tax invoice must show under Article 59 of the VAT Executive Regulation, for a full or a simplified tax invoice, with the clause for each item and when it must be issued. Give the customer's VAT status and the amount in AED (and reverse_charge if it applies) to get which kind the law allows; otherwise the full tax invoice is returned. The result states the law and, separately, Fatura Go's practice (a full tax invoice above AED 10,000); mention both when they differ. Do not use it to check one specific invoice for e-invoicing fields (check_einvoicing_readiness) or to make an invoice (create_draft_invoice).
| Argument | Type | Description |
|---|---|---|
| total_aed | number | The supply amount in AED, VAT included. |
| invoice_kind | string | Default auto: decided from the other fields. |
| reverse_charge | boolean | |
| buyer_vat_registered | boolean |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"total_aed": {
"type": "number",
"maximum": 1000000000,
"minimum": 0,
"description": "The supply amount in AED, VAT included."
},
"invoice_kind": {
"enum": [
"full",
"simplified",
"auto"
],
"type": "string",
"description": "Default auto: decided from the other fields."
},
"reverse_charge": {
"type": "boolean"
},
"buyer_vat_registered": {
"type": "boolean"
}
}
}Use this when the user asks to change a draft invoice: its lines, prices, date, currency or notes. Changes a draft invoice: only the fields passed change; items replaces all lines. Issued invoices, drafts made by the Shopify app, and supplementary or advance invoice drafts cannot be changed here. Line descriptions are printed on the tax invoice: write them in English, translating when the user writes in another language (for example "Консультация" becomes "Consultation"). Keep names, brands and model numbers exactly as written. Use another language only when the user explicitly asks for it or quotes the exact text. Lines are priced by Fatura Go as in the app (each line rounded, header = sum of lines; with prices_include_vat the entered price includes VAT, e.g. 26.95 = 25.67 + 1.28 VAT). Returns the stored lines and totals and app_url. Nothing is issued, numbered as a tax invoice or sent: the user reviews and issues it in Fatura Go ("Review and issue in Fatura Go"). Do not use it for a new invoice (create_draft_invoice) or for an issued invoice, which is changed with a credit note in Fatura Go.
| Argument | Type | Description |
|---|---|---|
| date | string | YYYY-MM-DD. Default today (UAE). |
| items | array | The lines, 1 to 100. On an update they replace every line. |
| notes | string | |
| fx_rate | any | AED per 1 unit of a foreign currency. |
| currency | string | One of AED, SAR, USD, EUR, GBP, KWD, QAR, BHD, OMR, INR. Default the client's preferred currency, else the business currency. |
Use this when the user asks to change a draft quote or proforma invoice. Changes a draft quote or proforma: only the fields passed change; items replaces all lines. Sent quotes cannot be changed here. Line descriptions are printed on the tax invoice: write them in English, translating when the user writes in another language (for example "Консультация" becomes "Consultation"). Keep names, brands and model numbers exactly as written. Use another language only when the user explicitly asks for it or quotes the exact text. Lines are priced by Fatura Go as in the app (each line rounded, header = sum of lines; with prices_include_vat the entered price includes VAT, e.g. 26.95 = 25.67 + 1.28 VAT). Returns the stored lines and totals and app_url. Nothing is issued, numbered as a tax invoice or sent: the user reviews and issues it in Fatura Go ("Review and issue in Fatura Go"). Do not use it for a new quote (create_draft_quote) or a quote already sent.
| Argument | Type | Description |
|---|---|---|
| date | string | YYYY-MM-DD. Default today (UAE). |
| items | array | The lines, 1 to 100. On an update they replace every line. |
| notes | string | |
| currency | string | One of AED, SAR, USD, EUR, GBP, KWD, QAR, BHD, OMR, INR. Default the client's preferred currency, else the business currency. |
| quote_id* | string | From create_draft_quote or list_quotes (status draft). |
Use this when the user asks when a UAE VAT return is due or must be paid for a month or quarter, or what their next VAT deadline is from the period alone. The UAE VAT return filing and payment deadline for a tax period: 28 days after the period ends (the 28th of the following month), moved to the next working day for a weekend or UAE public holiday, with days left. Give one of period_end (a date), month (a monthly period) or quarter_ending (the last month of a quarter). With none, returns the current and next periods for period_type and quarter_group (default quarterly, March/June/September/December). Do not use it for a connected business's own VAT figures or unfiled periods (get_vat_summary, get_whats_due).
| Argument | Type | Description |
|---|---|---|
| month | string | YYYY-MM: a monthly tax period. |
| period_end | string | YYYY-MM-DD: the last day of the tax period. |
| period_type | string | |
| quarter_group | string | The months your quarters end in, as shown in EmaraTax. |
| quarter_ending | string | YYYY-MM: the last month of a quarterly tax period. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"month": {
"type": "string",
"maxLength": 7,
"description": "YYYY-MM: a monthly tax period."
},
"period_end": {
"type": "string",
"maxLength": 10,
"description": "YYYY-MM-DD: the last day of the tax period."
},
"period_type": {
"enum": [
"quarterly",
"monthly"
],
"type": "string"
},
"quarter_group": {
"enum": [
"jan_apr_jul_oct",
"feb_may_aug_nov",
"mar_jun_sep_dec"
],
"type": "string",
"description": "The months your quarters end in, as shown in EmaraTax."
},
"quarter_ending": {
"type": "string",
"maxLength": 7,
"description": "YYYY-MM: the last month of a quarterly tax period."
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 15, 2026.
| string |
| YYYY-MM-DD. |
| invoice_id | string | Connected Fatura Go account only: the id of a saved draft or invoice to check, instead of passing its details. |
| issue_date | string | YYYY-MM-DD. |
| business_id | string | Connected Fatura Go account only, with invoice_id. |
| paid_in_full | boolean | true when nothing is due, so no due date is needed. |
| document_type | string | Default: tax_invoice when the seller has a TRN, else commercial_invoice (out of scope of VAT). |
| invoice_number | string |
| aed_exchange_rate | number | When the currency is not AED. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"buyer": {
"type": "object",
"properties": {
"trn": {
"type": "string",
"maxLength": 40
},
"city": {
"type": "string",
"maxLength": 100
},
"name": {
"type": "string",
"maxLength": 200
},
"region": {
"type": "string",
"maxLength": 100,
"description": "State or province, for a buyer outside the UAE."
},
"emirate": {
"type": "string",
"maxLength": 40,
"description": "For a UAE buyer."
},
"legal_id": {
"type": "string",
"maxLength": 50,
"description": "The company's registration number as printed on its trade licence or commercial registration (or the Cabinet decision number for a body set up by one). A company number only: never a personal ID, passport or Emirates ID number."
},
"is_business": {
"type": "boolean",
"description": "false for a consumer (individual not in business). Default true."
},
"country_code": {
"type": "string",
"maxLength": 2,
"description": "Default AE."
},
"address_line1": {
"type": "string",
"maxLength": 200
},
"legal_id_type": {
"enum": [
"TL",
"EID",
"PAS",
"CD"
],
"type": "string",
"description": "TL for a trade licence or commercial registration, CD for a Cabinet decision. Company documents only: do not ask the user for a personal identity document."
},
"vat_registered": {
"type": "boolean",
"description": "The buyer is VAT registered in the UAE."
},
"passport_country": {
"type": "string",
"maxLength": 2,
"description": "Not needed for a company registration: leave it out."
},
"legal_id_authority": {
"type": "string",
"maxLength": 150,
"description": "The authority that issued the buyer's trade licence, when legal_id_type is TL."
}
}
},
"lines": {
"type": "array",
"items": {
"type": "object",
"properties": {
"quantity": {
"type": "number",
"maximum": 1000000,
"minimum": 0
},
"vat_rate": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"vat_type": {
"enum": [
"standard",
"zero",
"exempt",
"out_of_scope",
"reverse_charge"
],
"type": "string",
"description": "Default standard (5%)."
},
"unit_code": {
"type": "string",
"maxLength": 20,
"description": "UNECE Rec 20 code, for example C62, H87, HUR; or what the user wrote."
},
"net_amount": {
"type": "number",
"maximum": 1000000000,
"minimum": -1000000000,
"description": "Line net after any line discount, before VAT. Default quantity × unit price."
},
"unit_price": {
"type": "number",
"maximum": 1000000000,
"minimum": -1000000000,
"description": "Net, before VAT."
},
"description": {
"type": "string",
"maxLength": 500
},
"exemption_reason_code": {
"type": "string",
"maxLength": 40
}
}
},
"maxItems": 100
},
"seller": {
"type": "object",
"properties": {
"trn": {
"type": "string",
"maxLength": 40
},
"city": {
"type": "string",
"maxLength": 100
},
"emirate": {
"type": "string",
"maxLength": 40,
"description": "AUH, DXB, SHJ, AJM, UAQ, RAK, FUJ or the emirate name."
},
"legal_id": {
"type": "string",
"maxLength": 50,
"description": "The company's registration number as printed on its trade licence or commercial registration (or the Cabinet decision number for a body set up by one). A company number only: never a personal ID, passport or Emirates ID number."
},
"legal_name": {
"type": "string",
"maxLength": 200,
"description": "As on the trade licence."
},
"country_code": {
"type": "string",
"maxLength": 2,
"description": "Default AE."
},
"address_line1": {
"type": "string",
"maxLength": 200
},
"legal_id_type": {
"enum": [
"TL",
"EID",
"PAS",
"CD"
],
"type": "string",
"description": "TL for a trade licence or commercial registration, CD for a Cabinet decision. Company documents only: do not ask the user for a personal identity document."
},
"passport_country": {
"type": "string",
"maxLength": 2,
"description": "Not needed for a company registration: leave it out."
},
"legal_id_authority": {
"type": "string",
"maxLength": 150,
"description": "The authority that issued the trade licence (for example Dubai DET or a free zone authority), when legal_id_type is TL."
}
}
},
"totals": {
"type": "object",
"properties": {
"net": {
"type": "number"
},
"vat": {
"type": "number"
},
"gross": {
"type": "number"
}
},
"description": "The totals printed on the invoice, to check they reconcile."
},
"currency": {
"type": "string",
"maxLength": 3,
"description": "ISO 4217, for example AED."
},
"due_date": {
"type": "string",
"maxLength": 10,
"description": "YYYY-MM-DD."
},
"invoice_id": {
"type": "string",
"maxLength": 64,
"description": "Connected Fatura Go account only: the id of a saved draft or invoice to check, instead of passing its details."
},
"issue_date": {
"type": "string",
"maxLength": 10,
"description": "YYYY-MM-DD."
},
"business_id": {
"type": "string",
"maxLength": 64,
"description": "Connected Fatura Go account only, with invoice_id."
},
"paid_in_full": {
"type": "boolean",
"description": "true when nothing is due, so no due date is needed."
},
"document_type": {
"enum": [
"tax_invoice",
"commercial_invoice"
],
"type": "string",
"description": "Default: tax_invoice when the seller has a TRN, else commercial_invoice (out of scope of VAT)."
},
"invoice_number": {
"type": "string",
"maxLength": 100
},
"aed_exchange_rate": {
"type": "number",
"maximum": 1000000,
"description": "When the currency is not AED.",
"exclusiveMinimum": 0
}
}
}| performed_outside_uae | boolean | Services: the work is actually carried out outside the UAE. |
| special_place_of_supply | string |
| connected_to_goods_in_uae | boolean |
| customer_in_uae_free_zone | boolean |
| goods_located_outside_uae | boolean | Goods: supplied abroad and never brought into or sent from the UAE. |
| customer_has_uae_residence | boolean | Services: the customer has a business, branch or residence in the UAE. |
| days_in_uae_last_12_months | integer | Days the customer (or the person receiving the work) was in the UAE over the 12 months before the supply. |
| goods_into_designated_zone | boolean |
| connected_to_uae_real_estate | boolean |
| goods_exported_within_90_days | boolean |
| customer_in_uae_when_performed | boolean |
| presence_connected_with_supply | boolean | Any time the customer spent in the UAE was connected with this work (meetings, workshops). |
| received_in_uae_by_another_person | boolean | An employee, director or branch of the customer receives the work in the UAE. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"supply"
],
"properties": {
"supply": {
"enum": [
"goods",
"services"
],
"type": "string"
},
"category": {
"enum": [
"general",
"international_transport",
"means_of_transport",
"investment_precious_metals",
"residential_first_supply",
"residential_other",
"bare_land",
"local_passenger_transport",
"financial_services_margin",
"education",
"healthcare",
"crude_oil_natural_gas"
],
"type": "string",
"description": "A special category, if any. Default general."
},
"export_evidence": {
"type": "array",
"items": {
"enum": [
"customs_declaration",
"commercial_evidence",
"official_evidence",
"shipping_certificate",
"suspension_declaration"
],
"type": "string"
},
"maxItems": 5
},
"customer_country": {
"type": "string",
"maxLength": 3,
"description": "ISO 3166 two-letter code of where the customer is, for example AE, GB, SA."
},
"export_arranged_by": {
"enum": [
"supplier",
"customer"
],
"type": "string",
"description": "Goods: who arranges transport out of the UAE."
},
"performed_outside_uae": {
"type": "boolean",
"description": "Services: the work is actually carried out outside the UAE."
},
"special_place_of_supply": {
"enum": [
"none",
"installation_on_goods",
"means_of_transport",
"hotel_restaurant_catering",
"cultural_artistic_sport_educational_event",
"real_estate",
"transport_starting_in_uae",
"telecom_or_electronic_used_in_uae"
],
"type": "string"
},
"connected_to_goods_in_uae": {
"type": "boolean"
},
"customer_in_uae_free_zone": {
"type": "boolean"
},
"goods_located_outside_uae": {
"type": "boolean",
"description": "Goods: supplied abroad and never brought into or sent from the UAE."
},
"customer_has_uae_residence": {
"type": "boolean",
"description": "Services: the customer has a business, branch or residence in the UAE."
},
"days_in_uae_last_12_months": {
"type": "integer",
"maximum": 366,
"minimum": 0,
"description": "Days the customer (or the person receiving the work) was in the UAE over the 12 months before the supply."
},
"goods_into_designated_zone": {
"type": "boolean"
},
"connected_to_uae_real_estate": {
"type": "boolean"
},
"goods_exported_within_90_days": {
"type": "boolean"
},
"customer_in_uae_when_performed": {
"type": "boolean"
},
"presence_connected_with_supply": {
"type": "boolean",
"description": "Any time the customer spent in the UAE was connected with this work (meetings, workshops)."
},
"received_in_uae_by_another_person": {
"type": "boolean",
"description": "An employee, director or branch of the customer receives the work in the UAE."
}
}
}| Taxable supplies and imports expected in the next 30 days alone, AED. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"taxable_supplies_last_12_months"
],
"properties": {
"uae_resident": {
"type": "boolean",
"description": "Default true. Non-residents making taxable supplies in the UAE must register at any amount."
},
"required_since": {
"type": "string",
"maxLength": 10,
"description": "YYYY-MM-DD: the day the AED 375,000 threshold was crossed (or first expected to be), for the 30-day deadline."
},
"taxable_expenses_last_12_months": {
"type": "number",
"maximum": 1000000000,
"minimum": 0,
"description": "Taxable expenses over the past 12 months, AED (voluntary test)."
},
"taxable_supplies_last_12_months": {
"type": "number",
"maximum": 1000000000,
"minimum": 0,
"description": "Taxable supplies and imports over the past 12 months, AED."
},
"expected_taxable_supplies_next_30_days": {
"type": "number",
"maximum": 1000000000,
"minimum": 0,
"description": "Taxable supplies and imports expected in the next 30 days alone, AED."
}
}
}| net_amount | any | The total before VAT, only when printed. |
| vat_amount | any | The VAT amount ONLY when a VAT line is printed. Leave it out when none is printed; never calculate it. |
| business_id | string | From list_businesses. May be left out when the connection shares exactly one business. |
| supplier_id | string | A supplier of the business, from the candidates a previous call returned. |
| new_supplier | boolean | true when the user says the supplier is new although similar names exist. Nothing is created now; Fatura Go adds the supplier when the expense is saved. |
| supplier_trn | string | The SELLER's 15-digit TRN as printed (never the buyer's). Checked as check_trn does. |
| idempotency_key | string | Optional. A unique string (for example a UUID) for this request: a retry with the same key returns the first result instead of writing again. |
| vat_included_stated | boolean | true ONLY when the receipt explicitly says the prices include 5% VAT (e.g. "Inclusive of 5% VAT"). A TRN alone is not such a statement. |
| supplier_invoice_number | string | The invoice or receipt number as printed. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"date": {
"type": "string",
"maxLength": 10,
"description": "YYYY-MM-DD, the receipt date. Default today (UAE)."
},
"total": {
"anyOf": [
{
"type": "number"
},
{
"type": "string",
"maxLength": 40
}
],
"description": "The grand total printed on the receipt, VAT included. Required with the receipt fields."
},
"category": {
"type": "string",
"maxLength": 60,
"description": "Expense category slug, e.g. fuel, meals, office_supplies, software. Default other."
},
"currency": {
"type": "string",
"maxLength": 3,
"description": "One of AED, SAR, USD, EUR, GBP, KWD, QAR, BHD, OMR, INR. Default the business currency."
},
"supplier": {
"type": "string",
"maxLength": 200,
"description": "The seller's name as printed."
},
"reference": {
"type": "string",
"maxLength": 200,
"description": "An order or PO number printed apart from the invoice number."
},
"net_amount": {
"anyOf": [
{
"type": "number"
},
{
"type": "string",
"maxLength": 40
}
],
"description": "The total before VAT, only when printed."
},
"vat_amount": {
"anyOf": [
{
"type": "number"
},
{
"type": "string",
"maxLength": 40
}
],
"description": "The VAT amount ONLY when a VAT line is printed. Leave it out when none is printed; never calculate it."
},
"business_id": {
"type": "string",
"maxLength": 64,
"description": "From list_businesses. May be left out when the connection shares exactly one business."
},
"supplier_id": {
"type": "string",
"maxLength": 64,
"description": "A supplier of the business, from the candidates a previous call returned."
},
"new_supplier": {
"type": "boolean",
"description": "true when the user says the supplier is new although similar names exist. Nothing is created now; Fatura Go adds the supplier when the expense is saved."
},
"supplier_trn": {
"type": "string",
"maxLength": 40,
"description": "The SELLER's 15-digit TRN as printed (never the buyer's). Checked as check_trn does."
},
"idempotency_key": {
"type": "string",
"maxLength": 200,
"description": "Optional. A unique string (for example a UUID) for this request: a retry with the same key returns the first result instead of writing again."
},
"vat_included_stated": {
"type": "boolean",
"description": "true ONLY when the receipt explicitly says the prices include 5% VAT (e.g. \"Inclusive of 5% VAT\"). A TRN alone is not such a statement."
},
"supplier_invoice_number": {
"type": "string",
"maxLength": 100,
"description": "The invoice or receipt number as printed."
}
}
}| due_date | string | YYYY-MM-DD, on or after date. |
| client_id | string | From list_clients or create_client. |
| business_id | string | From list_businesses. May be left out when the connection shares exactly one business. |
| client_name | string | Only when the client_id is not known: nothing is written, and the matching clients are returned to pick from. |
| idempotency_key | string | Optional. A unique string (for example a UUID) for this request: a retry with the same key returns the first result instead of writing again. |
| prices_include_vat | boolean | Whether unit_price includes the 5% VAT. Default the business setting. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"items"
],
"properties": {
"date": {
"type": "string",
"maxLength": 10,
"description": "YYYY-MM-DD. Default today (UAE)."
},
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"qty": {
"anyOf": [
{
"type": "number"
},
{
"type": "string",
"maxLength": 40
}
],
"description": "Quantity above 0. Default 1."
},
"vat_type": {
"type": "string",
"maxLength": 20,
"description": "One of standard, zero, exempt, out_of_scope. Default standard (5%)."
},
"unit_code": {
"type": "string",
"maxLength": 20,
"description": "Unit of measure, one of C62, HUR, DAY, WEE, MON, ANN, KGM, TNE, MTR, KMT, MTK, LTR, XBX, SET, PR, E48, LS (UN/ECE Rec 20/21: C62 each, HUR hour, DAY day, WEE week, MON month, ANN year, KGM kg, TNE tonne, MTR metre, KMT km, MTK m², LTR litre, XBX box, SET set, PR pair, E48 service, LS lump sum). Left out: a new line gets C62 (each); on an update a line keeps its stored unit when it is at the same position with the same description as before, else C62. Send unit_code to change it."
},
"unit_price": {
"anyOf": [
{
"type": "number"
},
{
"type": "string",
"maxLength": 40
}
],
"description": "Price of one unit. VAT-inclusive when prices_include_vat is true, else before VAT."
},
"description": {
"type": "string",
"maxLength": 500,
"description": "Line descriptions are printed on the tax invoice: write them in English, translating when the user writes in another language (for example \"Консультация\" becomes \"Consultation\"). Keep names, brands and model numbers exactly as written. Use another language only when the user explicitly asks for it or quotes the exact text."
}
}
},
"maxItems": 100,
"description": "The lines, 1 to 100. On an update they replace every line."
},
"notes": {
"type": "string",
"maxLength": 2000
},
"fx_rate": {
"anyOf": [
{
"type": "number"
},
{
"type": "string",
"maxLength": 40
}
],
"description": "AED per 1 unit of a foreign currency. USD defaults to the 3.6725 peg."
},
"currency": {
"type": "string",
"maxLength": 3,
"description": "One of AED, SAR, USD, EUR, GBP, KWD, QAR, BHD, OMR, INR. Default the client's preferred currency, else the business currency."
},
"due_date": {
"type": "string",
"maxLength": 10,
"description": "YYYY-MM-DD, on or after date."
},
"client_id": {
"type": "string",
"maxLength": 64,
"description": "From list_clients or create_client."
},
"business_id": {
"type": "string",
"maxLength": 64,
"description": "From list_businesses. May be left out when the connection shares exactly one business."
},
"client_name": {
"type": "string",
"maxLength": 100,
"description": "Only when the client_id is not known: nothing is written, and the matching clients are returned to pick from."
},
"idempotency_key": {
"type": "string",
"maxLength": 200,
"description": "Optional. A unique string (for example a UUID) for this request: a retry with the same key returns the first result instead of writing again."
},
"prices_include_vat": {
"type": "boolean",
"description": "Whether unit_price includes the 5% VAT. Default the business setting."
}
}
}| string |
| quote (default) or proforma. |
| business_id | string | From list_businesses. May be left out when the connection shares exactly one business. |
| client_name | string | Only when the client_id is not known: nothing is written, and the matching clients are returned to pick from. |
| valid_until | string | YYYY-MM-DD, on or after date. |
| idempotency_key | string | Optional. A unique string (for example a UUID) for this request: a retry with the same key returns the first result instead of writing again. |
| prices_include_vat | boolean | Whether unit_price includes the 5% VAT. Default the business setting. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"items"
],
"properties": {
"date": {
"type": "string",
"maxLength": 10,
"description": "YYYY-MM-DD. Default today (UAE)."
},
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"qty": {
"anyOf": [
{
"type": "number"
},
{
"type": "string",
"maxLength": 40
}
],
"description": "Quantity above 0. Default 1."
},
"vat_type": {
"type": "string",
"maxLength": 20,
"description": "One of standard, zero, exempt, out_of_scope. Default standard (5%)."
},
"unit_code": {
"type": "string",
"maxLength": 20,
"description": "Unit of measure, one of C62, HUR, DAY, WEE, MON, ANN, KGM, TNE, MTR, KMT, MTK, LTR, XBX, SET, PR, E48, LS (UN/ECE Rec 20/21: C62 each, HUR hour, DAY day, WEE week, MON month, ANN year, KGM kg, TNE tonne, MTR metre, KMT km, MTK m², LTR litre, XBX box, SET set, PR pair, E48 service, LS lump sum). Left out: a new line gets C62 (each); on an update a line keeps its stored unit when it is at the same position with the same description as before, else C62. Send unit_code to change it."
},
"unit_price": {
"anyOf": [
{
"type": "number"
},
{
"type": "string",
"maxLength": 40
}
],
"description": "Price of one unit. VAT-inclusive when prices_include_vat is true, else before VAT."
},
"description": {
"type": "string",
"maxLength": 500,
"description": "Line descriptions are printed on the tax invoice: write them in English, translating when the user writes in another language (for example \"Консультация\" becomes \"Consultation\"). Keep names, brands and model numbers exactly as written. Use another language only when the user explicitly asks for it or quotes the exact text."
}
}
},
"maxItems": 100,
"description": "The lines, 1 to 100. On an update they replace every line."
},
"notes": {
"type": "string",
"maxLength": 2000
},
"currency": {
"type": "string",
"maxLength": 3,
"description": "One of AED, SAR, USD, EUR, GBP, KWD, QAR, BHD, OMR, INR. Default the client's preferred currency, else the business currency."
},
"client_id": {
"type": "string",
"maxLength": 64,
"description": "From list_clients or create_client."
},
"quote_kind": {
"type": "string",
"maxLength": 10,
"description": "quote (default) or proforma."
},
"business_id": {
"type": "string",
"maxLength": 64,
"description": "From list_businesses. May be left out when the connection shares exactly one business."
},
"client_name": {
"type": "string",
"maxLength": 100,
"description": "Only when the client_id is not known: nothing is written, and the matching clients are returned to pick from."
},
"valid_until": {
"type": "string",
"maxLength": 10,
"description": "YYYY-MM-DD, on or after date."
},
"idempotency_key": {
"type": "string",
"maxLength": 200,
"description": "Optional. A unique string (for example a UUID) for this request: a retry with the same key returns the first result instead of writing again."
},
"prices_include_vat": {
"type": "boolean",
"description": "Whether unit_price includes the 5% VAT. Default the business setting."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"legal_form"
],
"properties": {
"legal_form": {
"enum": [
"company",
"free_zone_company",
"natural_person"
],
"type": "string",
"description": "company (mainland), free_zone_company, or natural_person with a business."
},
"incorporation_date": {
"type": "string",
"maxLength": 10,
"description": "YYYY-MM-DD, if different from the licence date."
},
"licence_issue_date": {
"type": "string",
"maxLength": 10,
"description": "YYYY-MM-DD: the earliest trade licence."
},
"turnover_over_1m_year": {
"type": "integer",
"maximum": 2100,
"minimum": 2024,
"description": "Natural person only: the first calendar year business turnover went over AED 1,000,000."
},
"incorporated_before_1_march_2024": {
"type": "boolean",
"description": "Use when the exact incorporation date is not known."
}
}
}| string |
| YYYY-MM-DD, document date on or after. |
| business_id | string | From list_businesses. May be left out when the connection shares exactly one business. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "number",
"description": "Page size, 1 to 50. Default 20."
},
"cursor": {
"type": "string",
"maxLength": 4096,
"description": "next_cursor from the previous page, with the same filters."
},
"status": {
"type": "string",
"maxLength": 20,
"description": "One of all, draft, sent, overdue, paid, written_off. Default all."
},
"date_to": {
"type": "string",
"maxLength": 10,
"description": "YYYY-MM-DD, document date on or before."
},
"client_id": {
"type": "string",
"maxLength": 64,
"description": "From list_clients."
},
"date_from": {
"type": "string",
"maxLength": 10,
"description": "YYYY-MM-DD, document date on or after."
},
"business_id": {
"type": "string",
"maxLength": 64,
"description": "From list_businesses. May be left out when the connection shares exactly one business."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "number",
"description": "Page size, 1 to 50. Default 20."
},
"cursor": {
"type": "string",
"maxLength": 4096,
"description": "next_cursor from the previous page, with the same filters."
},
"status": {
"type": "string",
"maxLength": 20,
"description": "One of all, draft, sent, accepted, declined, expired. Default all."
},
"date_to": {
"type": "string",
"maxLength": 10,
"description": "YYYY-MM-DD, document date on or before."
},
"client_id": {
"type": "string",
"maxLength": 64,
"description": "From list_clients."
},
"date_from": {
"type": "string",
"maxLength": 10,
"description": "YYYY-MM-DD, document date on or after."
},
"business_id": {
"type": "string",
"maxLength": 64,
"description": "From list_businesses. May be left out when the connection shares exactly one business."
}
}
}| language |
| string |
| Invoice language; default en. |
| invoice_date | string | YYYY-MM-DD; default today (UAE). |
| prices_include_vat | boolean | true when unit prices already include VAT. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"client",
"lines"
],
"properties": {
"lines": {
"type": "array",
"items": {
"type": "object",
"required": [
"description",
"quantity",
"unit_price"
],
"properties": {
"quantity": {
"type": "number",
"maximum": 1000000,
"exclusiveMinimum": 0
},
"vat_type": {
"enum": [
"standard",
"zero",
"exempt",
"out_of_scope"
],
"type": "string",
"description": "Default standard (5%)."
},
"unit_price": {
"type": "number",
"maximum": 1000000000,
"minimum": 0
},
"description": {
"type": "string",
"maxLength": 500,
"description": "Line descriptions are printed on the tax invoice: write them in English, translating when the user writes in another language (for example \"Консультация\" becomes \"Consultation\"). Keep names, brands and model numbers exactly as written. Use another language only when the user explicitly asks for it or quotes the exact text."
}
}
},
"maxItems": 50,
"minItems": 1
},
"notes": {
"type": "string",
"maxLength": 500
},
"client": {
"type": "object",
"required": [
"name"
],
"properties": {
"trn": {
"type": "string",
"maxLength": 40,
"description": "15 digits. Leave out if unknown; never invent one."
},
"name": {
"type": "string",
"maxLength": 200
},
"address": {
"type": "string",
"maxLength": 500
}
},
"description": "The customer being invoiced."
},
"seller": {
"type": "object",
"properties": {
"trn": {
"type": "string",
"maxLength": 40,
"description": "15 digits. Leave out if unknown; never invent one."
},
"name": {
"type": "string",
"maxLength": 200
},
"address": {
"type": "string",
"maxLength": 500
}
},
"description": "The user's own business."
},
"currency": {
"enum": [
"AED",
"SAR",
"USD",
"EUR",
"GBP",
"KWD",
"QAR",
"BHD",
"OMR",
"INR"
],
"type": "string",
"description": "Default AED."
},
"due_date": {
"type": "string",
"maxLength": 10,
"description": "YYYY-MM-DD; default 14 days after the invoice date (Net 14)."
},
"language": {
"enum": [
"en",
"ar",
"bilingual"
],
"type": "string",
"description": "Invoice language; default en."
},
"invoice_date": {
"type": "string",
"maxLength": 10,
"description": "YYYY-MM-DD; default today (UAE)."
},
"prices_include_vat": {
"type": "boolean",
"description": "true when unit prices already include VAT."
}
}
}| Bank or cheque reference, if the user gave one. |
| invoice_id | string | From list_invoices or get_invoice. |
| business_id | string | From list_businesses. May be left out: the invoice is then looked up in every business shared with this connection. |
| invoice_number | string | Instead of invoice_id. |
| confirmation_token | string | Leave out on the first call (preview). Pass the token from the preview only after the user confirmed it, with the same other arguments. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"amount"
],
"properties": {
"date": {
"type": "string",
"maxLength": 10,
"description": "YYYY-MM-DD, the day the money was received. Default today (UAE)."
},
"amount": {
"anyOf": [
{
"type": "number"
},
{
"type": "string",
"maxLength": 40
}
],
"description": "The amount received, in the invoice currency, above 0, at most 2 decimals."
},
"method": {
"type": "string",
"maxLength": 20,
"description": "One of bank_transfer, cash, cheque, card, other."
},
"currency": {
"type": "string",
"maxLength": 3,
"description": "Optional check: must be the invoice currency."
},
"reference": {
"type": "string",
"maxLength": 120,
"description": "Bank or cheque reference, if the user gave one."
},
"invoice_id": {
"type": "string",
"maxLength": 64,
"description": "From list_invoices or get_invoice."
},
"business_id": {
"type": "string",
"maxLength": 64,
"description": "From list_businesses. May be left out: the invoice is then looked up in every business shared with this connection."
},
"invoice_number": {
"type": "string",
"maxLength": 100,
"description": "Instead of invoice_id."
},
"confirmation_token": {
"type": "string",
"maxLength": 100,
"description": "Leave out on the first call (preview). Pass the token from the preview only after the user confirmed it, with the same other arguments."
}
}
}| Leave out on the first call (preview). Pass the token from the preview only after the user confirmed it, with the same other arguments. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"invoice_id": {
"type": "string",
"maxLength": 64,
"description": "From list_invoices or get_invoice."
},
"business_id": {
"type": "string",
"maxLength": 64,
"description": "From list_businesses. May be left out: the invoice is then looked up in every business shared with this connection."
},
"template_id": {
"type": "string",
"maxLength": 64,
"description": "A payment reminder template of the business, when the user picked one. Default: the template the app would use."
},
"invoice_number": {
"type": "string",
"maxLength": 100,
"description": "Instead of invoice_id."
},
"confirmation_token": {
"type": "string",
"maxLength": 100,
"description": "Leave out on the first call (preview). Pass the token from the preview only after the user confirmed it, with the same other arguments."
}
}
}| due_date | string | YYYY-MM-DD, on or after date. |
| client_id | string | From list_clients or create_client. |
| invoice_id* | string | From create_draft_invoice or list_invoices (status draft). |
| business_id | string | From list_businesses. May be left out when the connection shares exactly one business. |
| client_name | string | Only when the client_id is not known: nothing is written, and the matching clients are returned to pick from. |
| idempotency_key | string | Optional. A unique string (for example a UUID) for this request: a retry with the same key returns the first result instead of writing again. |
| prices_include_vat | boolean | Whether unit_price includes the 5% VAT. Default the business setting. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"invoice_id"
],
"properties": {
"date": {
"type": "string",
"maxLength": 10,
"description": "YYYY-MM-DD. Default today (UAE)."
},
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"qty": {
"anyOf": [
{
"type": "number"
},
{
"type": "string",
"maxLength": 40
}
],
"description": "Quantity above 0. Default 1."
},
"vat_type": {
"type": "string",
"maxLength": 20,
"description": "One of standard, zero, exempt, out_of_scope. Default standard (5%)."
},
"unit_code": {
"type": "string",
"maxLength": 20,
"description": "Unit of measure, one of C62, HUR, DAY, WEE, MON, ANN, KGM, TNE, MTR, KMT, MTK, LTR, XBX, SET, PR, E48, LS (UN/ECE Rec 20/21: C62 each, HUR hour, DAY day, WEE week, MON month, ANN year, KGM kg, TNE tonne, MTR metre, KMT km, MTK m², LTR litre, XBX box, SET set, PR pair, E48 service, LS lump sum). Left out: a new line gets C62 (each); on an update a line keeps its stored unit when it is at the same position with the same description as before, else C62. Send unit_code to change it."
},
"unit_price": {
"anyOf": [
{
"type": "number"
},
{
"type": "string",
"maxLength": 40
}
],
"description": "Price of one unit. VAT-inclusive when prices_include_vat is true, else before VAT."
},
"description": {
"type": "string",
"maxLength": 500,
"description": "Line descriptions are printed on the tax invoice: write them in English, translating when the user writes in another language (for example \"Консультация\" becomes \"Consultation\"). Keep names, brands and model numbers exactly as written. Use another language only when the user explicitly asks for it or quotes the exact text."
}
}
},
"maxItems": 100,
"description": "The lines, 1 to 100. On an update they replace every line."
},
"notes": {
"type": "string",
"maxLength": 2000
},
"fx_rate": {
"anyOf": [
{
"type": "number"
},
{
"type": "string",
"maxLength": 40
}
],
"description": "AED per 1 unit of a foreign currency."
},
"currency": {
"type": "string",
"maxLength": 3,
"description": "One of AED, SAR, USD, EUR, GBP, KWD, QAR, BHD, OMR, INR. Default the client's preferred currency, else the business currency."
},
"due_date": {
"type": "string",
"maxLength": 10,
"description": "YYYY-MM-DD, on or after date."
},
"client_id": {
"type": "string",
"maxLength": 64,
"description": "From list_clients or create_client."
},
"invoice_id": {
"type": "string",
"maxLength": 64,
"description": "From create_draft_invoice or list_invoices (status draft)."
},
"business_id": {
"type": "string",
"maxLength": 64,
"description": "From list_businesses. May be left out when the connection shares exactly one business."
},
"client_name": {
"type": "string",
"maxLength": 100,
"description": "Only when the client_id is not known: nothing is written, and the matching clients are returned to pick from."
},
"idempotency_key": {
"type": "string",
"maxLength": 200,
"description": "Optional. A unique string (for example a UUID) for this request: a retry with the same key returns the first result instead of writing again."
},
"prices_include_vat": {
"type": "boolean",
"description": "Whether unit_price includes the 5% VAT. Default the business setting."
}
}
}| client_id |
| string |
| From list_clients or create_client. |
| business_id | string | From list_businesses. May be left out when the connection shares exactly one business. |
| client_name | string | Only when the client_id is not known: nothing is written, and the matching clients are returned to pick from. |
| valid_until | string | YYYY-MM-DD, on or after date. |
| idempotency_key | string | Optional. A unique string (for example a UUID) for this request: a retry with the same key returns the first result instead of writing again. |
| prices_include_vat | boolean | Whether unit_price includes the 5% VAT. Default the business setting. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"quote_id"
],
"properties": {
"date": {
"type": "string",
"maxLength": 10,
"description": "YYYY-MM-DD. Default today (UAE)."
},
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"qty": {
"anyOf": [
{
"type": "number"
},
{
"type": "string",
"maxLength": 40
}
],
"description": "Quantity above 0. Default 1."
},
"vat_type": {
"type": "string",
"maxLength": 20,
"description": "One of standard, zero, exempt, out_of_scope. Default standard (5%)."
},
"unit_code": {
"type": "string",
"maxLength": 20,
"description": "Unit of measure, one of C62, HUR, DAY, WEE, MON, ANN, KGM, TNE, MTR, KMT, MTK, LTR, XBX, SET, PR, E48, LS (UN/ECE Rec 20/21: C62 each, HUR hour, DAY day, WEE week, MON month, ANN year, KGM kg, TNE tonne, MTR metre, KMT km, MTK m², LTR litre, XBX box, SET set, PR pair, E48 service, LS lump sum). Left out: a new line gets C62 (each); on an update a line keeps its stored unit when it is at the same position with the same description as before, else C62. Send unit_code to change it."
},
"unit_price": {
"anyOf": [
{
"type": "number"
},
{
"type": "string",
"maxLength": 40
}
],
"description": "Price of one unit. VAT-inclusive when prices_include_vat is true, else before VAT."
},
"description": {
"type": "string",
"maxLength": 500,
"description": "Line descriptions are printed on the tax invoice: write them in English, translating when the user writes in another language (for example \"Консультация\" becomes \"Consultation\"). Keep names, brands and model numbers exactly as written. Use another language only when the user explicitly asks for it or quotes the exact text."
}
}
},
"maxItems": 100,
"description": "The lines, 1 to 100. On an update they replace every line."
},
"notes": {
"type": "string",
"maxLength": 2000
},
"currency": {
"type": "string",
"maxLength": 3,
"description": "One of AED, SAR, USD, EUR, GBP, KWD, QAR, BHD, OMR, INR. Default the client's preferred currency, else the business currency."
},
"quote_id": {
"type": "string",
"maxLength": 64,
"description": "From create_draft_quote or list_quotes (status draft)."
},
"client_id": {
"type": "string",
"maxLength": 64,
"description": "From list_clients or create_client."
},
"business_id": {
"type": "string",
"maxLength": 64,
"description": "From list_businesses. May be left out when the connection shares exactly one business."
},
"client_name": {
"type": "string",
"maxLength": 100,
"description": "Only when the client_id is not known: nothing is written, and the matching clients are returned to pick from."
},
"valid_until": {
"type": "string",
"maxLength": 10,
"description": "YYYY-MM-DD, on or after date."
},
"idempotency_key": {
"type": "string",
"maxLength": 200,
"description": "Optional. A unique string (for example a UUID) for this request: a retry with the same key returns the first result instead of writing again."
},
"prices_include_vat": {
"type": "boolean",
"description": "Whether unit_price includes the 5% VAT. Default the business setting."
}
}
}