Skip to content

ARM End-to-End Billing Process

The 4×4 Framework

The ARM billing process is built on a clear conceptual model: 4 NetSuite records × 4 Feoda processes. This framework applies universally to every school, regardless of client-specific configuration. The underlying mechanics are identical — only the configuration varies.

The 4 NetSuite Records

# Record NetSuite Type Description
1 Debtor Customer Record The family entity billed for tuition. Billing is always to the debtor (family), not to an individual parent or student. Each debtor has a unique ID and billing title.
2 Items Service Item / Discount Item Charges (tuition, fees, levies) and discounts (sibling, staff, scholarship) configured in NetSuite. Items are global records — not linked to a specific family until billing instructions are created.
3 Transaction Invoice or Sales Order (Billing Order) The financial document sent to families. Can be a standard invoice or a sales order (called a "billing order"), depending on the client's billing model.
4 Payment Payment Record / Customer Deposit Payment applied against the transaction. Created automatically through RPS processing (credit card or direct debit).

Key point: These are standard NetSuite records. Feoda does not replace NetSuite's accounting engine — it builds an automation layer on top of it.

The 4 Feoda Processes

┌──────────────────────┐    ┌──────────────────────┐    ┌──────────────────────┐    ┌──────────────────────┐
│  1. NETSUITE SETUP   │───▶│ 2. BILLING CONFIG    │───▶│ 3. TRANSACTION GEN   │───▶│ 4. PAYMENT PROCESS   │
│                      │    │                      │    │                      │    │                      │
│ • Create/import      │    │ • Link items to      │    │ • Review & verify    │    │ • Parent receives    │
│   debtors            │    │   students by rules  │    │   billing totals     │    │   payment link       │
│ • Create/import      │    │ • Configure billing  │    │ • Generate invoices  │    │ • Selects payment    │
│   students           │    │   period, terms,     │    │   or billing orders  │    │   method & schedule  │
│ • Set up items       │    │   payment options    │    │ • Send emails with   │    │ • RPS processes      │
│ • Set up discounts   │    │ • Generate billing   │    │   invoice PDFs       │    │   payments auto-     │
│                      │    │   instructions       │    │                      │    │   matically          │
└──────────────────────┘    └──────────────────────┘    └──────────────────────┘    └──────────────────────┘

Process 1: NetSuite Records Setup

1.1 Debtors (Customer Records)

  • Source: Imported from the school's Student Information System (SIS) or created manually.
  • Structure: Each debtor represents a family, not an individual parent. One debtor may have multiple students.
  • Fields:
  • Debtor ID: Unique identifier (numeric or alphanumeric, depending on school convention)
  • Debtor Name / Billing Title: The mailing/billing name for correspondence
  • Contact details: Email address(es) for invoice delivery and payment links
  • Students (sub-list): Students attached to the debtor record

1.2 Items

  • Service Items: Tuition fees, campus levies, laptop hire fees, extracurricular fees, enrollment deposits, online programs, building levy
  • Discount Items: Sibling discounts, staff discounts, scholarship discounts, boarding discounts
  • Items are configured globally and then mapped to students through the Billing Configurator and billing instructions.

1.3 Year Levels / Student Types

  • Define which items apply to which students based on:
  • Year level (e.g., laptop hire for years 7–10 only)
  • Student type (all students, staff children, boarding students, indigenous students, scholarship recipients)
  • Family order (for sibling discounts — 1st child, 2nd child, 3rd+ child)

Process 2: Billing Configurator

The Billing Configurator is Feoda's proprietary tool for automating the item-to-student mapping. It exists as a NetSuite Suitelet and is the layer that creates billing instruction and billing instruction applied-to records automatically based on user selections.

⚠️ Current State: The configurator is approximately 10% functional. The UI (suitelet) exists with all 9 tabs, but most back-end logic is incomplete. See Configurator Discussion Meeting Extraction for full architectural discussion and recommendations.

2.1 Configurator Suitelet — Tab Structure

The configurator suitelet is organized into 9 tabs. When fully functional, a school administrator would progress through these tabs to configure their billing cycle:

