Query Reconciliation¶
GET /daily-close/{store_id}/{business_date}
Returns the reconciliation result for one store and business date. HQ compares your daily close control totals with the transactions it received.
Authentication: API key (x-functions-key)
Request¶
Path parameters¶
| Parameter | Type | Description |
|---|---|---|
| store_id | string | Must be registered for your account |
| business_date | date | YYYY-MM-DD |
Response¶
200 OK
| Field | Type | Description |
|---|---|---|
| store_id | string | Store code |
| business_date | date | Business date |
| status | enum | See below |
| checked_at | timestamp | null | When reconciliation ran (UTC); null if not yet run |
| expected | object | null | Control totals from your daily close; null when NOT_RECEIVED |
| actual | object | null | Values HQ calculated from received transactions; null if not yet run |
| differences | array of string | Names of fields that do not match; [] when everything matches |
Status values¶
| status | Meaning | What to do |
|---|---|---|
NOT_RECEIVED |
No daily close received | Check that you sent it |
RECEIVED |
Daily close received, reconciliation not finished | Query again later |
MATCHED |
Everything matches | Nothing |
MISMATCHED |
Totals differ | Send missing transactions (or corrections with version + 1), then resend the daily close |
Matching rules¶
- Counts must match exactly.
- Amounts may differ by at most the currency's smallest unit (USD 0.01, JPY 1).
Example¶
{
"store_id": "US001",
"business_date": "2026-10-14",
"status": "MISMATCHED",
"checked_at": "2026-10-15T09:30:00Z",
"expected": { "trade_record_count": 312, "net_sales_amount": "9821.40" },
"actual": { "trade_record_count": 310, "net_sales_amount": "9790.10" },
"differences": ["trade_record_count", "net_sales_amount"]
}
Errors¶
| HTTP | code | When |
|---|---|---|
| 401 | UNAUTHORIZED | Missing or invalid API key |
| 403 | STORE_NOT_ALLOWED | Store not registered for your account |
Notes¶
Tip
Query about 30 minutes after sending the daily close. If the status is still RECEIVED, poll every 10–15 minutes rather than continuously.