Skip to content

v0.7.0 — The bank-debit release

Choose a tag to compare

@github-actions github-actions released this 31 Jul 13:54
· 335 commits to main since this release
0bf79eb

Direct debit lands, Recurso becomes agent-operable, a public demo sandbox ships — and the money path underneath gets a deep correctness sweep and a now self-verifying ledger safety net.

Highlights

  • Bank debit — ACH (US) and GoCardless SEPA/Bacs (UK/EU) direct-debit rails: mandate-first billing, settlement, chargeback/return reversal, and dunning, wired end-to-end.
  • Agent-operable billing (MCP) — an MCP server lets AI agents run billing operations safely, with role-scoped tools.
  • Demo mode — DEMO_MODE=true turns an instance into a safe public sandbox (every outward adapter forced to its mock, seeded data, hourly reset); docker-compose.demo.yml serves it in one command.
  • More integrations — NetSuite (SuiteTalk) and Tally accounting connections; webhook pause/resume; a usage raw-event stream + inspector.

Reliability & money-path correctness

  • Security — every bring-your-own per-connection webhook money-move is now bound to its own tenant (invoice settle/refund/VA reconcile); refund issuance and wallet/offline actions are role-gated.
  • Ledger completeness — two invoice-creating flows (quote conversion, gift purchase) that posted no double-entry leg are fixed; quote conversion was also outright broken against Postgres and is now atomic.
  • Billing correctness — pay-in-advance no longer bills paused/canceled subs; gift subscriptions no longer auto-renew and dun the recipient; accepted retention-discount offers are now actually applied; recurring coupons, US nexus gating, plan-change tax, and revenue recognition all corrected; frontend money inputs standardized on dollars (exponent-aware).
  • A self-verifying safety net — the ledger invariant harness now drives the real service create-paths through the reconciler, and the reconciler checks credit-note legs as well as invoice legs. Both invoice and credit-note ledger legs are now guarded — the harness caught a real broken path the moment it was wired.

See CHANGELOG.md for the full list.

Container image

docker pull ghcr.io/recurso-dev/recurso:v0.7.0