Ship Billing Controls
Source: docs/runbooks/ship-billing-controls.md
# SHIP Billing Controls SOP
Purpose: enforce billing correctness for SHIP recovered-value accounting and prevent invoicing on unconfirmed credits.
Scope: SHIP findings lifecycle, invoice prep, and exception handling.
---
## Billing Gate Policy
Core rule:
- Only findings in `CREDITED` state with confirmed carrier evidence are billable.
A finding is billable only when all are true:
- Workflow state is `CREDITED`.
- Credit amount is recorded and positive.
- Confirmation payload exists:
- `confirmation.source`
- `confirmation.referenceId`
- `confirmation.confirmedAt`
- Confirmation evidence is auditable (artifact URL or equivalent reference trail).
Not billable:
- `OPEN`, `DISPUTED`, `SUBMITTED`, `CARRIER_REVIEW`, `REJECTED`, `DISMISSED`.
- Any credited item missing confirmation payload.
---
## Pre-Invoice Sampling Checklist
Before issuing invoice:
- Pull candidate billed findings for period and tenant.
- Random sample at least:
- 10 findings, or
- 10% of candidate findings (whichever is larger).
- For each sampled item, verify:
- `CREDITED` status timestamp within billing period.
- confirmation fields present and plausible.
- amount matches supporting artifact.
- idempotency reference is stable (no duplicate billable emission).
Sampling outcome:
- Pass: proceed to invoice issue.
- Fail: pause invoice and open exception review.
---
## Audit Trail Retention Expectations
Minimum retained artifacts for each billed credit:
- Finding ID, tenant ID, amount, state transition timestamps.
- Confirmation payload (`source`, `referenceId`, `confirmedAt`).
- Link or pointer to supporting evidence.
- Value event record with idempotency key.
Retention policy:
- Keep billing-relevant audit artifacts for at least 24 months unless legal/commercial obligations require longer.
---
## Exception Handling and Approval Path
### Exception Types
- Missing confirmation fields on credited finding.
- Confirmation/reference mismatch across systems.
- Duplicate recovered-value emission risk.
- Late-arriving credit posted after invoice cut.
### Approval Path
1. Operator flags exception and stops invoice issue for affected tenant.
2. Customer Ops Lead reviews evidence gap and proposed correction.
3. Platform/Billing owner approves one of:
- Correct and include in current cycle
- Defer to next cycle
- Exclude permanently with documented reason
4. Record decision and approver in billing run notes.
---
## Controls for Batch and Automation Paths
- Batch credit actions are non-compliant for confirmed-credit billing because they cannot carry per-finding confirmation payloads.
- Use per-finding credit flow only.
- Any automation must call the same per-finding confirmation domain logic as manual UI/API.
---
## Quick Operator Checklist (Invoice Week)
- [ ] Candidate findings are `CREDITED` only.
- [ ] Sample validation passed.
- [ ] No unresolved exceptions.
- [ ] Invoice preview reviewed by Customer Ops Lead.
- [ ] Issue action logged with run timestamp and owner.