| Field | Value |
|---|---|
| Date | 08 Jun 2026 |
| Status | ✅ Complete |
| GitHub Commit | 4d85a6e |
Updated all international rates from actual Twilio CSV. China/UAE were below cost — raised to $0.55/$0.60.
Optional SID field. If provided: creates TwilioAccount + queues historical sync from 2024-01-01.
DELETE /api/billing-runs/{id}/delete-run/ — deletes run, all invoices, unmarks CDRs. Blocked if any invoice has confirmed Stripe payment.
GET/PATCH /api/cdr/sync-schedule/ — enable/disable + frequency selector. Celery Beat PeriodicTask managed from UI.
Created frontend/src/utils/dateFormat.js with formatDateTime, formatDate, formatDateShort, formatMonthYear. Applied to all date displays.
total_cost_aud SerializerMethodField on BillingRunSerializer.
100 records/page with prev/next. Page resets on filter change.
django.utils.timezone.utc removed in Django 5.x. Fix: from datetime import timezone as dt_timezone. Was causing all auto-syncs to fail.
Both dev and prod have all 8 TwilioAccounts linked to customers.
POST /api/billing-runs/{id}/send-all/ — sends all unsent invoices in a run.