An invoice is a header with lines; the totals are stored on the header when it is issued so a later price change does not rewrite history. Payments are recorded against invoices and may be partial. A recurring schedule describes an invoice to raise again on an interval and remembers when it last did.
$ npx vela create my-app --schema invoicingEvery collection, field and relation above becomes a PocketBase migration in the new project. Change any of it afterwards with vela generate migration --ai, which opens this same diagram as an editor.