curl --request POST \
--url https://api.partner.cubee.cz/api/v1/invoice-extraction \
--header 'Content-Type: multipart/form-data' \
--form file='@example-file'using RestSharp;
var options = new RestClientOptions("https://api.partner.cubee.cz/api/v1/invoice-extraction");
var client = new RestClient(options);
var request = new RestRequest("");
request.AlwaysMultipartFormData = true;
request.FormBoundary = "---011000010111000001101001";
request.AddFile("file", "example-file");
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
const form = new FormData();
form.append('file', '<string>');
const options = {method: 'POST'};
options.body = form;
fetch('https://api.partner.cubee.cz/api/v1/invoice-extraction', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.partner.cubee.cz/api/v1/invoice-extraction"
files = { "file": ("example-file", open("example-file", "rb")) }
response = requests.post(url, files=files)
print(response.text){
"fileName": "vyuctovani-elektrina.pdf",
"invoice": {
"meta": {
"supplierName": "Pražská energetika, a. s.",
"invoiceNumber": "2025000123",
"issueDate": "2025-09-05",
"billingPeriodFrom": "2025-08-01",
"billingPeriodTo": "2025-08-31",
"ean": "859182400000000123",
"customerName": "Jan Novák",
"supplyPointAddress": "Ukázková 123, 100 00 Praha",
"productName": "PRE PROUD PARTNER",
"contractEndDate": "2025-12-31",
"energyType": "electricity",
"invoiceDirection": "buy",
"currency": "CZK",
"customerType": "residential"
},
"distribution": {
"distributorKey": "CEZ",
"distributorKeySource": "explicit",
"distributionRate": "D45d",
"breakerSizeCode": "3x32",
"breakerAmps": 32,
"breakerPhases": 3,
"distributorFeeHighPerMWh": 721.45,
"distributorFeeLowPerMWh": 206,
"renewableEnergyFeePerMWh": 495,
"systemServicesFeePerMWh": 170.92,
"circuitBreakerMonthlyFeeCzkInvoice": 600
},
"buying": {
"buyingType": "FIX",
"monthlyFeeCzk": 109,
"fixedBuyPriceCzkPerMwh": 3590,
"fixedBuyPriceCzkPerMwhLowTariff": 3290,
"spotTraderFeePerMwh": null,
"spotTraderFeeType": null,
"vtKwh": 36,
"ntKwh": 504,
"totalKwh": 540,
"yearlyConsumptionKwhEstimated": null
},
"selling": {
"sellingType": null,
"monthlyFeeCzk": null,
"fixedSellPriceCzkPerMwh": null,
"spotTraderFeePerMwh": null,
"spotTraderFeeType": null,
"soldKwh": null
},
"observations": {
"buyAveragePricePerMwhVt": 5010,
"buyAveragePricePerMwhNt": 4190,
"buyTotalCzkNoVat": 3011.91,
"sellAveragePricePerMwh": null,
"sellTotalCzkNoVat": null,
"balanceDueCzkWithVat": 3644
},
"fieldConfidence": {
"supplier_name": 1,
"distributor_key": 1,
"distribution_rate": 1,
"breaker_size_code": 1,
"buying_type": 0.95,
"fixed_buy_price_czk_per_mwh": 1,
"distributor_fee_high_per_mwh": 1,
"distributor_fee_low_per_mwh": 1,
"monthly_fee_czk": 0.95
}
},
"warnings": []
}Extract invoice data
Extracts structured data from an uploaded energy invoice PDF (multipart/form-data, field file) —
the meta, distribution, buy/sell contract and observations the savings calculator consumes, plus any
non-fatal validation warnings. Every upload first passes a cheap pre-flight gate that rejects anything
that isn’t an energy invoice.
curl --request POST \
--url https://api.partner.cubee.cz/api/v1/invoice-extraction \
--header 'Content-Type: multipart/form-data' \
--form file='@example-file'using RestSharp;
var options = new RestClientOptions("https://api.partner.cubee.cz/api/v1/invoice-extraction");
var client = new RestClient(options);
var request = new RestRequest("");
request.AlwaysMultipartFormData = true;
request.FormBoundary = "---011000010111000001101001";
request.AddFile("file", "example-file");
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
const form = new FormData();
form.append('file', '<string>');
const options = {method: 'POST'};
options.body = form;
fetch('https://api.partner.cubee.cz/api/v1/invoice-extraction', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.partner.cubee.cz/api/v1/invoice-extraction"
files = { "file": ("example-file", open("example-file", "rb")) }
response = requests.post(url, files=files)
print(response.text){
"fileName": "vyuctovani-elektrina.pdf",
"invoice": {
"meta": {
"supplierName": "Pražská energetika, a. s.",
"invoiceNumber": "2025000123",
"issueDate": "2025-09-05",
"billingPeriodFrom": "2025-08-01",
"billingPeriodTo": "2025-08-31",
"ean": "859182400000000123",
"customerName": "Jan Novák",
"supplyPointAddress": "Ukázková 123, 100 00 Praha",
"productName": "PRE PROUD PARTNER",
"contractEndDate": "2025-12-31",
"energyType": "electricity",
"invoiceDirection": "buy",
"currency": "CZK",
"customerType": "residential"
},
"distribution": {
"distributorKey": "CEZ",
"distributorKeySource": "explicit",
"distributionRate": "D45d",
"breakerSizeCode": "3x32",
"breakerAmps": 32,
"breakerPhases": 3,
"distributorFeeHighPerMWh": 721.45,
"distributorFeeLowPerMWh": 206,
"renewableEnergyFeePerMWh": 495,
"systemServicesFeePerMWh": 170.92,
"circuitBreakerMonthlyFeeCzkInvoice": 600
},
"buying": {
"buyingType": "FIX",
"monthlyFeeCzk": 109,
"fixedBuyPriceCzkPerMwh": 3590,
"fixedBuyPriceCzkPerMwhLowTariff": 3290,
"spotTraderFeePerMwh": null,
"spotTraderFeeType": null,
"vtKwh": 36,
"ntKwh": 504,
"totalKwh": 540,
"yearlyConsumptionKwhEstimated": null
},
"selling": {
"sellingType": null,
"monthlyFeeCzk": null,
"fixedSellPriceCzkPerMwh": null,
"spotTraderFeePerMwh": null,
"spotTraderFeeType": null,
"soldKwh": null
},
"observations": {
"buyAveragePricePerMwhVt": 5010,
"buyAveragePricePerMwhNt": 4190,
"buyTotalCzkNoVat": 3011.91,
"sellAveragePricePerMwh": null,
"sellTotalCzkNoVat": null,
"balanceDueCzkWithVat": 3644
},
"fieldConfidence": {
"supplier_name": 1,
"distributor_key": 1,
"distribution_rate": 1,
"breaker_size_code": 1,
"buying_type": 0.95,
"fixed_buy_price_czk_per_mwh": 1,
"distributor_fee_high_per_mwh": 1,
"distributor_fee_low_per_mwh": 1,
"monthly_fee_czk": 0.95
}
},
"warnings": []
}Body
Response
OK
Successful result of extracting a Czech energy invoice PDF: the structured data the savings calculator consumes, plus any non-fatal validation warnings raised during extraction (arithmetic/structural checks).
Original file name of the uploaded invoice.
Structured data extracted from a single Czech energy invoice, consumed by the Cubee savings calculator.
Show child attributes
Show child attributes
Non-fatal warnings flagged during extraction (e.g. arithmetic mismatch, missing EAN). Empty when none.
Show child attributes
Show child attributes
Was this page helpful?