curl --request PUT \
--url https://api.contazen.ro/v1/invoices/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"date_at": "<string>",
"due_at": "<string>",
"info": "<string>",
"client_id": "<string>",
"currency": "<string>",
"exchange_rate": 123,
"series_id": "<string>",
"items": [
{
"description": "<string>",
"quantity": 123,
"price": 123,
"id": 123,
"product_id": "<string>",
"description_extended": "<string>",
"vat_rate": 19,
"vat_key": 123,
"unit": "buc",
"ubl_um": "H87",
"ubl_nc": "<string>",
"ubl_cpv": "<string>",
"subtotal": 123,
"vat_amount": 123,
"total": 123,
"save_as_product": true
}
]
}
'import requests
url = "https://api.contazen.ro/v1/invoices/{id}"
payload = {
"date_at": "<string>",
"due_at": "<string>",
"info": "<string>",
"client_id": "<string>",
"currency": "<string>",
"exchange_rate": 123,
"series_id": "<string>",
"items": [
{
"description": "<string>",
"quantity": 123,
"price": 123,
"id": 123,
"product_id": "<string>",
"description_extended": "<string>",
"vat_rate": 19,
"vat_key": 123,
"unit": "buc",
"ubl_um": "H87",
"ubl_nc": "<string>",
"ubl_cpv": "<string>",
"subtotal": 123,
"vat_amount": 123,
"total": 123,
"save_as_product": True
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
date_at: '<string>',
due_at: '<string>',
info: '<string>',
client_id: '<string>',
currency: '<string>',
exchange_rate: 123,
series_id: '<string>',
items: [
{
description: '<string>',
quantity: 123,
price: 123,
id: 123,
product_id: '<string>',
description_extended: '<string>',
vat_rate: 19,
vat_key: 123,
unit: 'buc',
ubl_um: 'H87',
ubl_nc: '<string>',
ubl_cpv: '<string>',
subtotal: 123,
vat_amount: 123,
total: 123,
save_as_product: true
}
]
})
};
fetch('https://api.contazen.ro/v1/invoices/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.contazen.ro/v1/invoices/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'date_at' => '<string>',
'due_at' => '<string>',
'info' => '<string>',
'client_id' => '<string>',
'currency' => '<string>',
'exchange_rate' => 123,
'series_id' => '<string>',
'items' => [
[
'description' => '<string>',
'quantity' => 123,
'price' => 123,
'id' => 123,
'product_id' => '<string>',
'description_extended' => '<string>',
'vat_rate' => 19,
'vat_key' => 123,
'unit' => 'buc',
'ubl_um' => 'H87',
'ubl_nc' => '<string>',
'ubl_cpv' => '<string>',
'subtotal' => 123,
'vat_amount' => 123,
'total' => 123,
'save_as_product' => true
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.contazen.ro/v1/invoices/{id}"
payload := strings.NewReader("{\n \"date_at\": \"<string>\",\n \"due_at\": \"<string>\",\n \"info\": \"<string>\",\n \"client_id\": \"<string>\",\n \"currency\": \"<string>\",\n \"exchange_rate\": 123,\n \"series_id\": \"<string>\",\n \"items\": [\n {\n \"description\": \"<string>\",\n \"quantity\": 123,\n \"price\": 123,\n \"id\": 123,\n \"product_id\": \"<string>\",\n \"description_extended\": \"<string>\",\n \"vat_rate\": 19,\n \"vat_key\": 123,\n \"unit\": \"buc\",\n \"ubl_um\": \"H87\",\n \"ubl_nc\": \"<string>\",\n \"ubl_cpv\": \"<string>\",\n \"subtotal\": 123,\n \"vat_amount\": 123,\n \"total\": 123,\n \"save_as_product\": true\n }\n ]\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://api.contazen.ro/v1/invoices/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"date_at\": \"<string>\",\n \"due_at\": \"<string>\",\n \"info\": \"<string>\",\n \"client_id\": \"<string>\",\n \"currency\": \"<string>\",\n \"exchange_rate\": 123,\n \"series_id\": \"<string>\",\n \"items\": [\n {\n \"description\": \"<string>\",\n \"quantity\": 123,\n \"price\": 123,\n \"id\": 123,\n \"product_id\": \"<string>\",\n \"description_extended\": \"<string>\",\n \"vat_rate\": 19,\n \"vat_key\": 123,\n \"unit\": \"buc\",\n \"ubl_um\": \"H87\",\n \"ubl_nc\": \"<string>\",\n \"ubl_cpv\": \"<string>\",\n \"subtotal\": 123,\n \"vat_amount\": 123,\n \"total\": 123,\n \"save_as_product\": true\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.contazen.ro/v1/invoices/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"date_at\": \"<string>\",\n \"due_at\": \"<string>\",\n \"info\": \"<string>\",\n \"client_id\": \"<string>\",\n \"currency\": \"<string>\",\n \"exchange_rate\": 123,\n \"series_id\": \"<string>\",\n \"items\": [\n {\n \"description\": \"<string>\",\n \"quantity\": 123,\n \"price\": 123,\n \"id\": 123,\n \"product_id\": \"<string>\",\n \"description_extended\": \"<string>\",\n \"vat_rate\": 19,\n \"vat_key\": 123,\n \"unit\": \"buc\",\n \"ubl_um\": \"H87\",\n \"ubl_nc\": \"<string>\",\n \"ubl_cpv\": \"<string>\",\n \"subtotal\": 123,\n \"vat_amount\": 123,\n \"total\": 123,\n \"save_as_product\": true\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"id": "inv_1a2b3c4d5e",
"object": "invoice",
"number": "<string>",
"series": "<string>",
"date": "2023-12-25",
"total": 123,
"full_number": "<string>",
"due_date": "2023-12-25",
"client_id": "<string>",
"client": {
"id": "cli_1a2b3c4d5e",
"object": "client",
"name": "<string>",
"email": "jsmith@example.com",
"phone": "<string>",
"cui": "<string>",
"cui_prefix": "<string>",
"rc": "<string>",
"address": "<string>",
"city": "<string>",
"county": "<string>",
"country": "<string>",
"postal_code": "<string>",
"iban": "<string>",
"bank": "<string>",
"contact_person": "<string>",
"created_at": 123,
"updated_at": 123,
"metadata": {
"invoices_count": 123,
"total_invoiced": 123,
"unpaid_total": 123
},
"stats": {
"total_invoiced": 123,
"total_collected": 123,
"avg_payment_days": 123,
"last_payment": {
"date": 123,
"amount": 123,
"currency": "<string>",
"bill_id": "<string>",
"bill_number": "<string>"
},
"monthly_series": [
{
"label": "Mar 2026",
"year": 123,
"month": 123,
"invoiced": 123,
"collected": 123
}
]
}
},
"currency": "RON",
"exchange_rate": 123,
"subtotal": 123,
"vat_amount": 123,
"subtotal_ron": 123,
"vat_amount_ron": 123,
"total_ron": 123,
"items": [
{
"description": "<string>",
"quantity": 123,
"price": 123,
"id": 123,
"product_id": "<string>",
"description_extended": "<string>",
"vat_rate": 19,
"vat_key": 123,
"unit": "buc",
"ubl_um": "H87",
"ubl_nc": "<string>",
"ubl_cpv": "<string>",
"subtotal": 123,
"vat_amount": 123,
"total": 123,
"save_as_product": true
}
],
"payments": [
{
"id": "<string>",
"object": "payment",
"amount": 123,
"currency": "<string>",
"date": "2023-12-25",
"type_description": "<string>",
"reference": "<string>",
"invoice": {
"id": "<string>",
"number": "<string>",
"total": 123,
"currency": "<string>"
},
"receipt": {
"id": "<string>",
"number": "<string>"
},
"client": {
"id": "<string>",
"name": "<string>"
},
"created_at": 123
}
],
"is_paid": true,
"paid_at": "2023-12-25",
"is_void": true,
"voided_at": "2023-11-07T05:31:56Z",
"void_reason": "<string>",
"is_draft": true,
"is_storno": true,
"storno_for": "<string>",
"payment_method": "<string>",
"notes": "<string>",
"observations": "<string>",
"efactura_enabled": true,
"efactura_submission_id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"modified_at": "2023-11-07T05:31:56Z"
},
"meta": {
"version": "v1",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"response_time": "23.45ms"
}
}{
"success": false,
"error": {
"message": "<string>",
"code": "<string>",
"param": "<string>",
"doc_url": "<string>"
},
"meta": {
"version": "v1",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"response_time": "23.45ms"
}
}{
"success": false,
"error": {
"message": "<string>",
"code": "<string>",
"param": "<string>",
"doc_url": "<string>"
},
"meta": {
"version": "v1",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"response_time": "23.45ms"
}
}{
"success": false,
"error": {
"message": "<string>",
"code": "<string>",
"param": "<string>",
"doc_url": "<string>"
},
"meta": {
"version": "v1",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"response_time": "23.45ms"
}
}Update Invoice
Update header-level fields on an existing invoice.
curl --request PUT \
--url https://api.contazen.ro/v1/invoices/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"date_at": "<string>",
"due_at": "<string>",
"info": "<string>",
"client_id": "<string>",
"currency": "<string>",
"exchange_rate": 123,
"series_id": "<string>",
"items": [
{
"description": "<string>",
"quantity": 123,
"price": 123,
"id": 123,
"product_id": "<string>",
"description_extended": "<string>",
"vat_rate": 19,
"vat_key": 123,
"unit": "buc",
"ubl_um": "H87",
"ubl_nc": "<string>",
"ubl_cpv": "<string>",
"subtotal": 123,
"vat_amount": 123,
"total": 123,
"save_as_product": true
}
]
}
'import requests
url = "https://api.contazen.ro/v1/invoices/{id}"
payload = {
"date_at": "<string>",
"due_at": "<string>",
"info": "<string>",
"client_id": "<string>",
"currency": "<string>",
"exchange_rate": 123,
"series_id": "<string>",
"items": [
{
"description": "<string>",
"quantity": 123,
"price": 123,
"id": 123,
"product_id": "<string>",
"description_extended": "<string>",
"vat_rate": 19,
"vat_key": 123,
"unit": "buc",
"ubl_um": "H87",
"ubl_nc": "<string>",
"ubl_cpv": "<string>",
"subtotal": 123,
"vat_amount": 123,
"total": 123,
"save_as_product": True
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
date_at: '<string>',
due_at: '<string>',
info: '<string>',
client_id: '<string>',
currency: '<string>',
exchange_rate: 123,
series_id: '<string>',
items: [
{
description: '<string>',
quantity: 123,
price: 123,
id: 123,
product_id: '<string>',
description_extended: '<string>',
vat_rate: 19,
vat_key: 123,
unit: 'buc',
ubl_um: 'H87',
ubl_nc: '<string>',
ubl_cpv: '<string>',
subtotal: 123,
vat_amount: 123,
total: 123,
save_as_product: true
}
]
})
};
fetch('https://api.contazen.ro/v1/invoices/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.contazen.ro/v1/invoices/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'date_at' => '<string>',
'due_at' => '<string>',
'info' => '<string>',
'client_id' => '<string>',
'currency' => '<string>',
'exchange_rate' => 123,
'series_id' => '<string>',
'items' => [
[
'description' => '<string>',
'quantity' => 123,
'price' => 123,
'id' => 123,
'product_id' => '<string>',
'description_extended' => '<string>',
'vat_rate' => 19,
'vat_key' => 123,
'unit' => 'buc',
'ubl_um' => 'H87',
'ubl_nc' => '<string>',
'ubl_cpv' => '<string>',
'subtotal' => 123,
'vat_amount' => 123,
'total' => 123,
'save_as_product' => true
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.contazen.ro/v1/invoices/{id}"
payload := strings.NewReader("{\n \"date_at\": \"<string>\",\n \"due_at\": \"<string>\",\n \"info\": \"<string>\",\n \"client_id\": \"<string>\",\n \"currency\": \"<string>\",\n \"exchange_rate\": 123,\n \"series_id\": \"<string>\",\n \"items\": [\n {\n \"description\": \"<string>\",\n \"quantity\": 123,\n \"price\": 123,\n \"id\": 123,\n \"product_id\": \"<string>\",\n \"description_extended\": \"<string>\",\n \"vat_rate\": 19,\n \"vat_key\": 123,\n \"unit\": \"buc\",\n \"ubl_um\": \"H87\",\n \"ubl_nc\": \"<string>\",\n \"ubl_cpv\": \"<string>\",\n \"subtotal\": 123,\n \"vat_amount\": 123,\n \"total\": 123,\n \"save_as_product\": true\n }\n ]\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://api.contazen.ro/v1/invoices/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"date_at\": \"<string>\",\n \"due_at\": \"<string>\",\n \"info\": \"<string>\",\n \"client_id\": \"<string>\",\n \"currency\": \"<string>\",\n \"exchange_rate\": 123,\n \"series_id\": \"<string>\",\n \"items\": [\n {\n \"description\": \"<string>\",\n \"quantity\": 123,\n \"price\": 123,\n \"id\": 123,\n \"product_id\": \"<string>\",\n \"description_extended\": \"<string>\",\n \"vat_rate\": 19,\n \"vat_key\": 123,\n \"unit\": \"buc\",\n \"ubl_um\": \"H87\",\n \"ubl_nc\": \"<string>\",\n \"ubl_cpv\": \"<string>\",\n \"subtotal\": 123,\n \"vat_amount\": 123,\n \"total\": 123,\n \"save_as_product\": true\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.contazen.ro/v1/invoices/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"date_at\": \"<string>\",\n \"due_at\": \"<string>\",\n \"info\": \"<string>\",\n \"client_id\": \"<string>\",\n \"currency\": \"<string>\",\n \"exchange_rate\": 123,\n \"series_id\": \"<string>\",\n \"items\": [\n {\n \"description\": \"<string>\",\n \"quantity\": 123,\n \"price\": 123,\n \"id\": 123,\n \"product_id\": \"<string>\",\n \"description_extended\": \"<string>\",\n \"vat_rate\": 19,\n \"vat_key\": 123,\n \"unit\": \"buc\",\n \"ubl_um\": \"H87\",\n \"ubl_nc\": \"<string>\",\n \"ubl_cpv\": \"<string>\",\n \"subtotal\": 123,\n \"vat_amount\": 123,\n \"total\": 123,\n \"save_as_product\": true\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"id": "inv_1a2b3c4d5e",
"object": "invoice",
"number": "<string>",
"series": "<string>",
"date": "2023-12-25",
"total": 123,
"full_number": "<string>",
"due_date": "2023-12-25",
"client_id": "<string>",
"client": {
"id": "cli_1a2b3c4d5e",
"object": "client",
"name": "<string>",
"email": "jsmith@example.com",
"phone": "<string>",
"cui": "<string>",
"cui_prefix": "<string>",
"rc": "<string>",
"address": "<string>",
"city": "<string>",
"county": "<string>",
"country": "<string>",
"postal_code": "<string>",
"iban": "<string>",
"bank": "<string>",
"contact_person": "<string>",
"created_at": 123,
"updated_at": 123,
"metadata": {
"invoices_count": 123,
"total_invoiced": 123,
"unpaid_total": 123
},
"stats": {
"total_invoiced": 123,
"total_collected": 123,
"avg_payment_days": 123,
"last_payment": {
"date": 123,
"amount": 123,
"currency": "<string>",
"bill_id": "<string>",
"bill_number": "<string>"
},
"monthly_series": [
{
"label": "Mar 2026",
"year": 123,
"month": 123,
"invoiced": 123,
"collected": 123
}
]
}
},
"currency": "RON",
"exchange_rate": 123,
"subtotal": 123,
"vat_amount": 123,
"subtotal_ron": 123,
"vat_amount_ron": 123,
"total_ron": 123,
"items": [
{
"description": "<string>",
"quantity": 123,
"price": 123,
"id": 123,
"product_id": "<string>",
"description_extended": "<string>",
"vat_rate": 19,
"vat_key": 123,
"unit": "buc",
"ubl_um": "H87",
"ubl_nc": "<string>",
"ubl_cpv": "<string>",
"subtotal": 123,
"vat_amount": 123,
"total": 123,
"save_as_product": true
}
],
"payments": [
{
"id": "<string>",
"object": "payment",
"amount": 123,
"currency": "<string>",
"date": "2023-12-25",
"type_description": "<string>",
"reference": "<string>",
"invoice": {
"id": "<string>",
"number": "<string>",
"total": 123,
"currency": "<string>"
},
"receipt": {
"id": "<string>",
"number": "<string>"
},
"client": {
"id": "<string>",
"name": "<string>"
},
"created_at": 123
}
],
"is_paid": true,
"paid_at": "2023-12-25",
"is_void": true,
"voided_at": "2023-11-07T05:31:56Z",
"void_reason": "<string>",
"is_draft": true,
"is_storno": true,
"storno_for": "<string>",
"payment_method": "<string>",
"notes": "<string>",
"observations": "<string>",
"efactura_enabled": true,
"efactura_submission_id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"modified_at": "2023-11-07T05:31:56Z"
},
"meta": {
"version": "v1",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"response_time": "23.45ms"
}
}{
"success": false,
"error": {
"message": "<string>",
"code": "<string>",
"param": "<string>",
"doc_url": "<string>"
},
"meta": {
"version": "v1",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"response_time": "23.45ms"
}
}{
"success": false,
"error": {
"message": "<string>",
"code": "<string>",
"param": "<string>",
"doc_url": "<string>"
},
"meta": {
"version": "v1",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"response_time": "23.45ms"
}
}{
"success": false,
"error": {
"message": "<string>",
"code": "<string>",
"param": "<string>",
"doc_url": "<string>"
},
"meta": {
"version": "v1",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"response_time": "23.45ms"
}
}Overview
The update endpoint intentionally has a narrow scope: it accepts only header fields plus an optional full-item rewrite. It does not support spot-editing a single line — send the wholeitems array if you need to
change one row.
If you need a structural change to a fiscal invoice (different client,
wholesale repricing, etc.), issue POST /invoices/{id}/storno followed by a
fresh POST /invoices rather than mutating the original.
Legacy field aliases
Several request fields have aliases that remain accepted for backwards compatibility. New integrations should prefer the canonical names:| Canonical | Legacy aliases |
|---|---|
info | observation, notes |
date_at | date |
due_at | due_date |
Row-level totals are derived, not accepted
Row objects insideitems[] must not carry price_total or
account_amount_total — send the components (quantity, price,
vat_rate) and the server recomputes both. Sending totals directly used to
work in earlier builds and has been a silent source of rounding drift; the
fields are now ignored.
Exchange-rate handling
Whencurrency is RON, currency_rate is forced to 1.000 regardless
of what you send. For non-RON invoices, a positive exchange_rate
propagates into every account_amount_* field on both the invoice header
and its rows — so the RON-equivalent totals stay consistent with the
foreign-currency totals shown on the PDF.
Edit locks
Four conditions block an edit:400 invoice_is_storno— the row is itself a reversal.400 invoice_already_storned— the row has been reversed.400 invoice_is_paid— paid invoice cannot have totals changed (non-total fields likeinfoanddue_atstill work).403 invoice_locked_efactura— ANAF has accepted or validated the invoice via SPV. The error payload includesefactura_status.
PUT and PATCH are interchangeable — both route to the same handler.Authorizations
Use your API key (sk_live_xxx or sk_test_xxx)
Path Parameters
Invoice CzUid
Body
ISO date or unix timestamp. Alias - date.
ISO date or unix timestamp. Pass empty/null to clear. Alias - due_date.
Free-text notes shown on the PDF. Accepted aliases - observation, notes.
CzUid of an existing firm client; rebinds the invoice to that client's current snapshot.
ISO-4217 code. Passing RON resets currency_rate to 1.
Positive FX rate. Ignored for RON invoices. Overrides currency_rate and propagates to all account_amount_* fields.
CzUid (or numeric PK) of a firm_number series owned by the firm. Only used when actually switching series.
Replace the whole line-items array. Each row accepts
description, quantity, price, vat_rate,
unit, product_czuid, um_id etc. Row-level
price_total and account_amount_total are not
accepted — they are recomputed from the components.
Show child attributes
Show child attributes
Was this page helpful?