Loading...
Help Center / Getting Started / Mango Billing App Overview

Mango Billing App Overview

Mango Billing App Overview

Customer-side AR, automated dunning, ASC 606 revenue recognition, and commissions β€” the finance workflow layer that sits on top of your existing Stripe + Billing data.


What is the Mango Billing App?

Mango Billing is the workflow-aware AR / finance surface for the tenant business β€” the customer-side of the revenue stack, distinct from Mango Spend (employee reimbursements) and Procurement (vendor-side spend). It builds on the existing Billing::* domain layer (Invoice, Subscription, Customer, Refund, CreditTransaction) and adds the things finance actually owns: AR aging, dunning sequences, ASC 606 revenue recognition with period close + GL export, tiered-accelerator commission plans, and Anrok tax sync β€” plus an Ask AI agent for finance questions.

Mango Billing replaces the legacy sysadmin BillingInvoicesController / CustomerBillingController surface with a tenant-scoped app finance teams own.

Core Value Proposition:

  • πŸ“Š AR Aging at a Glance β€” 0–30 / 31–60 / 61–90 / 90+ buckets across every open invoice.
  • ⏰ Automated Dunning β€” Configurable cadence (default day 7 / 14 / 30 / 45) with pause / resume mid-negotiation.
  • πŸ“’ ASC 606 Revenue Recognition β€” Per-subscription schedules, monthly entries, period-close workflow, and journal-entry CSV export.
  • πŸ’° Tiered Commissions β€” Per-event-type accelerators with quarterly attainment tracking and payout CSV.

At a Glance

⏱️ Setup Time πŸ’΅ Payment Rail 🧾 Tax Provider πŸ“’ RevRec Method
~30 minutes Stripe (unchanged) Anrok (optional) Straight-line, monthly

Perfect For:

  • 🧾 Finance / Controllers β€” Run AR aging, advance dunning, and close the books from one app instead of stitching reports together.
  • πŸ“ˆ Sales Operations β€” Approve quarterly commissions with tier-boundary splits visible per deal.
  • πŸ” CFOs and audit teams β€” ASC 606 schedules with period-close stamping and journal CSVs ready for NetSuite / QuickBooks.

How It Works

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚              MANGO BILLING β€” FINANCE WORKFLOW LAYER                     β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”      β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”      β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”‚
β”‚   β”‚  STRIPE +    │─────▢│  AR AGING +  │─────▢│   DUNNING    β”‚         β”‚
β”‚   β”‚  WEBHOOK     β”‚      β”‚  DASHBOARD   β”‚      β”‚  SEQUENCES   β”‚         β”‚
β”‚   β”‚  (existing)  β”‚      β”‚  (buckets)   β”‚      β”‚ (auto+pause) β”‚         β”‚
β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜      β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜      β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜         β”‚
β”‚                                 β”‚                     β”‚                 β”‚
β”‚                                 β–Ό                     β–Ό                 β”‚
β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”      β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”      β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”‚
β”‚   β”‚   GL CSV     │◀─────│   PERIOD     β”‚      β”‚  WRITE-OFF / β”‚         β”‚
β”‚   β”‚   EXPORT     β”‚      β”‚   CLOSE      β”‚      β”‚  REFUND      β”‚         β”‚
β”‚   β”‚ (NetSuite/QB)β”‚      β”‚ (RevSchedule)β”‚      β”‚              β”‚         β”‚
β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜      β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜      β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜         β”‚
β”‚                                                                         β”‚
β”‚            COMMISSIONS  ◀─── auto-fires on Proposal won / Renewal       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Where Mango Billing Sits in the Revenue Stack

                     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                     β”‚     MANGO GTM        β”‚   ← B2B sales funnel
                     β”‚  (prospect β†’ close)  β”‚
                     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                β”‚ won proposal
                                β–Ό
                     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                     β”‚    MANGO BILLING     β”‚   ← AR / dunning / RevRec /
                     β”‚ (finance workflow)   β”‚     commissions
                     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                β”‚
                                β–Ό
                     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                     β”‚     MANGO CS         β”‚   ← post-sale customer success
                     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

         (Mango Spend = employee reimbursements; separate app.)
         (Procurement = vendor-side planned spend; separate app.)