Tab Name Purpose
1 Segmentation Select which charge categories and discount categories apply. Data sourced from the billing engine type field on item records.
2 Items Select which items from the NetSuite item list should be included in this billing cycle. Not all items are billed every cycle (e.g., one-time fees, discontinued items).
3 Families/Debtors Pull the full list of families and confirm which ones to include. Pre-selects all active debtors — school deselects any that need manual handling. Also serves as a reconciliation checkpoint (student count verification).
4 Items-to-Years Mapping Map each selected item to the year levels and student types it applies to (e.g., laptop hire → year 8 and 11 only; staff discount → staff student type only). Student types are configurable per school.
5 Exceptions Exclude specific students, families, or groups from particular items or rules that would otherwise apply to them.
6 Scheduling/Period Set the billing period (start date, end date), configure preset messages for families with pending balances, and set exclusion rules for debtors with outstanding amounts.
7 Payments Configure which payment options appear on the parent payment suitelet (credit card, bank/direct debit) and the available frequencies (weekly, fortnightly, monthly) with configurable split counts per frequency.
8 Mid-Year Handle students who enroll mid-year — sets a different billing period and uses a divisible value to calculate prorated amounts. One-time setup, not run per mid-year enrollment.
9 Maintenance Data cleansing utility — deletes stale custom records created by previous billing cycles. Can be scheduled to auto-clean every 3 or 6 months.

After completing the tabs, the configurator executes and creates: - Billing Instruction records — one per item per year level (e.g., "Student Year Fee 7"), storing the item, year level, billing period, and engine type - Billing Instruction Applied To records — child records listing every student/family that instruction applies to

2.2 Input Modes

Three modes exist for getting billing instructions into the system. The mode depends on the school's SIS data quality and integration maturity:

Mode When Used How It Works
Automated Configurator SIS data quality supports automated processing School uses the configurator suitelet (or subset of tabs). Billing instructions generated automatically on submit.
CSV Upload SIS data quality requires manual reconciliation Billing instructions prepared in CSV, uploaded into billing instruction records. Team reconciles student counts with the school before generating invoices.
Excel Import Data comes from a data warehouse rather than a live SIS Billing instructions built in Excel, imported into the Family Billing Profile custom record. Review suitelet provides filters for school verification before execution.

Goal: Evolve toward a single, robust billing configurator that handles all client variations through configuration rather than separate processes.

2.3 Three-Layer Architecture Vision

The strategic direction for the configurator is a three-layer architecture:

Layer Description
Layer 1: Generic Base Core billing engine features (~10-15 features) that apply to any school. Standard, never customized per client. Deployed as a bundle/app onto any NetSuite account.
Layer 2: Configurable Point-and-click configuration for school-specific preferences — items, year mappings, payment options, billing frequency. This is what the configurator UI handles.
Layer 3: Custom/Exception An open framework for school-specific exceptions that can't be handled by configuration. Must integrate back into the central solution. Each exception should be evaluated for promotion to the generic base.

See Configurator Discussion Meeting Extraction for the full architectural discussion behind this recommendation.


Process 3: Transaction Generation

3.1 Review & Verification

Before generating transactions, the school reviews: - Total number of students billed (must match expected count) - Total amount per item category - Discounts applied correctly - Any anomalies or duplicates

Review tools vary by client: - Automated configurator: Built-in summary screen showing totals - Review suitelet: Custom filtered view with drill-down to debtor-level detail (Pymble) - Manual review: Spreadsheet reconciliation with the school (Al Faisal)

If totals don't match, billing instructions are deleted and regenerated.

3.2 Generate Transactions

Transaction Type Used By Description
Invoice Saint Edwards, Al Faisal Standard NetSuite invoice. Straightforward — represents the amount owed.
Billing Order (Sales Order) Pymble A sales order used as a billing container. Invoices are generated from it incrementally (e.g., one per term). School clicks "Next Bill" to generate the next invoice. Offers more flexibility for term-based billing with split amounts.

3.3 Email Distribution

After invoice generation: - Invoices are emailed to families as PDF attachments - Email templates include: - Invoice summary - Payment suitelet link (unique URL per family) - Payment instructions - Follow-up reminder emails sent for outstanding invoices


