Discussions
Tip Pool Detailed Report API duplicates every pool N× and drops pool names
Endpoint: GET /v2/company/{company_id}/locations/{location_id}/tip_pool_detailed_report?start_date=YYYY-MM- DD&end_date=YYYY-MM-DD&skip_validation=true
API version: 2025-03-01
Company: 421902 · Location: 512052 · Dates tested: 2026-06-09, 2026-06-10
Summary
This location has multiple distinctly-named tip pools configured (e.g., Bar Tip Pool, LBW Pool, Non-Tipped Employees) — and the dashboard CSV export shows them correctly and reconciles. But the tip_pool_detailed_report API returns, for each day, 4 pools that all share the same name ("Non-Tipped Employees") and whose assigned_tips arrays are byte-for- byte identical, each with a different tip_pool_uuid. Summing the returned pools, therefore, multiplies every employee's tips by 4.
What I expected
One entry per configured pool, each carrying its real tip_pool_name, so the per-employee tip_out across pools reconciles to the dashboard.
What I got
For 2026-06-09, four pools — all identical:
"report_rows": [
{
"date": "2026-06-09",
"day_part": null,
"total": null,
"tip_pools": [
{ "tip_pool_uuid": "ffbf9a90-…-5c6141d0c724", "tip_pool_name": "Non-Tipped Employees", "assigned_tips": [ / 32
entries / ] },
{ "tip_pool_uuid": "37296c7d-…-7b6af58566db", "tip_pool_name": "Non-Tipped Employees", "assigned_tips": [ / SAME 32
entries / ] },
{ "tip_pool_uuid": "94431ce0-…-beab48f2d5e3", "tip_pool_name": "Non-Tipped Employees", "assigned_tips": [ / SAME 32
entries / ] },
{ "tip_pool_uuid": "1ceaceb5-…-b2cb3dfc6ffd", "tip_pool_name": "Non-Tipped Employees", "assigned_tips": [ / SAME 32
entries / ] }
]
}
]
A single assigned_tips entry (IDs redacted):
{
"user_id": 115500XX,
"first_name": "…", "last_name": "…",
"role_name": "Server",
"time_punch_id": 5485XXXXX,
"hours_worked": 6.38,
"tip_in": 0,
"tip_out": 461,
"cc_tips": 0, "cc_tips_withheld": 0, "cash_tips": 0, "auto_grat_tips": 0
}
Why is it clearly a duplication
-
All four pools on 2026-06-09 have 32 identical assigned entries; serializing each pool's assigned_tips yields exactly one distinct payload across the four.
-
sum(tip_out) for one pool = 36,087 cents ($360.87).
-
sum(tip_out) across all four returned pools = 144,348 cents ($1,443.48) — exactly 4×.
-
Same pattern on 2026-06-10 (4 identical pools, 33 entries each).
Additional oddities
- Pool names are wrong — every pool is named "Non-Tipped Employees" regardless of the actual configured pool names that appear correctly in the dashboard export.
- day_part and total are null at the day level.
Questions
- Is the multi-pool duplication expected? If so, what's the canonical way to dedupe — by assigned_tips content, or is there a field that marks the authoritative copy?
- Why does every pool come back named "Non-Tipped Employees" instead of its configured name? Is there a parameter to return the real pool names the dashboard shows?
- Are day_part/total meant to be populated, and does skip_validation=true affect any of this?
I have the full (un-redacted) JSON for both days and can share it privately with the ticket reference if helpful.
