# Syncro Emergency / After-Hours Billing Rules for applying emergency or after-hours labor premiums in Syncro tickets. --- ## Definitions | Term | Meaning | |---|---| | **Normal hours** | 9:00 AM – 5:00 PM, Monday–Friday | | **After-hours** | Before 9 AM or after 5 PM on weekdays, or any time on weekends/holidays | | **Emergency** | Customer explicitly requested emergency or same-day rates | | **Same-day** | Work done same day it was requested, during normal hours — only billable as emergency if customer requests it | --- ## When to Apply the Premium **Claude-created tickets:** Apply emergency premium **only if explicitly requested** by the customer or instructed by Mike/Howard. **Suggest it** (do not apply automatically) when: - Work is performed after-hours or on a weekend - Ticket notes indicate the customer called in urgently outside normal hours Do not apply for same-day work unless the customer asks for the emergency rate. --- ## Ticket Subject Prefix | Condition | Prefix | |---|---| | Customer explicitly requested emergency rates | `Emergency -` | | Work performed outside normal hours (not customer-requested) | `Afterhours -` | | Normal hours, no emergency request | No prefix | Examples: - `Emergency - Servers down, HP ProLiant host powered off` - `Afterhours - Printer not connecting after office hours` --- ## Billing Method — Two Scenarios ### Step 1: Determine if Customer is a Block Customer Check customer notes in Syncro for "block hours," "prepay hours," or "prepaid." Block customers have invoices with $0.00 totals and line item descriptions containing "Prepay Hours." Known block customers as of 2026-05-25: Valley Wide Plastering (VWP), Dataforth Corporation, Cascades Retirement Properties. Always verify — blocks can be exhausted or moved to QB tracking. --- ### Scenario A — Block / Prepaid Hours Customer Use **two line items**, both using the same standard labor product as the non-emergency work: | Line | Product | Qty | Description | |---|---|---|---| | 1 | Standard labor product (see table below) | Actual hours worked | Description of work performed | | 2 | Same standard labor product | 0.5 × line 1 qty | `Emergency/Same day rate` | **Example:** 1 hour of emergency remote business on a block account: - Line 1: `Labor - Remote Business` (1190473) — 1.0 hr — "Emergency remote - Servers down, powered on via iLO" - Line 2: `Labor - Remote Business` (1190473) — 0.5 hr — "Emergency/Same day rate" Reference: Invoice 67594 (VWP, 2026-05-12), Ticket #32269. --- ### Scenario B — Non-Block / Direct Billing Customer Use a **single emergency labor product** for the full hours worked: | Customer type | Product | Product ID | Rate | |---|---|---|---| | Business | Labor - Emergency or After Hours Business | 26184 | $262.50/hr | Residential rates are legacy — ACG no longer bills residential. Do not use product 42584. **Example:** 4 hours of emergency business work, direct billing: - Line 1: `Labor - Emergency or After Hours Business` (26184) — 4.0 hr Reference: Ticket #32188 (VWP, direct billing, 2026-04-22). --- ## Standard Labor Products (Reference) Emergency business rate is **$262.50/hr** (product 26184) — used for all emergency/afterhours business work regardless of remote vs onsite. Residential rates are legacy and not in use. **Always fetch `price_retail` from `GET /api/v1/products/{id}` before billing non-block customers. Never use a hardcoded rate.** | Service type | Product | Product ID | Live Rate | Notes | |---|---|---|---|---| | Remote Business | Labor - Remote Business | 1190473 | $150.00/hr | Non-block cash billing | | Onsite Business | Labor - Onsite Business | 26118 | $175.00/hr | | | In-Shop Business | Labor - In Shop Business | 573881 | $150.00/hr | | | Block/Prepaid (any type) | Labor - Remote Business | 1190473 | $0.00 | Price = $0; draws from block in hours | | Emergency/Afterhours Business | Labor - Emergency or After Hours Business | 26184 | $262.50/hr | All business emergency — remote and onsite | --- ## Adding Line Items to an Existing Ticket (API) **Confirmed working endpoint** (tested 2026-05-25, ticket #32320 and test #32321): ``` POST https://computerguru.syncromsp.com/api/v1/tickets/{ticket_id}/add_line_item Authorization: Content-Type: application/json ``` **Required body fields** — both `name` and `description` are required; either missing returns 422: ```json { "product_id": 1190473, "name": "Labor - Remote Business", "description": "Work performed description", "quantity": 2.0, "price_retail": 0.0, "taxable": false } ``` - `price_retail`: **CRITICAL — use `price_retail`, NOT `price`.** Using `price` silently discards the value and bills $0.00 even though the API returns HTTP 200. Confirmed broken 2026-05-27 (ticket #32335). - Block customers: `"price_retail": 0.0` - Non-block customers: fetch live rate first (`GET /api/v1/products/{product_id}` → `.product.price_retail`), then pass that value - `taxable`: always `false` for labor (Arizona labor is never taxable) - Success response: HTTP 200 with the new line item's `id` — verify `price_retail` in the response matches what you sent **Pre-billing check** — before adding line items, verify the ticket has no existing labor to avoid duplicates: ``` GET https://computerguru.syncromsp.com/api/v1/tickets/{ticket_id} ``` Check `.ticket.line_items[]` in the response. --- ## Straddle (Mixed Normal + Emergency Hours) If work begins during normal hours and continues into after-hours (or vice versa): - Ask: "Does the after-hours portion warrant splitting the labor?" (brief overlap usually doesn't) - If splitting: bill normal hours on standard product, after-hours/emergency portion on the appropriate emergency product or as a second prepay line --- ## Products NOT to Use | Product | ID | Why not | |---|---|---| | LLF - Remote Labor (Emergency/Afterhours) | 145022 | Legacy contract product, no longer applicable | | Fee - On-Site Business Emergenc | 45871 | Not in current use — do not add without explicit instruction | | Fee - On-Site Residential Emerg | 45870 | Not in current use — do not add without explicit instruction | | Labor - Emergency or After Hours Residential | 42584 | Residential rates are legacy — ACG no longer uses residential billing | | Labor - Remote Residential | 1190471 | Residential rates are legacy — ACG no longer uses residential billing | --- ## Quick Decision Tree ``` Was emergency rate explicitly requested by customer? YES → Apply premium (see billing method below) NO → Is work happening after-hours or on a weekend? YES → Suggest emergency rate to Mike/Howard; do not apply automatically NO → Bill at standard rates, no prefix ``` ``` Is customer a block/prepaid customer? YES → Two line items: actual hrs (standard product) + 0.5x hrs (same product, "Emergency/Same day rate") NO → One line item: emergency product 26184 (business) for full hours ```