Read SmartBill series, taxes, stock, clients and products; draft and issue invoices and estimates.
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.
Cancel an existing proforma (smartbill_restore_estimate undoes it). PUT /estimate/cancel.
Proforma number as text.
Proforma series name.
The server marks this tool as destructive. Running it may delete or overwrite data on the server or in any account you connected with your headers.
Cancel an existing proforma (smartbill_restore_estimate undoes it). PUT /estimate/cancel.
| Argument | Type | Description |
|---|---|---|
| number* | string | Proforma number as text. |
| series_name* | string | Proforma series name. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"series_name",
"number"
],
"properties": {
"number": {
"type": "string",
"maxLength": 30,
"minLength": 1,
"description": "Proforma number as text."
},
"series_name": {
"type": "string",
"maxLength": 50,
"minLength": 1,
"description": "Proforma series name."
}
}
}Cancel an existing invoice (it stays in the books as cancelled; smartbill_restore_invoice undoes it). Changes the document's fiscal status, so confirm with the user. PUT /invoice/cancel.
| Argument | Type | Description |
|---|---|---|
| number* | string | Document number as text, e.g. "0025" (keep leading zeros). |
| series_name* | string | Document series name exactly as configured in SmartBill Cloud (smartbill_list_series lists them). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"series_name",
"number"
],
"properties": {
"number": {
"type": "string",
"maxLength": 30,
"minLength": 1,
"description": "Document number as text, e.g. \"0025\" (keep leading zeros)."
},
"series_name": {
"type": "string",
"maxLength": 50,
"minLength": 1,
"description": "Document series name exactly as configured in SmartBill Cloud (smartbill_list_series lists them)."
}
}
}Create a proforma (estimate) for a client with product/service lines. Default is a DRAFT (no number); with draft=false it takes the next number of the proforma series. A proforma is not a fiscal invoice. Returns series, number, documentId and links. POST /estimate/v2.
| Argument | Type | Description |
|---|---|---|
| draft | boolean | Default TRUE: the document is saved as a draft without a number, to be finalized in SmartBill Cloud. Pass false ONLY when the user explicitly wants it ISSUED now: that takes the next number of the series, cannot be undone from the API, and may be transmitted to e-Factura / ANAF depending on the account setup. |
| client* | object | The client the document is issued to. |
| currency | string | Document currency (default RON). |
| due_date | string | Due date yyyy-mm-dd. |
| language | string | Document language (default RO). |
| mentions | string | Mentions shown on the document. |
| products* | array | 1-200 lines. |
| issue_date |
Create an invoice for a client with product/service lines. By default it is saved as a DRAFT (no number) for review in SmartBill Cloud. With draft=false the invoice is ISSUED: it takes the next number of the series, cannot be deleted or edited through this server, can only be cancelled or reversed (storno), and, depending on the account's e-Factura setup, may be transmitted to ANAF. Confirm every field with the user before draft=false. Returns series, number, documentId, documentUrl (needs login) and documentViewUrl (public PDF link). POST /invoice/v2.
| Argument | Type | Description |
|---|---|---|
| draft | boolean | Default TRUE: the document is saved as a draft without a number, to be finalized in SmartBill Cloud. Pass false ONLY when the user explicitly wants it ISSUED now: that takes the next number of the series, cannot be undone from the API, and may be transmitted to e-Factura / ANAF depending on the account setup. |
| client* | object | The client the document is issued to. |
| currency | string | Document currency (default RON). |
| due_date | string | Due date yyyy-mm-dd. |
| language | string | Document language (default RO). |
| mentions | string | Mentions shown on the document. |
Create an invoice from an existing proforma (client and lines are copied from it). Default is a DRAFT; with draft=false the invoice is ISSUED with the next number of the series and may be transmitted to e-Factura / ANAF. Stock is not discharged. POST /invoice/v2 (useEstimateDetails).
| Argument | Type | Description |
|---|---|---|
| draft | boolean | Default TRUE: the document is saved as a draft without a number, to be finalized in SmartBill Cloud. Pass false ONLY when the user explicitly wants it ISSUED now: that takes the next number of the series, cannot be undone from the API, and may be transmitted to e-Factura / ANAF depending on the account setup. |
| issue_date | string | Issue date yyyy-mm-dd (default today). |
| series_name* | string | Invoice series to issue on. |
| estimate_number* | string | Number of the source proforma as text. |
| estimate_series* | string | Series of the source proforma. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"series_name",
"estimate_series",
"estimate_number"
],
"properties": {
"draft": {
"type": "boolean",
"description": "Default TRUE: the document is saved as a draft without a number, to be finalized in SmartBill Cloud. Pass false ONLY when the user explicitly wants it ISSUED now: that takes the next number of the series, cannot be undone from the API, and may be transmitted to e-Factura / ANAF depending on the account setup."
},
"issue_date": {
"type": "string",
"description": "Issue date yyyy-mm-dd (default today)."
},
"series_name": {
"type": "string",
"maxLength": 50,
"minLength": 1,
"description": "Invoice series to issue on."
},
"estimate_number": {
"type": "string",
"maxLength": 30,
"minLength": 1,
"description": "Number of the source proforma as text."
},
"estimate_series": {
"type": "string",
"maxLength": 50,
"minLength": 1,
"description": "Series of the source proforma."
}
}
}One client by V3 id (cus_...): name, CIF, address, bank, contact, VAT-payer flag and delivery addresses. Needs the API V3 token. GET /v3/companies/{cif}/clients/{id}.
| Argument | Type | Description |
|---|---|---|
| id* | string | The client id (cus_...), from the list tool. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"pattern": "^cus_[A-Za-z0-9]{1,64}$",
"description": "The client id (cus_...), from the list tool."
}
}
}Whether a proforma was invoiced and the invoices (series, number) made from it. A draft invoice shows with an empty number. GET /estimate/invoices.
| Argument | Type | Description |
|---|---|---|
| number* | string | Proforma number as text. |
| series_name* | string | Proforma series name. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"series_name",
"number"
],
"properties": {
"number": {
"type": "string",
"maxLength": 30,
"minLength": 1,
"description": "Proforma number as text."
},
"series_name": {
"type": "string",
"maxLength": 50,
"minLength": 1,
"description": "Proforma series name."
}
}
}Whether an invoice is paid and how much remains: invoiceTotalAmount, paidAmount, unpaidAmount and the paid flag. GET /invoice/paymentstatus.
| Argument | Type | Description |
|---|---|---|
| number* | string | Document number as text, e.g. "0025" (keep leading zeros). |
| series_name* | string | Document series name exactly as configured in SmartBill Cloud (smartbill_list_series lists them). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"series_name",
"number"
],
"properties": {
"number": {
"type": "string",
"maxLength": 30,
"minLength": 1,
"description": "Document number as text, e.g. \"0025\" (keep leading zeros)."
},
"series_name": {
"type": "string",
"maxLength": 50,
"minLength": 1,
"description": "Document series name exactly as configured in SmartBill Cloud (smartbill_list_series lists them)."
}
}
}One product or service by V3 id (prod_...). Needs the API V3 token. GET /v3/companies/{cif}/products/{id}.
| Argument | Type | Description |
|---|---|---|
| id* | string | The product id (prod_...), from the list tool. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"pattern": "^prod_[A-Za-z0-9]{1,64}$",
"description": "The product id (prod_...), from the list tool."
}
}
}Stock quantities per warehouse as of a date (needs the SmartBill stock module). Optional filters: warehouse_name (case-sensitive), product_name, product_code. No filters = all products in all warehouses. GET /stocks.
| Argument | Type | Description |
|---|---|---|
| date* | string | Date yyyy-mm-dd the stock is read at. |
| product_code | string | |
| product_name | string | |
| warehouse_name | string | Warehouse name, case-sensitive. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"date"
],
"properties": {
"date": {
"type": "string",
"description": "Date yyyy-mm-dd the stock is read at."
},
"product_code": {
"type": "string",
"maxLength": 100,
"minLength": 1
},
"product_name": {
"type": "string",
"maxLength": 255,
"minLength": 1
},
"warehouse_name": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Warehouse name, case-sensitive."
}
}
}One supplier by V3 id (sup_...). Needs the API V3 token. GET /v3/companies/{cif}/suppliers/{id}.
| Argument | Type | Description |
|---|---|---|
| id* | string | The supplier id (sup_...), from the list tool. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"pattern": "^sup_[A-Za-z0-9]{1,64}$",
"description": "The supplier id (sup_...), from the list tool."
}
}
}List clients from the SmartBill client list, optionally filtered by name (partial, case-insensitive), internal code (exact) or CIF (exact). Needs the API V3 token. Cursor paged: pass the reply's next_args as the next call's arguments. GET /v3/companies/{cif}/clients.
| Argument | Type | Description |
|---|---|---|
| code | string | Exact internal client code (case-sensitive). |
| name | string | Part of the client name. |
| after | string | Cursor: continue after this id (use next_args from the previous reply). Not together with before. |
| limit | integer | Results per page, 1-100 (default 20). |
| before | string | Cursor: go back before this id (use previous_args). Not together with after. |
| vat_code | string | Exact client CIF. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"code": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Exact internal client code (case-sensitive)."
},
"name": {
"type": "string",
"maxLength": 255,
"minLength": 1,
"description": "Part of the client name."
},
"after": {
"type": "string",
"pattern": "^[a-z]{2,5}_[A-Za-z0-9]{1,64}$",
"description": "Cursor: continue after this id (use next_args from the previous reply). Not together with before."
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Results per page, 1-100 (default 20)."
},
"before": {
"type": "string",
"pattern": "^[a-z]{2,5}_[A-Za-z0-9]{1,64}$",
"description": "Cursor: go back before this id (use previous_args). Not together with after."
},
"vat_code": {
"type": "string",
"maxLength": 30,
"minLength": 1,
"description": "Exact client CIF."
}
}
}List the product and service catalog (price, unit, VAT rate, currency), optionally filtered by name (whole-word match) or internal code (exact). Needs the API V3 token. Cursor paged: pass the reply's next_args as the next call's arguments. GET /v3/companies/{cif}/products.
| Argument | Type | Description |
|---|---|---|
| code | string | Exact product code (case-sensitive). |
| name | string | A word of the product name. |
| after | string | Cursor: continue after this id (use next_args from the previous reply). Not together with before. |
| limit | integer | Results per page, 1-100 (default 20). |
| before | string | Cursor: go back before this id (use previous_args). Not together with after. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"code": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Exact product code (case-sensitive)."
},
"name": {
"type": "string",
"maxLength": 255,
"minLength": 1,
"description": "A word of the product name."
},
"after": {
"type": "string",
"pattern": "^[a-z]{2,5}_[A-Za-z0-9]{1,64}$",
"description": "Cursor: continue after this id (use next_args from the previous reply). Not together with before."
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Results per page, 1-100 (default 20)."
},
"before": {
"type": "string",
"pattern": "^[a-z]{2,5}_[A-Za-z0-9]{1,64}$",
"description": "Cursor: go back before this id (use previous_args). Not together with after."
}
}
}List the document series configured in SmartBill Cloud with their next number. Invoice and proforma tools need a series name from here. type: f = invoice series, p = proforma, c = receipt (chitanta); omit for all. GET /series.
| Argument | Type | Description |
|---|---|---|
| type | string | f = invoices, p = proformas, c = receipts; omit for all. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"type": {
"enum": [
"f",
"p",
"c"
],
"type": "string",
"description": "f = invoices, p = proformas, c = receipts; omit for all."
}
}
}List suppliers, optionally filtered by name (partial), internal code (exact) or CIF (exact). Needs the API V3 token. Cursor paged: pass the reply's next_args as the next call's arguments. GET /v3/companies/{cif}/suppliers.
| Argument | Type | Description |
|---|---|---|
| code | string | Exact internal supplier code (case-sensitive). |
| name | string | Part of the supplier name. |
| after | string | Cursor: continue after this id (use next_args from the previous reply). Not together with before. |
| limit | integer | Results per page, 1-100 (default 20). |
| before | string | Cursor: go back before this id (use previous_args). Not together with after. |
| vat_code | string | Exact supplier CIF. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"code": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Exact internal supplier code (case-sensitive)."
},
"name": {
"type": "string",
"maxLength": 255,
"minLength": 1,
"description": "Part of the supplier name."
},
"after": {
"type": "string",
"pattern": "^[a-z]{2,5}_[A-Za-z0-9]{1,64}$",
"description": "Cursor: continue after this id (use next_args from the previous reply). Not together with before."
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Results per page, 1-100 (default 20)."
},
"before": {
"type": "string",
"pattern": "^[a-z]{2,5}_[A-Za-z0-9]{1,64}$",
"description": "Cursor: go back before this id (use previous_args). Not together with after."
},
"vat_code": {
"type": "string",
"maxLength": 30,
"minLength": 1,
"description": "Exact supplier CIF."
}
}
}List the VAT rates configured in the account (name and percentage). Use the name as tax_name and the percentage as tax_percentage on document lines. Works without a V3 token. GET /tax.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}List VAT rates with ids, name, percentage and reverse-charge flag. Filter by name (partial) or percentage (exact). Needs the API V3 token (smartbill_list_taxes does the same without it). Cursor paged: pass the reply's next_args as the next call's arguments. GET /v3/companies/{cif}/vat-rates.
| Argument | Type | Description |
|---|---|---|
| name | string | Part of the VAT rate name. |
| after | string | Cursor: continue after this id (use next_args from the previous reply). Not together with before. |
| limit | integer | Results per page, 1-100 (default 20). |
| before | string | Cursor: go back before this id (use previous_args). Not together with after. |
| percentage | number | Exact percentage. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"name": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Part of the VAT rate name."
},
"after": {
"type": "string",
"pattern": "^[a-z]{2,5}_[A-Za-z0-9]{1,64}$",
"description": "Cursor: continue after this id (use next_args from the previous reply). Not together with before."
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Results per page, 1-100 (default 20)."
},
"before": {
"type": "string",
"pattern": "^[a-z]{2,5}_[A-Za-z0-9]{1,64}$",
"description": "Cursor: go back before this id (use previous_args). Not together with after."
},
"percentage": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Exact percentage."
}
}
}List warehouses (name, type en gros / en detail, keeper, address). Needs the API V3 token. Cursor paged: pass the reply's next_args as the next call's arguments. GET /v3/companies/{cif}/warehouses.
| Argument | Type | Description |
|---|---|---|
| name | string | Part of the warehouse name. |
| after | string | Cursor: continue after this id (use next_args from the previous reply). Not together with before. |
| limit | integer | Results per page, 1-100 (default 20). |
| before | string | Cursor: go back before this id (use previous_args). Not together with after. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"name": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Part of the warehouse name."
},
"after": {
"type": "string",
"pattern": "^[a-z]{2,5}_[A-Za-z0-9]{1,64}$",
"description": "Cursor: continue after this id (use next_args from the previous reply). Not together with before."
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Results per page, 1-100 (default 20)."
},
"before": {
"type": "string",
"pattern": "^[a-z]{2,5}_[A-Za-z0-9]{1,64}$",
"description": "Cursor: go back before this id (use previous_args). Not together with after."
}
}
}Record a collection (incasare) against one or more issued invoices; client and amount are taken from the invoices. With value (single invoice only) a partial payment is recorded. type Chitanta issues a numbered RECEIPT on receipt_series (cannot be undone from this server); the other types (Card, Ordin plata, ...) record the payment without a document. It changes the invoice's paid status in the books: confirm with the user. Fiscal receipts (Bon) are not supported. POST /payment.
| Argument | Type | Description |
|---|---|---|
| text | string | Description of the payment. |
| type* | string | Payment type. Chitanta = a numbered receipt (needs receipt_series); the others create no document. |
| value | number | Partial amount, for a single invoice only; omit to collect the invoice's full amount. |
| is_cash | boolean | Mark the collection as cash (typically for Chitanta). |
| invoices* | array | 1-20 invoices the payment is for. |
| issue_date | string | Payment date yyyy-mm-dd (default today). |
| receipt_series | string | Receipt series; required for type Chitanta (smartbill_list_series with type c). |
Restore a proforma that was cancelled. PUT /estimate/restore.
| Argument | Type | Description |
|---|---|---|
| number* | string | Proforma number as text. |
| series_name* | string | Proforma series name. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"series_name",
"number"
],
"properties": {
"number": {
"type": "string",
"maxLength": 30,
"minLength": 1,
"description": "Proforma number as text."
},
"series_name": {
"type": "string",
"maxLength": 50,
"minLength": 1,
"description": "Proforma series name."
}
}
}Restore an invoice that was cancelled, making it active again. PUT /invoice/restore.
| Argument | Type | Description |
|---|---|---|
| number* | string | Document number as text, e.g. "0025" (keep leading zeros). |
| series_name* | string | Document series name exactly as configured in SmartBill Cloud (smartbill_list_series lists them). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"series_name",
"number"
],
"properties": {
"number": {
"type": "string",
"maxLength": 30,
"minLength": 1,
"description": "Document number as text, e.g. \"0025\" (keep leading zeros)."
},
"series_name": {
"type": "string",
"maxLength": 50,
"minLength": 1,
"description": "Document series name exactly as configured in SmartBill Cloud (smartbill_list_series lists them)."
}
}
}ISSUE a storno (credit) invoice that reverses an issued invoice. It takes the next number, an invoice can be reversed only once, and the storno cannot be undone; it may be transmitted to e-Factura / ANAF. Confirm the exact series and number with the user first. POST /invoice/reverse.
| Argument | Type | Description |
|---|---|---|
| number* | string | Number of the invoice to reverse, as text. |
| issue_date | string | Date of the storno invoice yyyy-mm-dd (default today; not before the original's date). |
| series_name* | string | Series of the invoice to reverse. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"series_name",
"number"
],
"properties": {
"number": {
"type": "string",
"maxLength": 30,
"minLength": 1,
"description": "Number of the invoice to reverse, as text."
},
"issue_date": {
"type": "string",
"description": "Date of the storno invoice yyyy-mm-dd (default today; not before the original's date)."
},
"series_name": {
"type": "string",
"maxLength": 50,
"minLength": 1,
"description": "Series of the invoice to reverse."
}
}
}Send an issued invoice or proforma by email from SmartBill. This EMAILS A THIRD PARTY and cannot be recalled. Without `to` it goes to the client's email on the document; without subject/body_text the account's email template is used. Confirm the recipient with the user first. POST /document/send.
| Argument | Type | Description |
|---|---|---|
| cc | string | CC addresses, comma separated. |
| to | string | Recipient (default: the client's email on the document). |
| bcc | string | BCC addresses, comma separated. |
| type* | string | factura = invoice, proforma = proforma. |
| number* | string | Document number as text, e.g. "0025" (keep leading zeros). |
| subject | string | Email subject, plain text (default: the account template). |
| body_text | string | Email body, plain text (default: the account template). |
| series_name* | string | Document series name exactly as configured in SmartBill Cloud (smartbill_list_series lists them). |
| string |
| Issue date yyyy-mm-dd (default today). |
| series_name* | string | Document series name exactly as configured in SmartBill Cloud (smartbill_list_series lists them). |
| observations | string | Observations shown on the document. |
| exchange_rate | number | Exchange rate to RON (default: SmartBill's rate for the date). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"series_name",
"client",
"products"
],
"properties": {
"draft": {
"type": "boolean",
"description": "Default TRUE: the document is saved as a draft without a number, to be finalized in SmartBill Cloud. Pass false ONLY when the user explicitly wants it ISSUED now: that takes the next number of the series, cannot be undone from the API, and may be transmitted to e-Factura / ANAF depending on the account setup."
},
"client": {
"type": "object",
"required": [
"name"
],
"properties": {
"bank": {
"type": "string",
"maxLength": 100
},
"city": {
"type": "string",
"maxLength": 100,
"description": "City. When county is Bucuresti this must be Sector 1 - Sector 6, or e-Factura will not validate in SPV."
},
"iban": {
"type": "string",
"maxLength": 50
},
"name": {
"type": "string",
"maxLength": 255,
"minLength": 1,
"description": "Client name (company or person)."
},
"email": {
"type": "string",
"maxLength": 254
},
"phone": {
"type": "string",
"maxLength": 50
},
"county": {
"type": "string",
"maxLength": 100,
"description": "County (or region/state for foreign clients)."
},
"address": {
"type": "string",
"maxLength": 255
},
"contact": {
"type": "string",
"maxLength": 100,
"description": "Contact person."
},
"country": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Country name or usual code (default Romania)."
},
"reg_com": {
"type": "string",
"maxLength": 50,
"description": "Trade register number."
},
"vat_code": {
"type": "string",
"maxLength": 30,
"description": "Client CUI/CIF or foreign VAT code."
},
"save_to_db": {
"type": "boolean",
"description": "Also save the client in the SmartBill client list when new (default false)."
},
"is_tax_payer": {
"type": "boolean",
"description": "Client is a VAT payer (default false: stored as non-payer)."
}
},
"description": "The client the document is issued to."
},
"currency": {
"enum": [
"RON",
"EUR",
"USD",
"GBP",
"CAD",
"AUD",
"CHF",
"TRY",
"CZK",
"DKK",
"HUF",
"MDL",
"SEK",
"NOK",
"JPY",
"EGP",
"PLN",
"RUB",
"AED",
"BRL",
"CNY",
"HRK",
"INR",
"KRW",
"MXN",
"NZD",
"RSD",
"THB",
"UAH",
"XDR",
"ZAR"
],
"type": "string",
"description": "Document currency (default RON)."
},
"due_date": {
"type": "string",
"description": "Due date yyyy-mm-dd."
},
"language": {
"enum": [
"RO",
"EN",
"DE",
"FR",
"IT",
"ES"
],
"type": "string",
"description": "Document language (default RO)."
},
"mentions": {
"type": "string",
"maxLength": 2000,
"description": "Mentions shown on the document."
},
"products": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"quantity",
"unit",
"price",
"tax_percentage"
],
"properties": {
"code": {
"type": "string",
"maxLength": 100,
"description": "Product code (SKU); required when the account has \"use product code\" enabled."
},
"name": {
"type": "string",
"maxLength": 255,
"minLength": 1,
"description": "Product or service name."
},
"unit": {
"type": "string",
"maxLength": 50,
"minLength": 1,
"description": "Unit of measure as configured in SmartBill, e.g. buc, ora, kg."
},
"price": {
"type": "number",
"maximum": 1000000000000,
"minimum": 0,
"description": "Unit price: WITHOUT VAT unless is_tax_included is true."
},
"quantity": {
"type": "number",
"maximum": 1000000000,
"description": "Quantity, greater than 0 (the API itself accepts 0 and negatives; this server does not).",
"exclusiveMinimum": 0
},
"tax_name": {
"type": "string",
"maxLength": 100,
"description": "VAT rate name as in the account (smartbill_list_taxes), e.g. Normala."
},
"is_service": {
"type": "boolean",
"description": "True for a service."
},
"description": {
"type": "string",
"maxLength": 1000,
"description": "Extra description."
},
"tax_percentage": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "VAT percentage of the line, e.g. 21, 11, 0."
},
"is_tax_included": {
"type": "boolean",
"description": "The price already includes VAT (default false)."
}
}
},
"maxItems": 200,
"minItems": 1,
"description": "1-200 lines."
},
"issue_date": {
"type": "string",
"description": "Issue date yyyy-mm-dd (default today)."
},
"series_name": {
"type": "string",
"maxLength": 50,
"minLength": 1,
"description": "Document series name exactly as configured in SmartBill Cloud (smartbill_list_series lists them)."
},
"observations": {
"type": "string",
"maxLength": 2000,
"description": "Observations shown on the document."
},
"exchange_rate": {
"type": "number",
"maximum": 1000000,
"description": "Exchange rate to RON (default: SmartBill's rate for the date).",
"exclusiveMinimum": 0
}
}
}| products* |
| array |
| 1-200 lines. |
| issue_date | string | Issue date yyyy-mm-dd (default today). |
| series_name* | string | Document series name exactly as configured in SmartBill Cloud (smartbill_list_series lists them). |
| observations | string | Observations shown on the document. |
| exchange_rate | number | Exchange rate to RON (default: SmartBill's rate for the date). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"series_name",
"client",
"products"
],
"properties": {
"draft": {
"type": "boolean",
"description": "Default TRUE: the document is saved as a draft without a number, to be finalized in SmartBill Cloud. Pass false ONLY when the user explicitly wants it ISSUED now: that takes the next number of the series, cannot be undone from the API, and may be transmitted to e-Factura / ANAF depending on the account setup."
},
"client": {
"type": "object",
"required": [
"name"
],
"properties": {
"bank": {
"type": "string",
"maxLength": 100
},
"city": {
"type": "string",
"maxLength": 100,
"description": "City. When county is Bucuresti this must be Sector 1 - Sector 6, or e-Factura will not validate in SPV."
},
"iban": {
"type": "string",
"maxLength": 50
},
"name": {
"type": "string",
"maxLength": 255,
"minLength": 1,
"description": "Client name (company or person)."
},
"email": {
"type": "string",
"maxLength": 254
},
"phone": {
"type": "string",
"maxLength": 50
},
"county": {
"type": "string",
"maxLength": 100,
"description": "County (or region/state for foreign clients)."
},
"address": {
"type": "string",
"maxLength": 255
},
"contact": {
"type": "string",
"maxLength": 100,
"description": "Contact person."
},
"country": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Country name or usual code (default Romania)."
},
"reg_com": {
"type": "string",
"maxLength": 50,
"description": "Trade register number."
},
"vat_code": {
"type": "string",
"maxLength": 30,
"description": "Client CUI/CIF or foreign VAT code."
},
"save_to_db": {
"type": "boolean",
"description": "Also save the client in the SmartBill client list when new (default false)."
},
"is_tax_payer": {
"type": "boolean",
"description": "Client is a VAT payer (default false: stored as non-payer)."
}
},
"description": "The client the document is issued to."
},
"currency": {
"enum": [
"RON",
"EUR",
"USD",
"GBP",
"CAD",
"AUD",
"CHF",
"TRY",
"CZK",
"DKK",
"HUF",
"MDL",
"SEK",
"NOK",
"JPY",
"EGP",
"PLN",
"RUB",
"AED",
"BRL",
"CNY",
"HRK",
"INR",
"KRW",
"MXN",
"NZD",
"RSD",
"THB",
"UAH",
"XDR",
"ZAR"
],
"type": "string",
"description": "Document currency (default RON)."
},
"due_date": {
"type": "string",
"description": "Due date yyyy-mm-dd."
},
"language": {
"enum": [
"RO",
"EN",
"DE",
"FR",
"IT",
"ES"
],
"type": "string",
"description": "Document language (default RO)."
},
"mentions": {
"type": "string",
"maxLength": 2000,
"description": "Mentions shown on the document."
},
"products": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"quantity",
"unit",
"price",
"tax_percentage"
],
"properties": {
"code": {
"type": "string",
"maxLength": 100,
"description": "Product code (SKU); required when the account has \"use product code\" enabled."
},
"name": {
"type": "string",
"maxLength": 255,
"minLength": 1,
"description": "Product or service name."
},
"unit": {
"type": "string",
"maxLength": 50,
"minLength": 1,
"description": "Unit of measure as configured in SmartBill, e.g. buc, ora, kg."
},
"price": {
"type": "number",
"maximum": 1000000000000,
"minimum": 0,
"description": "Unit price: WITHOUT VAT unless is_tax_included is true."
},
"quantity": {
"type": "number",
"maximum": 1000000000,
"description": "Quantity, greater than 0 (the API itself accepts 0 and negatives; this server does not).",
"exclusiveMinimum": 0
},
"tax_name": {
"type": "string",
"maxLength": 100,
"description": "VAT rate name as in the account (smartbill_list_taxes), e.g. Normala."
},
"is_service": {
"type": "boolean",
"description": "True for a service."
},
"description": {
"type": "string",
"maxLength": 1000,
"description": "Extra description."
},
"tax_percentage": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "VAT percentage of the line, e.g. 21, 11, 0."
},
"is_tax_included": {
"type": "boolean",
"description": "The price already includes VAT (default false)."
}
}
},
"maxItems": 200,
"minItems": 1,
"description": "1-200 lines."
},
"issue_date": {
"type": "string",
"description": "Issue date yyyy-mm-dd (default today)."
},
"series_name": {
"type": "string",
"maxLength": 50,
"minLength": 1,
"description": "Document series name exactly as configured in SmartBill Cloud (smartbill_list_series lists them)."
},
"observations": {
"type": "string",
"maxLength": 2000,
"description": "Observations shown on the document."
},
"exchange_rate": {
"type": "number",
"maximum": 1000000,
"description": "Exchange rate to RON (default: SmartBill's rate for the date).",
"exclusiveMinimum": 0
}
}
}{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"invoices",
"type"
],
"properties": {
"text": {
"type": "string",
"maxLength": 500,
"description": "Description of the payment."
},
"type": {
"enum": [
"Chitanta",
"Card",
"Card online",
"CEC",
"Bilet ordin",
"Ordin plata",
"Mandat postal",
"Extras de cont",
"Ramburs",
"Alta incasare"
],
"type": "string",
"description": "Payment type. Chitanta = a numbered receipt (needs receipt_series); the others create no document."
},
"value": {
"type": "number",
"maximum": 1000000000000,
"description": "Partial amount, for a single invoice only; omit to collect the invoice's full amount.",
"exclusiveMinimum": 0
},
"is_cash": {
"type": "boolean",
"description": "Mark the collection as cash (typically for Chitanta)."
},
"invoices": {
"type": "array",
"items": {
"type": "object",
"required": [
"series_name",
"number"
],
"properties": {
"number": {
"type": "string",
"maxLength": 30,
"minLength": 1,
"description": "Document number as text, e.g. \"0025\" (keep leading zeros)."
},
"series_name": {
"type": "string",
"maxLength": 50,
"minLength": 1,
"description": "Document series name exactly as configured in SmartBill Cloud (smartbill_list_series lists them)."
}
}
},
"maxItems": 20,
"minItems": 1,
"description": "1-20 invoices the payment is for."
},
"issue_date": {
"type": "string",
"description": "Payment date yyyy-mm-dd (default today)."
},
"receipt_series": {
"type": "string",
"maxLength": 50,
"minLength": 1,
"description": "Receipt series; required for type Chitanta (smartbill_list_series with type c)."
}
}
}{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"type",
"series_name",
"number"
],
"properties": {
"cc": {
"type": "string",
"maxLength": 500,
"description": "CC addresses, comma separated."
},
"to": {
"type": "string",
"pattern": "^[^\\s@,;<>\"]+@[^\\s@,;<>\"]+\\.[^\\s@,;<>\"]+$",
"maxLength": 254,
"description": "Recipient (default: the client's email on the document)."
},
"bcc": {
"type": "string",
"maxLength": 500,
"description": "BCC addresses, comma separated."
},
"type": {
"enum": [
"factura",
"proforma"
],
"type": "string",
"description": "factura = invoice, proforma = proforma."
},
"number": {
"type": "string",
"maxLength": 30,
"minLength": 1,
"description": "Document number as text, e.g. \"0025\" (keep leading zeros)."
},
"subject": {
"type": "string",
"maxLength": 300,
"minLength": 1,
"description": "Email subject, plain text (default: the account template)."
},
"body_text": {
"type": "string",
"maxLength": 5000,
"minLength": 1,
"description": "Email body, plain text (default: the account template)."
},
"series_name": {
"type": "string",
"maxLength": 50,
"minLength": 1,
"description": "Document series name exactly as configured in SmartBill Cloud (smartbill_list_series lists them)."
}
}
}