POST https://api.fire.rest/api/v1/fire/external/printing/stores/550e8400-e29b-41d4-a716-446655440000/days/2026-05-25
x-api-key: <your_api_key>
Content-Type: application/json
{
"printer": { "width": 42 }
}
{
"success": true,
"data": {
"contract": "print.v1",
"jobId": "ba880df8-651b-4971-90d3-be3ae1a49223",
"document": "day_close",
"subject": {
"kind": "storeDay",
"countryCode": "BR",
"storeId": "550e8400-e29b-41d4-a716-446655440000",
"businessDayDate": "2026-05-25"
},
"template": {
"source": "seed",
"templateId": null,
"version": 0,
"contentHash": null
},
"paper": {
"width": 42,
"charset": "utf-8",
"copies": 1,
"lines": [
{ "t": "text", "s": " Dev company " },
{ "t": "text", "s": " RELATÓRIO - FIM DO DIA " },
{ "t": "rule", "ch": "-", "s": "------------------------------------------" },
{ "t": "text", "s": "Data 25/05/2026 " },
{ "t": "text", "s": "Fechamento 02/09/2026 16:09 " },
{ "t": "text", "s": "Transações 105 " },
{ "t": "text", "s": "Ticket médio R$ 34,89 " },
{ "t": "text", "s": "Horário de pico 17:00 " },
{ "t": "rule", "ch": "=", "s": "==========================================" },
{ "t": "text", "s": "TOTAL R$ 3.825,42", "bold": true },
{ "t": "text", "s": "FORMA DE PAGAMENTO " },
{ "t": "text", "s": "26 CREDIT_CARD R$ 1.142,90" },
{ "t": "cut" }
],
"plainText": "Dev company\nRELATÓRIO - FIM DO DIA\n..."
},
"freshness": {
"fiscal": "none",
"isCancelled": false,
"asOf": "2026-09-02T16:09:00.000Z",
"fingerprint": "de32c6c5bfe9a1d70b4c2e8f6a3d5091"
},
"warnings": ["TEMPLATE_FELL_BACK_TO_SEED"]
}
}
{
"success": false,
"error": "PRINT_DAY_NOT_CLOSED",
"message": "That store did not close that day"
}
{
"success": false,
"error": "FORBIDDEN",
"message": "That store does not belong to this account"
}
Printing
Print the day close
Get the end-of-day report already laid out for a POS printer: sales, taxes, payment methods, channels and cancellations for a store’s business day.
POST
/
api
/
v1
/
fire
/
external
/
printing
/
stores
/
{storeId}
/
days
/
{businessDayDate}
POST https://api.fire.rest/api/v1/fire/external/printing/stores/550e8400-e29b-41d4-a716-446655440000/days/2026-05-25
x-api-key: <your_api_key>
Content-Type: application/json
{
"printer": { "width": 42 }
}
{
"success": true,
"data": {
"contract": "print.v1",
"jobId": "ba880df8-651b-4971-90d3-be3ae1a49223",
"document": "day_close",
"subject": {
"kind": "storeDay",
"countryCode": "BR",
"storeId": "550e8400-e29b-41d4-a716-446655440000",
"businessDayDate": "2026-05-25"
},
"template": {
"source": "seed",
"templateId": null,
"version": 0,
"contentHash": null
},
"paper": {
"width": 42,
"charset": "utf-8",
"copies": 1,
"lines": [
{ "t": "text", "s": " Dev company " },
{ "t": "text", "s": " RELATÓRIO - FIM DO DIA " },
{ "t": "rule", "ch": "-", "s": "------------------------------------------" },
{ "t": "text", "s": "Data 25/05/2026 " },
{ "t": "text", "s": "Fechamento 02/09/2026 16:09 " },
{ "t": "text", "s": "Transações 105 " },
{ "t": "text", "s": "Ticket médio R$ 34,89 " },
{ "t": "text", "s": "Horário de pico 17:00 " },
{ "t": "rule", "ch": "=", "s": "==========================================" },
{ "t": "text", "s": "TOTAL R$ 3.825,42", "bold": true },
{ "t": "text", "s": "FORMA DE PAGAMENTO " },
{ "t": "text", "s": "26 CREDIT_CARD R$ 1.142,90" },
{ "t": "cut" }
],
"plainText": "Dev company\nRELATÓRIO - FIM DO DIA\n..."
},
"freshness": {
"fiscal": "none",
"isCancelled": false,
"asOf": "2026-09-02T16:09:00.000Z",
"fingerprint": "de32c6c5bfe9a1d70b4c2e8f6a3d5091"
},
"warnings": ["TEMPLATE_FELL_BACK_TO_SEED"]
}
}
{
"success": false,
"error": "PRINT_DAY_NOT_CLOSED",
"message": "That store did not close that day"
}
{
"success": false,
"error": "FORBIDDEN",
"message": "That store does not belong to this account"
}
Returns the end-of-day report for a store, already laid out for the paper width you ask for. Its subject is a business day, not a sale, which is why it has its own endpoint and its own path.
It is the same contract as Print an order document — same
The report is built from the day’s closing snapshot: totals, taxes broken down, one row per payment method, one row per channel, transactions, average ticket, peak hour, and the cancellations for the day.
paper.lines vocabulary, same template block, same freshness block. Read that page for the line types; this one only covers what is different.
POST /api/v1/fire/external/printing/stores/{storeId}/days/{businessDayDate}
This is the day close, not the cash count. Declared values, float and the cashier’s signature belong to the cash reconciliation, which is a different document with a different source — see cash reconciliations.
The day has to be closed
If the store has not closed that business day, the call fails with409 PRINT_DAY_NOT_CLOSED. Printing a close that did not happen would be inventing it.
Fire’s preview screen tolerates an open day — it draws placeholders so the template can be designed — but a register cannot.
Authentication
string
required
Your Fire API key with the
printing:read scope. The key must be vendor-scoped — system-only keys are rejected with 403.printing:read is a new scope. Existing keys do not have it — grant it in the Fire dashboard before your first call.Path parameters
string
required
UUID of the store. Unlike the order endpoint — where the store comes with the order — here it comes from you, so Fire verifies it belongs to your key’s account and vendor before reading anything. A store outside your scope answers
403.string
required
YYYY-MM-DD. The operational day, which is not the calendar day: a day that opens on the 2nd and closes at 3 a.m. on the 3rd is still the 2nd.Body
number
Width of the label column, between
6 and 24.number
1 to 5. Default 1.number
Reprint with a specific template version. Send
templateId with it.string
Which template that version belongs to. See the reprinting note on the order endpoint.
POST https://api.fire.rest/api/v1/fire/external/printing/stores/550e8400-e29b-41d4-a716-446655440000/days/2026-05-25
x-api-key: <your_api_key>
Content-Type: application/json
{
"printer": { "width": 42 }
}
What is different in the response
The envelope is identical. These blocks carry different values:object
string[]
The same block as on the order endpoint, with the same codes — see its table. The template ones apply here (
TEMPLATE_FELL_BACK_TO_SEED, TEMPLATE_UNREADABLE, TEMPLATE_VERSION_AMBIGUOUS); the fiscal ones never do, because a day close does not go to the tax authority.object
{
"success": true,
"data": {
"contract": "print.v1",
"jobId": "ba880df8-651b-4971-90d3-be3ae1a49223",
"document": "day_close",
"subject": {
"kind": "storeDay",
"countryCode": "BR",
"storeId": "550e8400-e29b-41d4-a716-446655440000",
"businessDayDate": "2026-05-25"
},
"template": {
"source": "seed",
"templateId": null,
"version": 0,
"contentHash": null
},
"paper": {
"width": 42,
"charset": "utf-8",
"copies": 1,
"lines": [
{ "t": "text", "s": " Dev company " },
{ "t": "text", "s": " RELATÓRIO - FIM DO DIA " },
{ "t": "rule", "ch": "-", "s": "------------------------------------------" },
{ "t": "text", "s": "Data 25/05/2026 " },
{ "t": "text", "s": "Fechamento 02/09/2026 16:09 " },
{ "t": "text", "s": "Transações 105 " },
{ "t": "text", "s": "Ticket médio R$ 34,89 " },
{ "t": "text", "s": "Horário de pico 17:00 " },
{ "t": "rule", "ch": "=", "s": "==========================================" },
{ "t": "text", "s": "TOTAL R$ 3.825,42", "bold": true },
{ "t": "text", "s": "FORMA DE PAGAMENTO " },
{ "t": "text", "s": "26 CREDIT_CARD R$ 1.142,90" },
{ "t": "cut" }
],
"plainText": "Dev company\nRELATÓRIO - FIM DO DIA\n..."
},
"freshness": {
"fiscal": "none",
"isCancelled": false,
"asOf": "2026-09-02T16:09:00.000Z",
"fingerprint": "de32c6c5bfe9a1d70b4c2e8f6a3d5091"
},
"warnings": ["TEMPLATE_FELL_BACK_TO_SEED"]
}
}
{
"success": false,
"error": "PRINT_DAY_NOT_CLOSED",
"message": "That store did not close that day"
}
{
"success": false,
"error": "FORBIDDEN",
"message": "That store does not belong to this account"
}
Errors
| Status | Code | When |
|---|---|---|
400 | VALIDATION_ERROR | businessDayDate is not YYYY-MM-DD, or a printer.width that is not 32/42/48. |
401 | UNAUTHORIZED | Missing or invalid API key. |
403 | FORBIDDEN | The key lacks printing:read, is not vendor-scoped, or the store belongs to another account/vendor. |
409 | PRINT_DAY_NOT_CLOSED | The store has not closed that business day. |

