SmartBill MCP by usefulapi
Read SmartBill series, taxes, stock, clients and products; draft and issue invoices and estimates.
Should I use this
Quality & Safety
Findings (4)
- LOWin smartbill_get_invoice_payment_status
- LOWin smartbill_get_estimate_invoices
- LOWin smartbill_create_invoice_from_estimate
- LOWin smartbill_record_invoice_payment
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"smartbill": {
"url": "https://smartbill.usefulapi.io/mcp"
}
}
}Remote endpoints
https://smartbill.usefulapi.io/mcpstreamable-httpWhat it can do
Tool inventory
Tools (23)
🟢smartbill_list_series(type)
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.
Input Schema
{
"type": "object",
"properties": {
"type": {
"description": "f = invoices, p = proformas, c = receipts; omit for all.",
"type": "string",
"enum": [
"f",
"p",
"c"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢smartbill_list_taxes
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.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢smartbill_get_stock(date, warehouse_name, product_name, product_code)
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.
Input Schema
{
"type": "object",
"properties": {
"date": {
"type": "string",
"description": "Date yyyy-mm-dd the stock is read at."
},
"warehouse_name": {
"description": "Warehouse name, case-sensitive.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"product_name": {
"type": "string",
"minLength": 1,
"maxLength": 255
},
"product_code": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"required": [
"date"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢smartbill_get_invoice_payment_status(series_name, number)
Whether an invoice is paid and how much remains: invoiceTotalAmount, paidAmount, unpaidAmount and the paid flag. GET /invoice/paymentstatus.
Input Schema
{
"type": "object",
"properties": {
"series_name": {
"type": "string",
"minLength": 1,
"maxLength": 50,
"description": "Document series name exactly as configured in SmartBill Cloud (smartbill_list_series lists them)."
},
"number": {
"type": "string",
"minLength": 1,
"maxLength": 30,
"description": "Document number as text, e.g. \"0025\" (keep leading zeros)."
}
},
"required": [
"series_name",
"number"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢smartbill_get_estimate_invoices(series_name, number)
Whether a proforma was invoiced and the invoices (series, number) made from it. A draft invoice shows with an empty number. GET /estimate/invoices.
Input Schema
{
"type": "object",
"properties": {
"series_name": {
"type": "string",
"minLength": 1,
"maxLength": 50,
"description": "Proforma series name."
},
"number": {
"type": "string",
"minLength": 1,
"maxLength": 30,
"description": "Proforma number as text."
}
},
"required": [
"series_name",
"number"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢smartbill_list_clients(name, code, vat_code, limit, after, ...)
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.
Input Schema
{
"type": "object",
"properties": {
"name": {
"description": "Part of the client name.",
"type": "string",
"minLength": 1,
"maxLength": 255
},
"code": {
"description": "Exact internal client code (case-sensitive).",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"vat_code": {
"description": "Exact client CIF.",
"type": "string",
"minLength": 1,
"maxLength": 30
},
"limit": {
"description": "Results per page, 1-100 (default 20).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"after": {
"description": "Cursor: continue after this id (use next_args from the previous reply). Not together with before.",
"type": "string",
"pattern": "^[a-z]{2,5}_[A-Za-z0-9]{1,64}$"
},
"before": {
"description": "Cursor: go back before this id (use previous_args). Not together with after.",
"type": "string",
"pattern": "^[a-z]{2,5}_[A-Za-z0-9]{1,64}$"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢smartbill_get_client(id)
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}.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^cus_[A-Za-z0-9]{1,64}$",
"description": "The client id (cus_...), from the list tool."
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢smartbill_list_suppliers(name, code, vat_code, limit, after, ...)
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.
Input Schema
{
"type": "object",
"properties": {
"name": {
"description": "Part of the supplier name.",
"type": "string",
"minLength": 1,
"maxLength": 255
},
"code": {
"description": "Exact internal supplier code (case-sensitive).",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"vat_code": {
"description": "Exact supplier CIF.",
"type": "string",
"minLength": 1,
"maxLength": 30
},
"limit": {
"description": "Results per page, 1-100 (default 20).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"after": {
"description": "Cursor: continue after this id (use next_args from the previous reply). Not together with before.",
"type": "string",
"pattern": "^[a-z]{2,5}_[A-Za-z0-9]{1,64}$"
},
"before": {
"description": "Cursor: go back before this id (use previous_args). Not together with after.",
"type": "string",
"pattern": "^[a-z]{2,5}_[A-Za-z0-9]{1,64}$"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢smartbill_get_supplier(id)
One supplier by V3 id (sup_...). Needs the API V3 token. GET /v3/companies/{cif}/suppliers/{id}.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^sup_[A-Za-z0-9]{1,64}$",
"description": "The supplier id (sup_...), from the list tool."
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢smartbill_list_products(name, code, limit, after, before)
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.
Input Schema
{
"type": "object",
"properties": {
"name": {
"description": "A word of the product name.",
"type": "string",
"minLength": 1,
"maxLength": 255
},
"code": {
"description": "Exact product code (case-sensitive).",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"limit": {
"description": "Results per page, 1-100 (default 20).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"after": {
"description": "Cursor: continue after this id (use next_args from the previous reply). Not together with before.",
"type": "string",
"pattern": "^[a-z]{2,5}_[A-Za-z0-9]{1,64}$"
},
"before": {
"description": "Cursor: go back before this id (use previous_args). Not together with after.",
"type": "string",
"pattern": "^[a-z]{2,5}_[A-Za-z0-9]{1,64}$"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢smartbill_get_product(id)
One product or service by V3 id (prod_...). Needs the API V3 token. GET /v3/companies/{cif}/products/{id}.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^prod_[A-Za-z0-9]{1,64}$",
"description": "The product id (prod_...), from the list tool."
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢smartbill_list_warehouses(name, limit, after, before)
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.
Input Schema
{
"type": "object",
"properties": {
"name": {
"description": "Part of the warehouse name.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"limit": {
"description": "Results per page, 1-100 (default 20).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"after": {
"description": "Cursor: continue after this id (use next_args from the previous reply). Not together with before.",
"type": "string",
"pattern": "^[a-z]{2,5}_[A-Za-z0-9]{1,64}$"
},
"before": {
"description": "Cursor: go back before this id (use previous_args). Not together with after.",
"type": "string",
"pattern": "^[a-z]{2,5}_[A-Za-z0-9]{1,64}$"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢smartbill_list_vat_rates(name, percentage, limit, after, before)
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.
Input Schema
{
"type": "object",
"properties": {
"name": {
"description": "Part of the VAT rate name.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"percentage": {
"description": "Exact percentage.",
"type": "number",
"minimum": 0,
"maximum": 100
},
"limit": {
"description": "Results per page, 1-100 (default 20).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"after": {
"description": "Cursor: continue after this id (use next_args from the previous reply). Not together with before.",
"type": "string",
"pattern": "^[a-z]{2,5}_[A-Za-z0-9]{1,64}$"
},
"before": {
"description": "Cursor: go back before this id (use previous_args). Not together with after.",
"type": "string",
"pattern": "^[a-z]{2,5}_[A-Za-z0-9]{1,64}$"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴smartbill_create_invoice(series_name, client, products, currency, exchange_rate, ...)
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.
Input Schema
{
"type": "object",
"properties": {
"series_name": {
"type": "string",
"minLength": 1,
"maxLength": 50,
"description": "Document series name exactly as configured in SmartBill Cloud (smartbill_list_series lists them)."
},
"client": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 255,
"description": "Client name (company or person)."
},
"vat_code": {
"description": "Client CUI/CIF or foreign VAT code.",
"type": "string",
"maxLength": 30
},
"is_tax_payer": {
"description": "Client is a VAT payer (default false: stored as non-payer).",
"type": "boolean"
},
"reg_com": {
"description": "Trade register number.",
"type": "string",
"maxLength": 50
},
"address": {
"type": "string",
"maxLength": 255
},
"city": {
"description": "City. When county is Bucuresti this must be Sector 1 - Sector 6, or e-Factura will not validate in SPV.",
"type": "string",
"maxLength": 100
},
"county": {
"description": "County (or region/state for foreign clients).",
"type": "string",
"maxLength": 100
},
"country": {
"description": "Country name or usual code (default Romania).",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"email": {
"type": "string",
"maxLength": 254
},
"phone": {
"type": "string",
"maxLength": 50
},
"contact": {
"description": "Contact person.",
"type": "string",
"maxLength": 100
},
"iban": {
"type": "string",
"maxLength": 50
},
"bank": {
"type": "string",
"maxLength": 100
},
"save_to_db": {
"description": "Also save the client in the SmartBill client list when new (default false).",
"type": "boolean"
}
},
"required": [
"name"
],
"description": "The client the document is issued to."
},
"products": {
"minItems": 1,
"maxItems": 200,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 255,
"description": "Product or service name."
},
"code": {
"description": "Product code (SKU); required when the account has \"use product code\" enabled.",
"type": "string",
"maxLength": 100
},
"description": {
"description": "Extra description.",
"type": "string",
"maxLength": 1000
},
"is_service": {
"description": "True for a service.",
"type": "boolean"
},
"quantity": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 1000000000,
"description": "Quantity, greater than 0 (the API itself accepts 0 and negatives; this server does not)."
},
"unit": {
"type": "string",
"minLength": 1,
"maxLength": 50,
"description": "Unit of measure as configured in SmartBill, e.g. buc, ora, kg."
},
"price": {
"type": "number",
"minimum": 0,
"maximum": 1000000000000,
"description": "Unit price: WITHOUT VAT unless is_tax_included is true."
},
"is_tax_included": {
"description": "The price already includes VAT (default false).",
"type": "boolean"
},
"tax_name": {
"description": "VAT rate name as in the account (smartbill_list_taxes), e.g. Normala.",
"type": "string",
"maxLength": 100
},
"tax_percentage": {
"type": "number",
"minimum": 0,
"maximum": 100,
"description": "VAT percentage of the line, e.g. 21, 11, 0."
}
},
"required": [
"name",
"quantity",
"unit",
"price",
"tax_percentage"
]
},
"description": "1-200 lines."
},
"currency": {
"description": "Document currency (default RON).",
"type": "string",
"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"
]
},
"exchange_rate": {
"description": "Exchange rate to RON (default: SmartBill's rate for the date).",
"type": "number",
"exclusiveMinimum": 0,
"maximum": 1000000
},
"issue_date": {
"description": "Issue date yyyy-mm-dd (default today).",
"type": "string"
},
"due_date": {
"description": "Due date yyyy-mm-dd.",
"type": "string"
},
"language": {
"description": "Document language (default RO).",
"type": "string",
"enum": [
"RO",
"EN",
"DE",
"FR",
"IT",
"ES"
]
},
"observations": {
"description": "Observations shown on the document.",
"type": "string",
"maxLength": 2000
},
"mentions": {
"description": "Mentions shown on the document.",
"type": "string",
"maxLength": 2000
},
"draft": {
"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.",
"type": "boolean"
}
},
"required": [
"series_name",
"client",
"products"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴smartbill_create_invoice_from_estimate(series_name, estimate_series, estimate_number, issue_date, draft)
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).
Input Schema
{
"type": "object",
"properties": {
"series_name": {
"type": "string",
"minLength": 1,
"maxLength": 50,
"description": "Invoice series to issue on."
},
"estimate_series": {
"type": "string",
"minLength": 1,
"maxLength": 50,
"description": "Series of the source proforma."
},
"estimate_number": {
"type": "string",
"minLength": 1,
"maxLength": 30,
"description": "Number of the source proforma as text."
},
"issue_date": {
"description": "Issue date yyyy-mm-dd (default today).",
"type": "string"
},
"draft": {
"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.",
"type": "boolean"
}
},
"required": [
"series_name",
"estimate_series",
"estimate_number"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴smartbill_create_estimate(series_name, client, products, currency, exchange_rate, ...)
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.
Input Schema
{
"type": "object",
"properties": {
"series_name": {
"type": "string",
"minLength": 1,
"maxLength": 50,
"description": "Document series name exactly as configured in SmartBill Cloud (smartbill_list_series lists them)."
},
"client": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 255,
"description": "Client name (company or person)."
},
"vat_code": {
"description": "Client CUI/CIF or foreign VAT code.",
"type": "string",
"maxLength": 30
},
"is_tax_payer": {
"description": "Client is a VAT payer (default false: stored as non-payer).",
"type": "boolean"
},
"reg_com": {
"description": "Trade register number.",
"type": "string",
"maxLength": 50
},
"address": {
"type": "string",
"maxLength": 255
},
"city": {
"description": "City. When county is Bucuresti this must be Sector 1 - Sector 6, or e-Factura will not validate in SPV.",
"type": "string",
"maxLength": 100
},
"county": {
"description": "County (or region/state for foreign clients).",
"type": "string",
"maxLength": 100
},
"country": {
"description": "Country name or usual code (default Romania).",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"email": {
"type": "string",
"maxLength": 254
},
"phone": {
"type": "string",
"maxLength": 50
},
"contact": {
"description": "Contact person.",
"type": "string",
"maxLength": 100
},
"iban": {
"type": "string",
"maxLength": 50
},
"bank": {
"type": "string",
"maxLength": 100
},
"save_to_db": {
"description": "Also save the client in the SmartBill client list when new (default false).",
"type": "boolean"
}
},
"required": [
"name"
],
"description": "The client the document is issued to."
},
"products": {
"minItems": 1,
"maxItems": 200,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 255,
"description": "Product or service name."
},
"code": {
"description": "Product code (SKU); required when the account has \"use product code\" enabled.",
"type": "string",
"maxLength": 100
},
"description": {
"description": "Extra description.",
"type": "string",
"maxLength": 1000
},
"is_service": {
"description": "True for a service.",
"type": "boolean"
},
"quantity": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 1000000000,
"description": "Quantity, greater than 0 (the API itself accepts 0 and negatives; this server does not)."
},
"unit": {
"type": "string",
"minLength": 1,
"maxLength": 50,
"description": "Unit of measure as configured in SmartBill, e.g. buc, ora, kg."
},
"price": {
"type": "number",
"minimum": 0,
"maximum": 1000000000000,
"description": "Unit price: WITHOUT VAT unless is_tax_included is true."
},
"is_tax_included": {
"description": "The price already includes VAT (default false).",
"type": "boolean"
},
"tax_name": {
"description": "VAT rate name as in the account (smartbill_list_taxes), e.g. Normala.",
"type": "string",
"maxLength": 100
},
"tax_percentage": {
"type": "number",
"minimum": 0,
"maximum": 100,
"description": "VAT percentage of the line, e.g. 21, 11, 0."
}
},
"required": [
"name",
"quantity",
"unit",
"price",
"tax_percentage"
]
},
"description": "1-200 lines."
},
"currency": {
"description": "Document currency (default RON).",
"type": "string",
"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"
]
},
"exchange_rate": {
"description": "Exchange rate to RON (default: SmartBill's rate for the date).",
"type": "number",
"exclusiveMinimum": 0,
"maximum": 1000000
},
"issue_date": {
"description": "Issue date yyyy-mm-dd (default today).",
"type": "string"
},
"due_date": {
"description": "Due date yyyy-mm-dd.",
"type": "string"
},
"language": {
"description": "Document language (default RO).",
"type": "string",
"enum": [
"RO",
"EN",
"DE",
"FR",
"IT",
"ES"
]
},
"observations": {
"description": "Observations shown on the document.",
"type": "string",
"maxLength": 2000
},
"mentions": {
"description": "Mentions shown on the document.",
"type": "string",
"maxLength": 2000
},
"draft": {
"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.",
"type": "boolean"
}
},
"required": [
"series_name",
"client",
"products"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴smartbill_reverse_invoice(series_name, number, issue_date)
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.
Input Schema
{
"type": "object",
"properties": {
"series_name": {
"type": "string",
"minLength": 1,
"maxLength": 50,
"description": "Series of the invoice to reverse."
},
"number": {
"type": "string",
"minLength": 1,
"maxLength": 30,
"description": "Number of the invoice to reverse, as text."
},
"issue_date": {
"description": "Date of the storno invoice yyyy-mm-dd (default today; not before the original's date).",
"type": "string"
}
},
"required": [
"series_name",
"number"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴smartbill_cancel_invoice(series_name, number)
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.
Input Schema
{
"type": "object",
"properties": {
"series_name": {
"type": "string",
"minLength": 1,
"maxLength": 50,
"description": "Document series name exactly as configured in SmartBill Cloud (smartbill_list_series lists them)."
},
"number": {
"type": "string",
"minLength": 1,
"maxLength": 30,
"description": "Document number as text, e.g. \"0025\" (keep leading zeros)."
}
},
"required": [
"series_name",
"number"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴smartbill_restore_invoice(series_name, number)
Restore an invoice that was cancelled, making it active again. PUT /invoice/restore.
Input Schema
{
"type": "object",
"properties": {
"series_name": {
"type": "string",
"minLength": 1,
"maxLength": 50,
"description": "Document series name exactly as configured in SmartBill Cloud (smartbill_list_series lists them)."
},
"number": {
"type": "string",
"minLength": 1,
"maxLength": 30,
"description": "Document number as text, e.g. \"0025\" (keep leading zeros)."
}
},
"required": [
"series_name",
"number"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴smartbill_cancel_estimate(series_name, number)
Cancel an existing proforma (smartbill_restore_estimate undoes it). PUT /estimate/cancel.
Input Schema
{
"type": "object",
"properties": {
"series_name": {
"type": "string",
"minLength": 1,
"maxLength": 50,
"description": "Proforma series name."
},
"number": {
"type": "string",
"minLength": 1,
"maxLength": 30,
"description": "Proforma number as text."
}
},
"required": [
"series_name",
"number"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴smartbill_restore_estimate(series_name, number)
Restore a proforma that was cancelled. PUT /estimate/restore.
Input Schema
{
"type": "object",
"properties": {
"series_name": {
"type": "string",
"minLength": 1,
"maxLength": 50,
"description": "Proforma series name."
},
"number": {
"type": "string",
"minLength": 1,
"maxLength": 30,
"description": "Proforma number as text."
}
},
"required": [
"series_name",
"number"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴smartbill_record_invoice_payment(invoices, type, receipt_series, value, issue_date, ...)
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.
Input Schema
{
"type": "object",
"properties": {
"invoices": {
"minItems": 1,
"maxItems": 20,
"type": "array",
"items": {
"type": "object",
"properties": {
"series_name": {
"type": "string",
"minLength": 1,
"maxLength": 50,
"description": "Document series name exactly as configured in SmartBill Cloud (smartbill_list_series lists them)."
},
"number": {
"type": "string",
"minLength": 1,
"maxLength": 30,
"description": "Document number as text, e.g. \"0025\" (keep leading zeros)."
}
},
"required": [
"series_name",
"number"
]
},
"description": "1-20 invoices the payment is for."
},
"type": {
"type": "string",
"enum": [
"Chitanta",
"Card",
"Card online",
"CEC",
"Bilet ordin",
"Ordin plata",
"Mandat postal",
"Extras de cont",
"Ramburs",
"Alta incasare"
],
"description": "Payment type. Chitanta = a numbered receipt (needs receipt_series); the others create no document."
},
"receipt_series": {
"description": "Receipt series; required for type Chitanta (smartbill_list_series with type c).",
"type": "string",
"minLength": 1,
"maxLength": 50
},
"value": {
"description": "Partial amount, for a single invoice only; omit to collect the invoice's full amount.",
"type": "number",
"exclusiveMinimum": 0,
"maximum": 1000000000000
},
"issue_date": {
"description": "Payment date yyyy-mm-dd (default today).",
"type": "string"
},
"is_cash": {
"description": "Mark the collection as cash (typically for Chitanta).",
"type": "boolean"
},
"text": {
"description": "Description of the payment.",
"type": "string",
"maxLength": 500
}
},
"required": [
"invoices",
"type"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴smartbill_send_document(type, series_name, number, to, cc, ...)
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.
Input Schema
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"factura",
"proforma"
],
"description": "factura = invoice, proforma = proforma."
},
"series_name": {
"type": "string",
"minLength": 1,
"maxLength": 50,
"description": "Document series name exactly as configured in SmartBill Cloud (smartbill_list_series lists them)."
},
"number": {
"type": "string",
"minLength": 1,
"maxLength": 30,
"description": "Document number as text, e.g. \"0025\" (keep leading zeros)."
},
"to": {
"description": "Recipient (default: the client's email on the document).",
"type": "string",
"maxLength": 254,
"pattern": "^[^\\s@,;<>\"]+@[^\\s@,;<>\"]+\\.[^\\s@,;<>\"]+$"
},
"cc": {
"description": "CC addresses, comma separated.",
"type": "string",
"maxLength": 500
},
"bcc": {
"description": "BCC addresses, comma separated.",
"type": "string",
"maxLength": 500
},
"subject": {
"description": "Email subject, plain text (default: the account template).",
"type": "string",
"minLength": 1,
"maxLength": 300
},
"body_text": {
"description": "Email body, plain text (default: the account template).",
"type": "string",
"minLength": 1,
"maxLength": 5000
}
},
"required": [
"type",
"series_name",
"number"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Community
Evidence