Add NATS account-balance SoT and statement review for customers, CS, and sales
Some checks are pending
offline / test (push) Waiting to run

Internal billing now uses verae.billing.* request-reply and pubs. zappier-account-balance tracks prepaid, credits, usage, and payments. Portal, admin, CS, and sales all review the same statement. Independent Forgejo repos stay split via push-module-repos.
This commit is contained in:
George Lambert 2026-09-11 15:35:37 -04:00
parent a1a5b957fd
commit ac38676645
135 changed files with 3078 additions and 130 deletions

View file

@ -0,0 +1,12 @@
# NATS — zappier-account-balance
Queue group `account-balance`. This process is the source of truth for prepaid cents.
| Direction | Address | Kind | Body |
|-----------|---------|------|------|
| IN | `verae.billing.statement.get` | request-reply | `{ customerId }` → statement |
| IN | `verae.billing.balance.get` | request-reply | `{ customerId }` → statement |
| IN | `verae.billing.balance.adjust` | request-reply | `{ customerId, cents, reason, agent, kind }` |
| IN | `verae.billing.usage.recorded` | pub | `{ customerId, endpointId, cents, at }` (debits prepaid) |
`payment.recorded` and `credit.applied` are fan-out events from publishers; prepaid mutations go through `balance.adjust`.

View file

@ -0,0 +1,3 @@
# zappier-account-balance
NATS source of truth for prepaid balances, credits, usage events, and payments.

View file

@ -1,3 +1,7 @@
# zappier-accounting-export NATS
# NATS — zappier-accounting-export
None.
| Direction | Address | Kind |
|-----------|---------|------|
| OUT | `verae.billing.statement.get` | request-reply (review) |
IIF/CSV export remains HTTPS to zappier-edge admin.

View file

@ -1,3 +1,5 @@
# zappier-accounting-export
Exports zappier invoices to QuickBooks IIF and accounting CSV.
Accounting export of invoices to QuickBooks IIF and CSV, plus **review** of customer credits, balances, usage, and payments over NATS.
Forgejo: https://git.georgelambert.org/marchon/zappier-accounting-export

View file

@ -1,3 +1,8 @@
# zappier-customer-service NATS
# NATS — zappier-customer-service
None. HTTPS only to zappier-edge admin.
| Direction | Address | Kind |
|-----------|---------|------|
| OUT | `verae.billing.statement.get` | request-reply (review) |
| OUT | `verae.billing.balance.adjust` | request-reply (credits) |
HTTP fallback: `ACCOUNT_BALANCE_URL` then zappier-edge admin. Zapier cloud never connects here.

View file

@ -1,3 +1,7 @@
# zappier-customer-service
CS department API for prepaid credit additions. Writes `balanceCents` on zappier-edge.
CS department API and UI for prepaid credit additions and **review** of credits, balances, usage, and payments.
Internal path: NATS `verae.billing.statement.get` / `verae.billing.balance.adjust` → account-balance. HTTP fallback to `:3010` then zappier-edge admin.
Forgejo: https://git.georgelambert.org/marchon/zappier-customer-service

View file

@ -1,3 +1,7 @@
# zappier-sales-pricing NATS
# NATS — zappier-sales-pricing
None.
| Direction | Address | Kind |
|-----------|---------|------|
| OUT | `verae.billing.statement.get` | request-reply (review) |
Pricing writes remain HTTPS to zappier-edge admin.

View file

@ -1,3 +1,5 @@
# zappier-sales-pricing
Sales department per-customer tier and multiplier. Writes through zappier-edge `/admin/api/customers`.
Sales department API and UI for per-customer tier/multiplier and **review** of the same NATS statement as CS and the customer portal.
Forgejo: https://git.georgelambert.org/marchon/zappier-sales-pricing

View file

@ -1,10 +1,15 @@
# NATS — zappier-edge
This process **does not subscribe or publish** on NATS.
Zapier cloud still never connects to NATS. The edge process **does** publish and request on the private billing bus.
| Direction | Address | Peer | Body |
|-----------|---------|------|------|
| IN HTTPS | `/v1/*` | Zapier Platform app | JSON + `x-api-key` |
| OUT HTTPS | middleware `/zapier/v1/*` | verae-middleware | same tenant request |
| OUT NATS | `verae.billing.usage.recorded` | account-balance | meter event |
| OUT NATS | `verae.billing.payment.recorded` | account-balance / others | portal reload |
| OUT NATS | `verae.billing.credit.applied` | account-balance / others | admin/CS credit |
| OUT NATS | `verae.billing.statement.get` | account-balance | portal/admin review |
| OUT NATS | `verae.billing.balance.adjust` | account-balance | prepaid mutation |
NATS is private to middleware workers and archives.
Jobs, archive, and webhooks stay on middleware workers.