Master Audit Rule Library
The complete 105-rule taxonomy used to audit Verizon, T-Mobile, AT&T, Xfinity, and Spectrum bills — consumer and business. Browse, filter, or export the full JSON.
105 of 105 rules
WLS-001
AutoPay discount is $0/line because the payment method is a credit card.
Trigger: Discount is $0/line; payment method is credit card (excl. AT&T Points Plus Citi).
Savings: $10 * number_of_lines per month
What to do: Switch AutoPay to a bank draft (ACH) to restore $10/line.
WLS-002
AutoPay discount capped at $5/line on debit cards.
Trigger: Discount equals $5/line; payment method is debit card.
Savings: $5 * number_of_lines per month
What to do: Switch to bank draft for full $10/line.
WLS-003
Missing $5/line AutoPay discount because of credit-card payment.
Trigger: Missing $5/line discount; payment method is credit card.
Savings: $5 * number_of_lines per month
What to do: Move AutoPay to debit or bank account.
WLS-004
$15 account-level penalty on legacy New Verizon Plan multi-lines.
Trigger: Plan name matches legacy and account has 2+ lines.
Savings: $15/month account-level
What to do: Migrate to a myPlan tier to eliminate the legacy fee.
WLS-005
$4/line penalty on legacy single-line plans.
Trigger: Legacy plan with one line.
Savings: $4/line per month
What to do: Migrate to current myPlan.
WLS-006
Excluded $4.49/line Regulatory + Telco fee on newer plans.
Trigger: Regulatory/Telco fee line equals $4.49 per voice line.
Savings: $4.49/line per month (explanatory)
What to do: Compare with taxes-included Magenta/ONE legacy plans.
WLS-007
Unlimited Ultimate billed but international/hotspot usage is zero.
Trigger: Tier Ultimate AND intl_min==0 AND hotspot_gb<1 over 2 cycles.
Savings: Tier delta * lines (~$20/line)
What to do: Downgrade to Plus or Welcome.
WLS-008
Line bills full MRC but shows 0 min / 0 SMS / 0 MB for 2+ cycles.
Trigger: 0 usage for >=2 consecutive months.
Savings: line.monthly_cost
What to do: Suspend or remove the line.
WLS-009
Tablet add-on bills but data usage is 0 MB.
Trigger: device_type=='tablet' AND data_gb==0 for 2+ months.
Savings: line.monthly_cost
What to do: Remove tablet line.
WLS-010
Wearable add-on bills $10–$15 but no data registered.
Trigger: device_type=='watch' AND data_gb==0 for 2+ months.
Savings: line.monthly_cost
What to do: Cancel watch line or pause via app.
WLS-011
Line status is suspended but full MRC charged.
Trigger: status=='suspended' AND monthly_cost>0.
Savings: monthly_cost * cycles_suspended
What to do: Dispute for credit on full-MRC suspension billing.
WLS-012
Hotspot add-on active but <1 GB used over 90 days.
Trigger: hotspot_addon AND hotspot_gb_90d<1.
Savings: addon.monthly_cost
What to do: Drop hotspot add-on.
WLS-013
Account has 3+ lines but per-line rate matches 1-line tier.
Trigger: line_count>=3 AND per_line_rate == single_line_rate.
Savings: (single_rate - multi_rate) * lines
What to do: Switch to multi-line pricing.
WLS-014
$10/mo Next Up Anytime billed on device >24 months old.
Trigger: next_up_active AND device_age_months>24.
Savings: $10/line per month
What to do: Remove Next Up if not upgrading.
WLS-015
$10 myPlan perk billed but streaming service never activated.
Trigger: Perk line item present AND perk.activated==false.
Savings: perk.monthly_cost
What to do: Drop unused perks from myPlan.
WLS-016
Daily travel pass charged with no foreign network registry.
Trigger: intl_pass billed AND no_foreign_registry.
Savings: pass.amount
What to do: Dispute the charge; turn off pass auto-trigger.
WLS-017
Free promo line jumps to full rate after primary line altered.
Trigger: promo_credit_dropped AND new_full_mrc.
Savings: Calculate remaining promo months * credit
What to do: Call retention to restore promo or migrate plan.
WLS-018
Email domain matches a Signature/AT&T Work eligible employer but no perk applied.
Trigger: user_domain ∈ eligibleEmployers AND signature_disc==0.
Savings: ~15% * plan_rate * lines
What to do: Enroll in carrier employer discount program.
WLS-019
Verified military demographic but standard rates billed.
Trigger: military_status==true AND military_discount==0.
Savings: ~$10–$25/line
What to do: Verify via ID.me/SheerID with carrier.
WLS-020
Teacher/Nurse/Student discount dropped after missed annual verification.
Trigger: demo_discount_prior AND demo_discount_current==0.
Savings: (prior - current) * cycles_since_drop
What to do: Re-verify and request back-credit.
WLS-021
User on $45 Unlimited Plus but uses <20 GB / cycle.
Trigger: plan=='Plus' AND usage_gb<20.
Savings: $15/line per month
What to do: Downgrade to base Unlimited.
WLS-022
$30 Unlimited line using <1 GB.
Trigger: plan=='Unlimited' AND usage_gb<1.
Savings: $10/line per month
What to do: Switch to By-the-Gig ($20).
WLS-023
3rd-line promo credit removed after plan migration.
Trigger: prior.line3_credit>0 AND current.line3_credit==0.
Savings: $30/line per month
What to do: Ask retention to restore as plan-match credit.
WLS-024
$20/GB overage line items on legacy shared/family plans.
Trigger: overage_charge>0 on shared/legacy plan.
Savings: overage.amount + delta_to_unlimited
What to do: Move to unlimited to stop overages.
WLS-025
Promised port-in/switcher credit never landed on postpaid bill.
Trigger: switcher_promo_promised AND credit_count==0 after 2 cycles.
Savings: Promised credit total
What to do: Dispute with port-in promo proof.
DEV-026
BYOD monthly credit vanished concurrent with a new EIP.
Trigger: prior.byod_credit>0 AND current.byod_credit==0 AND current.eip>0.
Savings: remaining_byod_months * credit_value
What to do: Be aware: upgrade voided BYOD credit.
DEV-027
EIP active 3+ months but no trade-in credit posted.
Trigger: eip_months>=3 AND tradein_credit==0 AND tradein_promised.
Savings: tradein_promised_total
What to do: Open trade-in promo dispute with order #.
DEV-028
Promo credit ended at month 36 but device charge persists.
Trigger: promo_months>36 AND eip_active.
Savings: remaining eip.amount
What to do: Dispute residual device payment.
DEV-029
$35–$40 activation fee on a BYOD/self-serve setup.
Trigger: activation_fee>0 AND setup_channel=='self_serve'.
Savings: fee.amount
What to do: Request waiver — self-serve isn't subject to activation.
DEV-030
$35–$40 upgrade fee when device was purchased elsewhere.
Trigger: upgrade_fee>0 AND device_source=='external'.
Savings: fee.amount
What to do: Dispute; upgrade fee shouldn't apply to BYOD.
DEV-031
$90–$200 hardware non-return fee after cancellation.
Trigger: fee.unreturned>0 AND post_cancel.
Savings: fee.amount
What to do: Provide return tracking number for credit.
DEV-032
Two distinct EIP lines on the same IMEI / line.
Trigger: count(eip) on line > 1 with same IMEI.
Savings: duplicate eip.amount * cycles
What to do: Dispute duplicate installment.
DEV-033
EIP shows '37 of 36' or continues past 36/24-month term.
Trigger: eip.installment_n > eip.installment_total.
Savings: Excess eip.amount * cycles
What to do: Demand refund of overage installments.
DEV-034
Monthly credits sum below the promised trade-in quote.
Trigger: sum(tradein_credit) < quoted_value.
Savings: quote - sum(credit)
What to do: Dispute with quote screenshot.
DEV-035
$19 or $26 Protection 360 on a paid-off device.
Trigger: p360 IN [19,26] AND device.paid_off==true.
Savings: p360.amount * 12
What to do: Drop insurance on aging paid-off device.
DEV-036
3+ lines paying $19 individual VMP instead of $60 multi-device.
Trigger: vmp_count>=3 AND md_plan==false.
Savings: (vmp_lines*19) - 60
What to do: Switch to VMP Multi-Device.
DEV-037
Insurance active on BYOD line with 3+ year old device.
Trigger: insurance>0 AND device_age_yr>=3 AND byod.
Savings: insurance.amount * 12
What to do: Drop insurance on aged device.
DEV-038
AppleCare+ billed alongside carrier device protection.
Trigger: applecare>0 AND carrier_insurance>0 on same IMEI.
Savings: min(applecare, carrier_insurance) * 12
What to do: Cancel one of the overlapping plans.
DEV-039
$14–$17 insurance on a device worth <$200.
Trigger: protect_advantage>0 AND device_value<200.
Savings: protect_advantage * 12
What to do: Cancel insurance — premium outpaces device value.
DEV-040
Insurance line item missing after device swap.
Trigger: prior.insurance>0 AND current.insurance==0 AND device_swap.
Savings: Re-enroll cost
What to do: Re-enroll if device is high-value.
DEV-041
$18 insurance on older handset.
Trigger: insurance==18 AND device_age_yr>=2.
Savings: $18 * 12
What to do: Drop insurance on older device.
DEV-042
Add-on tech support service never utilized.
Trigger: asurion_tech>0 AND tech_calls==0 (6mo).
Savings: addon.monthly_cost
What to do: Cancel unused tech support add-on.
DEV-043
$15+ home tech insurance overlaps existing home warranty.
Trigger: home_protect>0 AND user.has_home_warranty.
Savings: home_protect * 12
What to do: Cancel one of the overlapping coverages.
DEV-044
Paid $10/mo Next Up but upgraded after 36 months (never used).
Trigger: next_up_paid_months>=36 AND no_upgrade.
Savings: $10 * months_paid_without_use
What to do: Remove Next Up going forward.
DEV-045
$10–$20 retention credit fell off after 12 months.
Trigger: loyalty_credit_prior>0 AND current==0 AND tenure_mo>12.
Savings: Credit * remaining cycles
What to do: Call retention to renew loyalty credit.
DEV-046
Bill carries a carrier message warning of imminent AutoPay drop.
Trigger: bill.messages contains 'AutoPay change' notice.
Savings: Discount preserved if action taken
What to do: Update payment method before next cycle.
DEV-047
Business EIP initiated at retail instead of MSA channel.
Trigger: device.channel=='retail' AND account_type=='business'.
Savings: MSA price delta * device count
What to do: Route future device buys through MSA procurement.
DEV-048
Paying for JUMP! upgrade program but holding devices full term.
Trigger: jump_active AND no_upgrade_in_3y.
Savings: JUMP! fee * 12
What to do: Drop JUMP! enrollment.
DEV-049
$50 restocking fee applied to an unopened return.
Trigger: fee.restocking>0 AND return.condition=='unopened'.
Savings: fee.amount
What to do: Dispute with proof of unopened return.
DEV-050
$200+ repair fee while device was under active P360/AppleCare.
Trigger: repair_fee>200 AND coverage_active_at_event.
Savings: repair.amount
What to do: Dispute with coverage proof.
INT-051
$25/line standalone fee due to cancelled/unlinked Xfinity Internet (pre-Apr 2026 accounts).
Trigger: standalone_fee==25 OR (mobile_present AND !internet_present).
Savings: $25/line per month
What to do: Re-link Xfinity Internet or migrate carriers.
INT-052
$10 multi-product discount lost after internet cancellation (post-Apr 2026).
Trigger: prior.mpd>0 AND current.mpd==0 AND !internet.
Savings: $10/line per month
What to do: Reinstate internet or accept new bundle pricing.
INT-053
Mobile jumps to $40/line after Spectrum Internet is dropped.
Trigger: spectrumMobile AND !spectrumInternet AND mrc>=40.
Savings: $20/line per month
What to do: Re-bundle internet or migrate.
INT-054
$15 Mobile + Home discount disappears after home internet move.
Trigger: prior.mh_discount>0 AND current==0 AND home_address_changed.
Savings: $15/month + back-credit cycles
What to do: Re-link Verizon Home Internet at new address.
INT-055
$10/mo router rental.
Trigger: advanced_wifi_fee==10.
Savings: $10 * 12 - router_cost
What to do: Buy a router; cancel rental.
INT-056
$15/mo xFi Gateway modem/router rental.
Trigger: equipment_rental==15 (Xfinity).
Savings: $15 * 12 - modem_cost
What to do: Buy a DOCSIS 3.1 modem.
INT-057
$25/mo xFi Complete but no unlimited data / no pods.
Trigger: xfi_complete==25 AND data_usage_tb<1.2 AND no_pods.
Savings: $25 * 12
What to do: Drop xFi Complete.
INT-058
Base rate jumped $30–$40 at month 13.
Trigger: tenure_months==13 AND rate_delta>=30.
Savings: delta * remaining_term
What to do: Call retention for promo renewal.
INT-059
Base rate jumped $30–$40 at month 25.
Trigger: tenure_months==25 AND rate_delta>=30.
Savings: delta * remaining_term
What to do: Re-shop or call retention.
INT-060
$20/mo cellular backup on residential account with no critical need.
Trigger: invincible_wifi==20 AND residential.
Savings: $20 * 12
What to do: Cancel Invincible WiFi.
INT-061
Missing 20–25% wireless discount for having AT&T Fiber.
Trigger: att_fiber AND att_wireless AND fiber_wireless_disc==0.
Savings: wireless * 0.2
What to do: Request fiber+wireless bundle discount.
INT-062
1 Gig or 2 Gig plan in a household with <5 devices.
Trigger: speed_tier>=1000 AND devices<5.
Savings: tier_delta * 12
What to do: Downgrade to 500 Mbps.
INT-063
$15–$20 static IP charge on a residential account.
Trigger: static_ip_fee>0 AND residential.
Savings: fee * 12
What to do: Drop static IP add-on.
INT-064
Two router lease charges on a single residence.
Trigger: count(router_lease)>1.
Savings: duplicate fee * cycles
What to do: Dispute duplicate lease.
INT-065
$5 penalty for a bounced ACH/card.
Trigger: autopay_failure_fee>0.
Savings: fee.amount
What to do: Update payment method; request one-time waiver.
INT-066
$50–$100 fee despite self-install kit.
Trigger: install_fee>0 AND order.kit=='self_install'.
Savings: fee.amount
What to do: Dispute with self-install confirmation.
INT-067
$10–$20/mo advanced tech subscription rarely used.
Trigger: tech_support_fee>0 AND tickets==0 (6mo).
Savings: fee * 12
What to do: Cancel premium tech support.
INT-068
$30 unlimited add-on but historic usage <1.2 TB.
Trigger: unlimited_addon==30 AND usage_tb<1.2.
Savings: $30 * 12
What to do: Drop unlimited add-on.
INT-069
Missing $5–$10 internet-specific AutoPay discount.
Trigger: internet_autopay_disc==0 AND autopay_active.
Savings: $5–$10 per month
What to do: Enroll in internet AutoPay & paperless.
INT-070
$10/mo legacy modem rental that should be free or replaced.
Trigger: modem_rental>0 AND modem.docsis<3.1.
Savings: rental * 12
What to do: Request free upgrade or buy DOCSIS 3.1.
INT-071
Missing $20 home-internet price drop for qualifying TMO voice line.
Trigger: tmo_home AND tmo_voice AND bundle_disc==0.
Savings: $20/month
What to do: Add Home Internet to qualifying voice line.
INT-072
Mesh extender fee on a small footprint where it isn't required.
Trigger: extender_fee>0 AND home_sqft<1500.
Savings: fee * 12
What to do: Return extender.
INT-073
Mobile line jumped to $30/mo after 12 free months expired.
Trigger: tenure_months>=12 AND mobile_mrc==30 AND prior_mrc==0.
Savings: $30/line/month
What to do: Re-evaluate plan vs. competitors.
INT-074
Internet Air discount fell off after card payment method change.
Trigger: prior.air_disc>0 AND current==0 AND payment_method_changed.
Savings: discount amount
What to do: Restore eligible payment method.
INT-075
Moving fee applied even though self-install was used.
Trigger: relocation_fee>0 AND install_type=='self'.
Savings: fee.amount
What to do: Dispute with self-install confirmation.
BIZ-076
Missing $25 business device discount on purchased/BYOD smartphone lines.
Trigger: biz_account AND smartphone AND device_disc==0.
Savings: $25 * eligible_lines
What to do: Request retroactive $25/line credit.
BIZ-077
Billed line access fee differs from Master Service Agreement.
Trigger: billed_rate != msa_rate.
Savings: (billed-msa) * lines * cycles
What to do: Submit MSA to carrier billing.
BIZ-078
Business credit-card AutoPay discount dropped from $10 to $0.
Trigger: biz AND autopay_disc==0 AND payment=='credit_card'.
Savings: $10 * lines
What to do: Switch business AutoPay to ACH.
BIZ-079
Debit/bank requirement not met; $5/line missing.
Trigger: biz AND autopay_disc==0 AND payment=='credit_card'.
Savings: $5 * lines
What to do: Switch payment method on AutoPay.
BIZ-080
Zero-usage line matches a known off-boarded employee ID.
Trigger: line.user_id IN offboarded_employees AND usage==0.
Savings: line.monthly_cost
What to do: Cancel line and SIM-port if needed.
BIZ-081
High intl data charges outside company travel policy.
Trigger: intl_data_chg>0 AND traveler NOT IN approved_list.
Savings: intl_charge amount
What to do: Recover from employee or dispute carrier.
BIZ-082
Shared data pool >50% unutilized for 3 consecutive months.
Trigger: pool_unused_pct>0.5 over 3 cycles.
Savings: downsize pool delta * 12
What to do: Downsize pooled data plan.
BIZ-083
$20–$40 LTE backup router on non-critical site.
Trigger: backup_fee>0 AND failover_minutes==0 (90d).
Savings: fee * 12
What to do: Cancel backup at non-critical sites.
BIZ-084
Mobile Device Management seats billed but not deployed.
Trigger: mdm_seats_billed > mdm_seats_active.
Savings: (billed-active) * seat_cost * 12
What to do: True-up MDM seats.
BIZ-085
Sales tax billed despite valid 501c3/exempt status.
Trigger: sales_tax>0 AND exempt_status_on_file.
Savings: sales_tax * cycles
What to do: Re-submit exemption cert; request back-credit.
BIZ-086
Unused user seats in VoIP bundles.
Trigger: voip_seats_billed > voip_seats_active.
Savings: (billed-active) * seat_cost * 12
What to do: Right-size seat count.
BIZ-087
Missing $10–$15 credits on SuperMobile / All-In lines.
Trigger: supermobile AND promo_credit==0.
Savings: $10–$15 * lines
What to do: Apply promo credit retroactively.
BIZ-088
1-800 number billed but 0 inbound minutes.
Trigger: tollfree_fee>0 AND inbound_min==0 (90d).
Savings: fee * 12
What to do: Drop or port out toll-free number.
BIZ-089
Analog or eFax billed but 0 pages transmitted.
Trigger: fax_fee>0 AND fax_pages==0 (90d).
Savings: fee * 12
What to do: Disconnect fax line.
BIZ-090
Fleet tracking / M2M SIMs with 0 KB usage.
Trigger: iot_sim AND data_kb==0 (60d).
Savings: sim_fee * count * 12
What to do: Suspend zero-usage SIMs.
TAX-091
Per-voice-line admin fee jumped to $3.78.
Trigger: admin_fee>=3.78 AND prior_admin<3.78.
Savings: delta * voice_lines
What to do: Informational — not recoverable.
TAX-092
Per-line Regulatory charge increased to $0.21.
Trigger: regulatory_fee>=0.21 AND prior<0.21.
Savings: delta * lines
What to do: Informational.
TAX-093
Per-line combined admin/regulatory fee deviates from $3.99.
Trigger: abs(att_admin_combined - 3.99) > 0.25.
Savings: delta * lines
What to do: Informational.
TAX-094
Telco Recovery portion of $3.99 increased.
Trigger: tmo_telco_recovery > 3.99.
Savings: delta * lines
What to do: Informational.
TAX-095
Unannounced 5–10% increase in core package pricing.
Trigger: plan_mrc_delta_pct between 0.05 and 0.10.
Savings: delta * lines
What to do: Call retention for promo or migrate.
TAX-096
Anomalously high bill caused by mid-cycle add/drop proration.
Trigger: proration_count > 2 AND bill_delta > 0.25 * avg.
Savings: delta vs avg bill
What to do: Informational — next cycle should normalize.
TAX-097
Standard penalty applied for missed billing cycle.
Trigger: late_fee>0.
Savings: fee.amount
What to do: Request one-time waiver.
TAX-098
$10 TravelPass / Int'l Day Pass triggered.
Trigger: day_pass>0.
Savings: fee.amount
What to do: Informational.
TAX-099
Prepaid Wireless 911 fee should equal $2.23/line in AL.
Trigger: state=='AL' AND prepaid AND fee_911 != 2.23.
Savings: delta * lines
What to do: Verify state 911 fee against state schedule.
TAX-100
Local tax rate applied doesn't match service address ZIP.
Trigger: billed_local_rate != lookup(service_zip).
Savings: (rate_diff) * taxable_base * cycles
What to do: Correct service address; request back-credit.
TAX-101
Anomalies in the $2.49/line business admin fee.
Trigger: abs(att_biz_admin - 2.49) > 0.25.
Savings: delta * lines
What to do: Informational.
TAX-102
$20–$40 reconnection fee after temporary suspension.
Trigger: reconnection_fee>0.
Savings: fee.amount
What to do: Request waiver in retention call.
TAX-103
Admin fee applied for transfer of billing responsibility.
Trigger: name_change_fee>0.
Savings: fee.amount
What to do: Informational.
TAX-104
$2–$3 fee for physical mailed statement.
Trigger: paper_fee>0.
Savings: fee * 12
What to do: Switch to paperless billing.
TAX-105
Regulatory fees applied to a line strictly in suspension.
Trigger: status=='suspended' AND reg_fee>0.
Savings: fee * cycles_suspended
What to do: Dispute fees on suspended lines.