Key Features

🧾 Invoices & Collections

The day-to-day list view for finance β€” every invoice tenant-scoped, paid / open / overdue / void filterable.

Feature Description
Invoice list + detail Full CRUD on Billing::Invoice rows
Mark paid / void / write off / send reminder Per-invoice quick actions
Manual invoice creation For non-Stripe billing (one-off, contracted, etc.)
Stripe webhook sync Billing::WebhookProcessor keeps local invoice rows current
Download PDF Per-invoice PDF on demand
AR aging dashboard Bucket breakdown across 0–30 / 31–60 / 61–90 / 90+

Use Case: Controller opens the AR aging dashboard at month-end, sees that 90+ bucket has grown 18%, drills into the oldest invoices still in active dunning, and pauses two that are mid-negotiation.

πŸ’‘ Pro Tip: Manual invoices coexist with Stripe invoices in the same list β€” use them for one-off services or contracts where Stripe isn’t the rail. Default payment terms are configurable (default Net 30).


⏰ Dunning Sequences

Per-invoice state machines that advance automatically as days-past-due cross thresholds.

Feature Description
Per-invoice DunningSequence One row per invoice in dunning, with state machine
Configurable cadence Default day 7 / 14 / 30 / 45 (set per business)
Hourly advance job Billing::DunningAdvanceJob advances sequences past thresholds
Pause / Resume Stop dunning a customer mid-negotiation, resume when ready
DunningEvent audit log Every transition (advance, pause, resume, complete) recorded

Use Case: A customer is renegotiating a contract β€” finance pauses their dunning sequence from the invoice detail page so collections emails stop, then resumes once the new terms are signed.

πŸ’‘ Pro Tip: The cadence days are configurable as a comma-separated list. If you want a 5-step cadence (7,14,30,45,60), set it in Mango Billing β†’ Settings β€” every new dunning sequence picks it up.


πŸ“’ Revenue Recognition (ASC 606)

Straight-line revenue recognition across the contract term, with period-close workflow.

Feature Description
RevenueSchedule One per subscription / contracted invoice
Monthly entries RevenueScheduleEntry rows with period_start / period_end
Straight-line allocation Total revenue spread evenly across the term
Period-close workflow Stamp recognized_at atomically on entries when closing the period
Journal-entry CSV export Drop into NetSuite, QuickBooks, etc.

Use Case: End of month, finance reviews the current period’s revenue schedule entries, closes the period (stamps recognized_at), exports the journal-entry CSV, and uploads it into NetSuite.


πŸ’° Commissions

Tiered-accelerator commission plans with per-rep attainment tracking. Auto-fires on proposal won and renewal.

Feature Description
CommissionPlan + Tiers Plan with nested CommissionPlanTier rows per event type
Tiered accelerators E.g. 8% to $500k, 12% above
Per-event-type rates Different rates for new logo, renewal, expansion
Auto-fire on proposal won Billing::ProposalService#mark_won triggers CommissionEarning creation
Auto-fire on renewal RenewalProposalGenerator triggers earnings the same way
Quarterly attainment CommissionAttainment rolls up per rep
Earnings approval + payout CSV Bulk approve, export for finance / payroll

Use Case: Sales ops opens the commissions tab at quarter-end, reviews per-rep earnings with attainment-to-date, sees tier-boundary splits on the largest deals (the part that crossed $500k earned the 12% accelerator), bulk-approves, and exports the payout CSV.


🧾 Tax (Anrok)

Optional integration β€” flip on, paste API key, every invoice syncs.

Feature Description
Billing::Anrok::Client REST wrapper around the Anrok API
Billing::AnrokSyncJob Fires on invoice creation
TaxTransaction Audit record per synced invoice
Jurisdiction liability summary View totals owed by jurisdiction

Tax is off by default. Without Anrok, invoices still flow β€” finance can add tax manually on manual invoices.


πŸ” Refunds & Credits

Built on the existing Billing::Refund + Billing::CreditTransaction services β€” the same primitives the platform has always used, now with a finance-team-owned UI.

