GET https://app.fire.rest/api/v1/adapters/xmart/cash-management/expected?storeId=550e8400-e29b-41d4-a716-446655440000&businessDayDate=2026-05-06
x-api-key: <your_api_key>
{
"store": {
"storeId": "550e8400-e29b-41d4-a716-446655440000",
"storeCode": "BR-SP-001",
"storeName": "Loja Centro - SP",
"accountId": "100",
"vendorId": "v_blueco_br",
"timezone": "America/Sao_Paulo"
},
"businessDay": {
"date": "2026-05-06",
"state": "OPEN",
"openedAt": "2026-05-06T06:00:00.000Z",
"closedAt": null
},
"generatedAt": "2026-05-06T16:50:00.000Z",
"summary": {
"totalOrders": 157,
"completedOrders": 152,
"openOrders": 3,
"cancelledOrders": 2,
"forceClosedOrders": 0
},
"currencies": [
{
"currency": "BRL",
"sales": {
"gross": 4523.50,
"net": 4350.25,
"taxes": 623.75,
"discounts": 173.25,
"orderCount": 152
},
"byPaymentMethod": [
{
"processor": "cash",
"transactionCount": 95,
"approvedCount": 95,
"rejectedCount": 0,
"pendingCount": 0,
"totalBilled": 2250.00,
"cashTendered": 2350.00,
"changeGiven": 100.00,
"expectedCashOnHand": 2250.00
},
{
"processor": "MASTERCARD",
"transactionCount": 57,
"approvedCount": 55,
"rejectedCount": 1,
"pendingCount": 1,
"totalBilled": 2100.25,
"cashTendered": null,
"changeGiven": null,
"expectedCashOnHand": null
}
],
"byChannelAndService": [
{
"channel": "KIOSK",
"orderCount": 95,
"total": 2850.50,
"services": [{ "service": "DINE_IN", "orderCount": 95, "total": 2850.50 }]
}
],
"byOperator": [
{ "operatorUid": "op-cashier-123", "operatorName": "Operator Name", "orderCount": 75, "total": 2200.00 }
],
"byDevice": [
{ "deviceUid": "device-uuid-1", "deviceName": "Terminal 1", "orderCount": 152, "total": 4350.25 }
],
"byOperatorAndPaymentMethod": [
{
"operatorUid": "op-cashier-123",
"operatorName": "Operator Name",
"byPaymentMethod": [
{
"processor": "cash",
"transactionCount": 75,
"approvedCount": 75,
"rejectedCount": 0,
"pendingCount": 0,
"totalBilled": 2200.00,
"cashTendered": 2300.00,
"changeGiven": 100.00,
"expectedCashOnHand": 2200.00
}
]
}
],
"cancelled": {
"count": 2,
"totalLost": 95.50,
"byReason": [
{ "reason": "Customer Request", "count": 1, "total": 45.00 },
{ "reason": "System Error", "count": 1, "total": 50.50 }
]
},
"pendingRisk": {
"openOrdersTotal": 189.75,
"paymentPendingTotal": 150.00,
"paymentFailedTotal": 39.75
}
}
]
}
{
"error": {
"code": "validation_error",
"message": "storeId must be a UUID"
}
}
{
"error": {
"code": "forbidden",
"message": "cash-management endpoints require a vendor-scoped API key"
}
}
{
"error": {
"code": "not_found",
"message": "Store not found"
}
}
Partner APIs
Expected cash
Compute the system-expected cash position for a store/business day, broken down by currency, payment method, channel, operator, and device. Use it as the source of truth before recording a reconciliation.
GET
/
api
/
v1
/
adapters
/
xmart
/
cash-management
/
expected
GET https://app.fire.rest/api/v1/adapters/xmart/cash-management/expected?storeId=550e8400-e29b-41d4-a716-446655440000&businessDayDate=2026-05-06
x-api-key: <your_api_key>
{
"store": {
"storeId": "550e8400-e29b-41d4-a716-446655440000",
"storeCode": "BR-SP-001",
"storeName": "Loja Centro - SP",
"accountId": "100",
"vendorId": "v_blueco_br",
"timezone": "America/Sao_Paulo"
},
"businessDay": {
"date": "2026-05-06",
"state": "OPEN",
"openedAt": "2026-05-06T06:00:00.000Z",
"closedAt": null
},
"generatedAt": "2026-05-06T16:50:00.000Z",
"summary": {
"totalOrders": 157,
"completedOrders": 152,
"openOrders": 3,
"cancelledOrders": 2,
"forceClosedOrders": 0
},
"currencies": [
{
"currency": "BRL",
"sales": {
"gross": 4523.50,
"net": 4350.25,
"taxes": 623.75,
"discounts": 173.25,
"orderCount": 152
},
"byPaymentMethod": [
{
"processor": "cash",
"transactionCount": 95,
"approvedCount": 95,
"rejectedCount": 0,
"pendingCount": 0,
"totalBilled": 2250.00,
"cashTendered": 2350.00,
"changeGiven": 100.00,
"expectedCashOnHand": 2250.00
},
{
"processor": "MASTERCARD",
"transactionCount": 57,
"approvedCount": 55,
"rejectedCount": 1,
"pendingCount": 1,
"totalBilled": 2100.25,
"cashTendered": null,
"changeGiven": null,
"expectedCashOnHand": null
}
],
"byChannelAndService": [
{
"channel": "KIOSK",
"orderCount": 95,
"total": 2850.50,
"services": [{ "service": "DINE_IN", "orderCount": 95, "total": 2850.50 }]
}
],
"byOperator": [
{ "operatorUid": "op-cashier-123", "operatorName": "Operator Name", "orderCount": 75, "total": 2200.00 }
],
"byDevice": [
{ "deviceUid": "device-uuid-1", "deviceName": "Terminal 1", "orderCount": 152, "total": 4350.25 }
],
"byOperatorAndPaymentMethod": [
{
"operatorUid": "op-cashier-123",
"operatorName": "Operator Name",
"byPaymentMethod": [
{
"processor": "cash",
"transactionCount": 75,
"approvedCount": 75,
"rejectedCount": 0,
"pendingCount": 0,
"totalBilled": 2200.00,
"cashTendered": 2300.00,
"changeGiven": 100.00,
"expectedCashOnHand": 2200.00
}
]
}
],
"cancelled": {
"count": 2,
"totalLost": 95.50,
"byReason": [
{ "reason": "Customer Request", "count": 1, "total": 45.00 },
{ "reason": "System Error", "count": 1, "total": 50.50 }
]
},
"pendingRisk": {
"openOrdersTotal": 189.75,
"paymentPendingTotal": 150.00,
"paymentFailedTotal": 39.75
}
}
]
}
{
"error": {
"code": "validation_error",
"message": "storeId must be a UUID"
}
}
{
"error": {
"code": "forbidden",
"message": "cash-management endpoints require a vendor-scoped API key"
}
}
{
"error": {
"code": "not_found",
"message": "Store not found"
}
}
Partner API. This endpoint is intended for platform integrators. Standard Fire customers do not have direct access — contact your account manager if you need this integration.
expectedCashOnHand to the operator, then record their declared count.
Authentication
string
required
Your Fire API key with the
cash-management:read scope. The key must be vendor-scoped — system-only keys are rejected with 403.Query parameters
string
required
UUID of the store. Must belong to your API key’s account/vendor.
string
YYYY-MM-DD. The business day to report on. Defaults to the store’s current operational day in its timezone.string
Filter the report to a single cashier/operator. When omitted, the report covers all operators for the day.
GET https://app.fire.rest/api/v1/adapters/xmart/cash-management/expected?storeId=550e8400-e29b-41d4-a716-446655440000&businessDayDate=2026-05-06
x-api-key: <your_api_key>
Response
object
object
string
ISO 8601 UTC of when this report was computed. Snapshot — call again to refresh.
object
object[]
One entry per currency observed in the day. Most stores have one currency; multi-currency stores get one entry per.
Show currencies[n]
Show currencies[n]
string
ISO 4217.
object
object[]
One entry per payment processor used in the day.
Show byPaymentMethod[n]
Show byPaymentMethod[n]
string
e.g.
cash, Kushki, MASTERCARD, voucher.number
All attempts.
number
transactionStatus = APPROVED.number
Declined / failed.
number
In-flight.
number
Sum of
totalBill across approved transactions.number | null
Cash only — total cash handed over by customers.
number | null
Cash only — total change returned.
number | null
Cash only —
cashTendered - changeGiven. This is the canonical value to compare against the operator’s declared count.object[]
Sales broken down by channel (
KIOSK, IFOOD, RAPPI, APP, …) with sub-breakdowns by fulfillment service (DELIVERY, DINE_IN, TAKEAWAY, PICKUP).object[]
Per cashier/operator:
operatorUid, operatorName, orderCount, total. Useful for shift-end reports.object[]
Per device:
deviceUid, deviceName, orderCount, total.object[]
Cross-cut: per operator, the same
byPaymentMethod shape. Use this to compute the expected cash on hand per cashier when running a multi-cashier reconciliation.object
count, totalLost (revenue lost to cancellations), and byReason array (reason, count, total).object
Risk indicators:
openOrdersTotal, paymentPendingTotal, paymentFailedTotal. Use to flag uncertain revenue at close.{
"store": {
"storeId": "550e8400-e29b-41d4-a716-446655440000",
"storeCode": "BR-SP-001",
"storeName": "Loja Centro - SP",
"accountId": "100",
"vendorId": "v_blueco_br",
"timezone": "America/Sao_Paulo"
},
"businessDay": {
"date": "2026-05-06",
"state": "OPEN",
"openedAt": "2026-05-06T06:00:00.000Z",
"closedAt": null
},
"generatedAt": "2026-05-06T16:50:00.000Z",
"summary": {
"totalOrders": 157,
"completedOrders": 152,
"openOrders": 3,
"cancelledOrders": 2,
"forceClosedOrders": 0
},
"currencies": [
{
"currency": "BRL",
"sales": {
"gross": 4523.50,
"net": 4350.25,
"taxes": 623.75,
"discounts": 173.25,
"orderCount": 152
},
"byPaymentMethod": [
{
"processor": "cash",
"transactionCount": 95,
"approvedCount": 95,
"rejectedCount": 0,
"pendingCount": 0,
"totalBilled": 2250.00,
"cashTendered": 2350.00,
"changeGiven": 100.00,
"expectedCashOnHand": 2250.00
},
{
"processor": "MASTERCARD",
"transactionCount": 57,
"approvedCount": 55,
"rejectedCount": 1,
"pendingCount": 1,
"totalBilled": 2100.25,
"cashTendered": null,
"changeGiven": null,
"expectedCashOnHand": null
}
],
"byChannelAndService": [
{
"channel": "KIOSK",
"orderCount": 95,
"total": 2850.50,
"services": [{ "service": "DINE_IN", "orderCount": 95, "total": 2850.50 }]
}
],
"byOperator": [
{ "operatorUid": "op-cashier-123", "operatorName": "Operator Name", "orderCount": 75, "total": 2200.00 }
],
"byDevice": [
{ "deviceUid": "device-uuid-1", "deviceName": "Terminal 1", "orderCount": 152, "total": 4350.25 }
],
"byOperatorAndPaymentMethod": [
{
"operatorUid": "op-cashier-123",
"operatorName": "Operator Name",
"byPaymentMethod": [
{
"processor": "cash",
"transactionCount": 75,
"approvedCount": 75,
"rejectedCount": 0,
"pendingCount": 0,
"totalBilled": 2200.00,
"cashTendered": 2300.00,
"changeGiven": 100.00,
"expectedCashOnHand": 2200.00
}
]
}
],
"cancelled": {
"count": 2,
"totalLost": 95.50,
"byReason": [
{ "reason": "Customer Request", "count": 1, "total": 45.00 },
{ "reason": "System Error", "count": 1, "total": 50.50 }
]
},
"pendingRisk": {
"openOrdersTotal": 189.75,
"paymentPendingTotal": 150.00,
"paymentFailedTotal": 39.75
}
}
]
}
{
"error": {
"code": "validation_error",
"message": "storeId must be a UUID"
}
}
{
"error": {
"code": "forbidden",
"message": "cash-management endpoints require a vendor-scoped API key"
}
}
{
"error": {
"code": "not_found",
"message": "Store not found"
}
}
How to use this with reconciliation
The canonicalexpectedCashOnHand to compare against is per-currency, per-payment-method cash. For per-cashier closes, drill into byOperatorAndPaymentMethod[i].byPaymentMethod and find the cash entry — that’s the operator-specific expected.
Common patterns
- Real-time end-of-shift dashboard. Poll this endpoint every few minutes during a busy day to show running totals; freeze the snapshot at shift close.
- Per-cashier close. Filter with
operatorUid=...to get just that cashier’s totals; record their reconciliation againstbyOperatorAndPaymentMethod[].byPaymentMethod[cash].expectedCashOnHand. - Multi-currency stores. Iterate over
currencies[]— each entry is independent; reconcile each currency separately. - Pending risk. Surface
pendingRisk.paymentFailedTotalandpendingRisk.openOrdersTotalto operators before they close — these are amounts the system can’t confirm.
Related
Cash reconciliations
Record the operator’s count after reading expected cash here.
Authentication
Vendor-scoped API keys and the
cash-management:read scope.