Process 4: Payment Processing

4.1 Parent Payment Setup

Parents receive a unique URL (generated from debtor code + transaction ID) leading to a payment suitelet:

  1. Authentication: OTP verification or SSO via JWT token (e.g., Pymble integrates SSO through the school's parent portal)
  2. Payment information display: Billing title, family code, number of students, itemized charges and discounts, credit/debit balances
  3. Payment method selection (varies by school):
  4. Credit card (via eway)
  5. Direct debit / bank (ABA file)
  6. Edstart (third-party education fee payment provider)
  7. B Pay (Australian payment reference system)
  8. Schedule selection (varies by school):
  9. Flexible date (parent chooses when — weekly, fortnightly, monthly)
  10. Fixed term dates (e.g., four dates per year aligned to school terms)
  11. Annual (full year payment, optionally split across dates)
  12. Confirmation: Summary screen → confirm → RPS (Recurring Payment Schedule) created

4.2 "Paid from Portal" Protection

Once a parent submits their payment selection, a "Paid from Portal" checkbox is set on the billing record. This prevents: - Another parent in the same family from making a duplicate payment - The second parent sees a read-only summary instead of the payment selection screens

4.3 Automated RPS Processing

A daily scheduled script processes payments: - Picks up all RPS records where the processing date matches today - For credit card: submits to eway, receives authorization response - For direct debit: generates ABA file for bank upload - Creates payment records in NetSuite and applies them to the invoice

See: RPS Payment Processing for full details.

4.4 Monitoring

Schools monitor billing status through: - Saved searches: Outstanding payments, collection rates, overdue invoices - RPS status tracking: Processed, pending, cancelled, refunded - Payment history: Full audit trail per family


Client Implementation Comparison

Feature Saint Edwards Al Faisal Pymble
Billing configurator Automated (Step 1-2-3-4) CSV upload Excel import via Family Billing Profile
SIS integration Direct Manual (CSV due to data quality challenges with Central SIS) Data warehouse → Excel
Transaction type Invoice Invoice Billing Order (Sales Order)
Billing frequency Yearly Per term (4 terms) Termly or Annual (parent choice)
Payment date flexibility Flexible (parent chooses) Fixed term dates Fixed term dates or annual split
Payment methods Credit card, Direct debit Credit card, Direct debit Bank, Credit card, Direct debit, Edstart, B Pay
Parent portal Feoda suitelet Feoda suitelet My Pymble → redirects to Feoda suitelet
Building levy option No No Yes (parent opts in/out)
Annual billing discount No No Yes (2.5%)
Opening balance Post-invoicing (bulk or individual) N/A Included in suitelet display
Email via NetSuite email NetSuite email Portal notification + email

Lessons & Strategic Insights

  1. Configurator-first approach: The billing configurator should be the standard path for all new clients. Investing in a robust, configurable version that handles variations (flexible vs fixed dates, term vs annual, building levy, extracurriculars, discount tiers) reduces per-client customization and accelerates onboarding.

  2. SIS data quality is critical: The success of the automated configurator depends on reliable data from the school's Student Information System. Where SIS data is not yet reliable, the CSV/Excel path provides a workable interim solution while the integration is stabilized.

  3. Scope clarity during onboarding: Defining and prioritizing billing requirements during the pre-sale and discovery phase ensures the implementation team can plan effectively. Schools typically need all billing features from day one, so a phased rollout of individual billing capabilities is not practical — the configurator needs to support the full scope at launch.

  4. Proven scalability: Feoda's commercial implementation (BPOS — 8 companies, 6 countries, 4 business lines) demonstrates the platform can support complex, multi-entity billing at scale. The same underlying patterns apply to education billing.

  5. Version control discipline: Each new school onboarding risks creating a divergent version of the billing solution. The three-layer architecture (generic base → configurable → custom) is essential to prevent version fragmentation. The development account must remain the permanent central source of truth, with code flowing: GitHub → dev account → demo + client accounts.

  6. Standardization opportunity: There is an opportunity to consolidate the parent payment suitelet into a single configurable version that adapts to each school's requirements (payment methods, billing options, portal integration) through configuration rather than per-client builds.