Feature Description
Apply refund Full or partial against a paid invoice
Issue credit Customer credit balance via Billing::CreditService
Write-off Long-overdue invoices β€” AR buckets rebalance automatically

πŸ“Š Analytics

Billing::AnalyticsService powers the analytics tab.

Standard Metrics:

  • DSO (Days Sales Outstanding)
  • Collection rate
  • Aging detail across buckets
  • MRR / ARR snapshots from Billing::Subscription

CSV Exports:

  • Invoices
  • Commission earnings
  • Journal entries (revenue recognition)

πŸ€– Mango Billing AI Agent

Agents::MangoBillingAgent answers finance questions from the Ask AI sidebar.

Capability Example question
AR aging β€œWhich invoices are in 30+ day dunning?”
Search invoices β€œShow me all invoices over $50k from Q3”
Customer financial summary β€œWhat’s the open balance for Acme?”

Tools are admin-gated β€” the agent doesn’t surface to non-finance users.


πŸ“€ GL Export

Dedicated export controller (GlExportController) β€” period-close drops a journal CSV that maps directly into NetSuite or QuickBooks chart-of-accounts.


⏰ Background Jobs

Job What it does
Billing::DunningAdvanceJob Hourly β€” advances dunning sequences past their next threshold
Billing::RevenueRecognitionJob Generates / updates monthly RevenueSchedule entries
Billing::AnrokSyncJob Syncs invoice tax to Anrok on creation
Billing::WebhookProcessorJob Processes Stripe webhook events into local Billing::Event rows
Billing::ProposalExpirationJob Marks proposals expired when their valid-until passes
Billing::TrialExpirationJob + TrialWarningJob Drive trial-end emails
Billing::SyncUserCountJob + UserCountSyncSchedulerJob Keep usage-based pricing accurate

πŸ”” Notifications

Mailer When
Billing::TrialMailer Trial warning + expiration
Billing::ProposalMailer Proposal sent / signed / expired
Dunning emails Per-invoice as the sequence advances (handled by DunningCadenceService)

Limits & Specs

Spec Default
Default payment terms Net 30 (configurable)
Default dunning cadence Day 7 / 14 / 30 / 45 (configurable)
Revenue recognition method Straight-line, monthly
Tax provider Anrok (optional)
Payment rail Stripe (unchanged)
Allowed roles Admin, Super Admin (configurable)

User Roles & Permissions

Role Capabilities
Member / Manager No access by default β€” Mango Billing is a finance-team surface
Admin Browse invoices, run dunning, close periods, approve commissions, configure tax, export CSVs
Super Admin Same as Admin

The allowed roles list is configurable per business; defaults to admin and super_admin.


How We Compare

Mango Billing sits in the finance / AR / RevRec workflow category β€” alongside Maxio (formerly SaaSOptics + Chargify), Sage Intacct’s billing module, and Stripe’s own billing dashboard.

Feature MangoApps Workforce Maxio Stripe Billing Chargebee
AR aging dashboard with buckets βœ… βœ… ⚑ βœ…
Configurable dunning cadence + pause/resume βœ… βœ… ⚑ βœ…
ASC 606 RevRec with period close βœ… βœ… ❌ ⚑
Journal CSV export (NetSuite/QB) βœ… βœ… ❌ βœ…
Tiered commission plans βœ… ❌ ❌ ❌
Anrok tax integration βœ… ⚑ ⚑ ⚑
AI agent for finance questions βœ… ❌ ❌ ❌
No additional billing platform (sits on Stripe) βœ… ❌ n/a ❌
Legend: βœ… Included ❌ Not Available ⚑ Limited / partial

Why MangoApps Workforce?

  • πŸ”— Unified Platform β€” Mango Billing builds on the same Billing::* domain layer the platform has always used; Stripe stays the rail, no migration, no new billing platform.
  • πŸ’Ό Commissions Built-In β€” Most billing tools require a separate commissions product (CaptivateIQ, Spiff). Mango Billing fires earnings on proposal_won and renewal directly.
  • πŸ€– AI-Native β€” Ask AI agent ships with the app; no Looker / Mode dashboard required to ask β€œwhat’s our DSO this quarter?”

Getting Started

