Skip to content

v0.1.0

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 26 Oct 08:56
790fb91

0.1.0 (2026-10-26)

⚠ BREAKING CHANGES

  • providers: the API lists every supported provider without credentials, and live and sandbox keep to their own keys (#141)
  • deploy: the stack no longer starts without real secrets in .env.
  • payments: Stripe needs webhookSecret and Flutterwave secretHash configured, or their payments are not confirmed.
  • auth: portal links with ?key= stop working; keys with resource scopes are limited to those resources.

Features

  • add PayPal provider, fix multi-provider dashboard, regroup analytics KPIs (f120fe8)
  • apply PR review comments, analytics KPIs backend endpoint, ARR display, tooltips, provider ordering, multi-provider checkout (2fcdff1)
  • auth: two-step sign-in with an authenticator app, and organisations that require it (#134) (857bd87)
  • charges: charge a customer once or on a plan, from the dashboard or in one API call (#143) (9234bba)
  • cloud plans, managed payments for every payment, and a simpler managed sign-up (#129) (24cd918)
  • cloud-plans: African pricing in every Flutterwave currency, a generous Free tier, unlimited Growth, and Partner (#131) (b007d89)
  • cloud-plans: Growth at $15, and Enterprise with no public price (#133) (60ac503)
  • currencies: custom currencies, a reporting currency, and daily exchange rates kept by date (#138) (0e05894)
  • dashboard: an Overview that shows setup, payments and your plan; Analytics in tabs (#132) (147bb02)
  • dashboard: branded sign-in pages, brand fonts, kept out of search (b2afe54)
  • dashboard: managed payments gets its own tab (#125) (85e75ad)
  • dashboard: Sandbox switch sits with Documentation in the sidebar (#126) (a666e84)
  • dashboard: the animated mark is the loading indicator everywhere (58ba521)
  • friendlier SDKs, kept in step with the API and docs (46694f1)
  • landing: a premium look: a deep hero with the product rising out of it, a facts strip, dark feature bands and a lit Growth plan (#139) (5bde19b)
  • landing: rebuild the landing page on the PimaBill brand (833b8eb)
  • landing: show the product, compare fairly with Stripe Billing, Lago and Chargebee, and logos on the payment rails (#137) (ccbac7b)
  • managed: tell merchants when their managed payments are approved, refused, paused or restored (#140) (1a55649)
  • money movement, ledger, crypto, team access and migrations (425c284)
  • money: change managed payments contact details and payout destination (#124) (721c788)
  • money: managed payments collect mobile money and PayPal too (e4cbc87)
  • money: managed payments collect mobile money and PayPal too (b56270a)
  • money: managed payments pay out to mobile money, bank or PayPal (202e936)
  • money: managed payments pay out to mobile money, bank or PayPal (83e81c0)
  • organisation access controls, a platform service API and an operator command (165eb23)
  • organisation access controls, a platform service API and an operator command (d012579)
  • plan limits an operator can set per organisation (73cc5c4)
  • plan limits an operator can set per organisation (0a98d35)
  • platform: control-plane service API exposes the console's organisation data (dcde48b)
  • platform: control-plane service API exposes the console's organisation data (e55475e)
  • platform: the platform console moves to the private control panel (e5ae4e9)
  • platform: the platform console moves to the private control panel (5b804fd)
  • price PimaBill Cloud at $15/month (656b836)
  • price PimaBill Cloud at $15/month and capitalise the wordmark (92106a1)
  • providers: the API lists every supported provider without credentials, and live and sandbox keep to their own keys (#141) (32456cf)
  • rebuild the landing page, sign-in pages and docs on the PimaBill brand (b80d758)
  • sandbox mode, a Live/Sandbox dashboard switch, and SDK publishing (#116) (239a0d6)
  • sandbox: managed payments in the sandbox follow the live approval (#145) (ccd314f)
  • sdk: PimaBillClient everywhere and the hosted API by default (ebdbba8)

Bug Fixes

  • add noopener,noreferrer to checkout window.open to prevent tabnabbing (bea3798)
  • add proper auth error handling in PesapalProvider.getAccessToken (12d91c6)
  • address CI findings on the system review changes (1c7f7d9)
  • api: describe the responses of the money, ledger and team endpoints (132382e)
  • api: optional, typed query parameters and a real amount type (77cc2ec)
  • api: typed parties, whole-number counts and one request type per endpoint (28e08df)
  • auth: enforce API key scopes, hash keys, scope portal links (f55aad9)
  • Auto-register Pesapal IPN URL on provider creation (Option A) (c2c2134)
  • billing: bill each period exactly once, and fix dunning (55a7287)
  • currency-aware amount formatting and environment label in Pesapal charge errors (010acbc)
  • dashboard: hydration on every page, revenue months, honest charts, brand colours and provider logos (#136) (159e78e)
  • database: stop tenant pools exhausting Postgres connections (85197e9)
  • database: stop tenant pools exhausting Postgres connections (7e75ac6)
  • deploy: refuse placeholder secrets; document the security changes (762cfac)
  • deploy: ship the compose file and pull images from this repo's owner (c743e03)
  • deploy: ship the compose file and pull images from this repo's owner (b2cb7b4)
  • Docker compose on server (e6525cc)
  • Docker compose on server (c7017ef)
  • handle webhook pending status, fix priority nullish coalescing, tabnabbing security (ab02851)
  • keep platform access fields out of the sign-in response (b53dd96)
  • landing: three cloud plans with self-hosted on its own, a Growth button that sells, and managed payments described without our providers or fee (#135) (4306fa3)
  • migrate tenant databases as the database admin (7083383)
  • migrate tenant databases as the database admin (364e2f9)
  • money: say the managed fee comes on top of the provider's fee (88ee02c)
  • money: say the managed fee comes on top of the provider's fee (c446ed6)
  • one broken tenant database no longer keeps the API down (5adc6d0)
  • one broken tenant database no longer keeps the API down (23a5ef6)
  • payments: verify every payment notification before settling (43ef528)
  • paypal: remove redundant application_context causing every checkout to 422 (243f5e9)
  • paypal: remove redundant application_context causing every checkout to 422 (df58681)
  • Pesapal checkout 'Invalid IPN URL ID' by supporting ipnId credential (de4aae3)
  • regenerate backend/package-lock.json to resolve CI npm ci failure (82f040a)
  • resolve Pesapal transaction amount limit error (1199674)
  • sandbox: no cloud plans in the sandbox (#130) (c730c8a)
  • sdk: one bearer token, positional ids, binary invoice PDF (09ba8aa)
  • security: block SSRF, encrypt with AES-GCM, run each cron once (948df5f)
  • security: patch vulnerable dependencies, least-privilege workflows, and a stricter plain-text email (#142) (d7ccc32)
  • ship the brand fonts with the apps instead of fetching them at build time (59d50d4)
  • ship the brand fonts with the apps instead of fetching them at build time (2815d94)
  • webhooks: keep looking when a shared provider account is not this tenant's (d89d847)
  • webhooks: keep looking when a shared provider account is not this tenant's (579d01d)
  • write the brand as PimaBill in the wordmark, not lowercase (f54fce9)