# @mostajs/school-billing — DEVRULES (§4 + #3 condensés)
**Auteur** : Dr Hamid MADANI <drmdh@msn.com> · **Date** : 2026-06-18 · **Statut** : cas C mince (P2 ATC F5).
## §4
Frais scolaires (inscription/mensuel/par niveau) + **remises/promotions** + factures/reçus + abonnement mensuel.
Le moteur paiement/récurrence existe (`payment`+`subscriptions-plan`) → school-billing = la **couche frais scolaires mince** qui les compose.
## §3 (API)
`createSchoolBilling({repositories,payment?,subscriptions?,numbering?,fileExport?})` → `fees.{define,list}`, `discounts.{define,list,byCode}`,
`invoices.{create(feeIds,discountCode),pay,listByStudent,outstanding,get,receipt}`, `subscribeMonthly(studentId,planId)`, `revenue({from,to})`.
**Compose (§10)** : payment (encaissement), subscriptions-plan (mensuel), numbering (n° reçu), file-export (reçu). Alimente reporting. Délègue l'élève à @mostajs/school.
## §4 (tests) : facture(somme), remise %/montant+promo, paiement(payment), outstanding+revenu, reçu(file-export), mensuel(subscriptions). (6 verts)