For Administrators

  1. Enable the app β€” In Admin β†’ Apps Marketplace, find Mango Billing and toggle app_enabled on. Mango Billing replaces the sysadmin invoice surface β€” admins now manage AR from this app.
  2. Confirm Stripe is connected β€” Mango Billing uses the existing Billing::StripeService + WebhookProcessor. No re-connection needed; existing webhooks keep firing.
  3. Set payment terms + dunning cadence β€” Mango Billing β†’ Settings. Defaults: Net 30 terms, day 7 / 14 / 30 / 45 dunning. Tune per your collections policy.
  4. (Optional) Connect Anrok β€” Flip tax_enabled and paste your Anrok API key. Every invoice will sync; jurisdiction liability appears in the tax tab.
  5. (Optional) Build commission plans β€” Commissions β†’ Plans. Define tiers per event type (new logo / renewal / expansion). Assign reps. Earnings auto-fire on proposal won.
  6. Run a test period close β€” Generate a few revenue schedule entries, close the period, verify the journal-entry CSV maps cleanly to your NetSuite / QuickBooks chart of accounts.

Best Practices

  • βœ… Configure dunning cadence before turning the app on β€” The default day 7 / 14 / 30 / 45 fits most SaaS businesses, but tune it before any invoices enter the queue.
  • βœ… Pause sequences during disputes β€” The pause / resume is there for a reason. Don’t let collections emails sour an active negotiation.
  • βœ… Close the period monthly, not quarterly β€” Stamping recognized_at atomically per period is much cleaner than retroactively closing three months at once.
  • βœ… Review commissions before quarter-end approval β€” The tier-boundary splits matter; spot-check the largest deals to confirm accelerators applied where they should.
  • βœ… Use manual invoices sparingly β€” They sidestep Stripe entirely. Track them carefully in your reconciliation.
  • βœ… Keep Anrok keys in environment / secret store β€” Never hard-code in settings; rotate per your security policy.

Frequently Asked Questions

Q: How does Mango Billing differ from the sysadmin invoice surface?
A: The sysadmin billing pages are a platform-admin surface designed for MangoApps staff. Mango Billing is a workflow-aware tenant app that adds dunning, revenue recognition, commissions, and tax on top of the same Billing::Invoice / Billing::Customer domain layer. The sysadmin surface is retired when Mango Billing ships.

Q: Do I need to migrate historical data?
A: No. Mango Billing reads the existing Billing::* tables in place β€” Invoice, Subscription, Customer, Refund, CreditTransaction, Event. New tables only back dunning, revenue recognition, and commissions; history stays where it is.

Q: What if I don’t run commissions in-house?
A: Turn off commissions_enabled in Settings. The rest of the app (invoices, dunning, RevRec, tax) still works, and commission plans and earnings stay hidden from the nav.

Q: Is Anrok required for tax?
A: No. Tax is off by default. Flip tax_enabled and paste an Anrok API key to sync. Without Anrok, invoices still flow β€” finance can add tax manually on manual invoices.

Q: Does Mango Billing replace Stripe?
A: No. Stripe remains the payment rail. Mango Billing sits on top of the existing Billing::StripeService + WebhookProcessor β€” webhook events keep updating local Billing::Invoice records as they always have. Mango Billing adds the workflow layers finance owns (dunning, close, commissions).

Q: Can the AI agent take actions, or only answer questions?
A: The Mango Billing agent is a read agent β€” it surfaces AR aging, searches invoices, summarizes customer balances. It doesn’t write. Pause a dunning sequence or void an invoice from the controller actions in the app, not from the agent.


  • Apps Overview β€” Browse the full marketplace catalog
  • Mango Spend β€” Employee reimbursements (the spend side)
  • Mango CS β€” Customer success (the post-sale side)
  • Procurement β€” Vendor-side planned spend

AR aging, dunning, RevRec, and commissions β€” finance workflow on top of the Stripe + Billing data you already have.

Ask AI Product Advisor

Hi! I'm the MangoApps Product Advisor. I can help you with:

  • Understanding our 40+ workplace apps
  • Finding the right solution for your needs
  • Answering questions about pricing and features
  • Pointing you to free tools you can try right now

What would you like to know?