What's New1.6.4 - Subscription API – 1.6.4

PlugStream Change Logs

PlugStream is continuously updated to improve reliability, security, and user experience. This page provides a transparent record of every software and firmware release, including what changed and why it matters.

Latest

Billing API 1.5.6

Billing API – 1.5.6

1.5.6
Tests: passed (190/190)Coverage: 53.3%
Service
October 26, 2026
Tags
#billing-api

Billing API – 1.5.6

1.5.6 (2026-10-26)

Bug Fixes

  • accounts: a duplicate billing account is a 409, not a 500 (01d96ed)
  • config: a blank DATABASE_URL falls back to DATABASE__URL (FINDINGS #34) (e9f46e5)
  • config: Debug output never prints Xero, database or broker credentials (FINDINGS #34) (ed894b8)
  • config: only an explicit [secure] value turns XERO_DRY_RUN off (FINDINGS #26) (b353f6c)
  • errors: a 500 database_error body no longer echoes the driver message (FINDINGS #32) (4ce024a)
  • idempotency: a successful operation never runs twice under one key (FINDINGS #25) (0d48d42)
  • invoices: an amount too large to store is a 422, not a 500 (932cc71)
  • invoices: keep an invoice's lines in the order they were given (e4891f3)
  • invoices: write an invoice and its lines at once, and never strand claimed events (7b52265)
  • order-sync: keep order-api's address out of the sync-queue warning (11c5fcd)
  • order-sync: never raise two customers' orders on one "unknown" account (4ba7ce4)
  • runs: a PATCH cannot approve, execute or reopen a billing run (daf2efa), closes #15
  • runs: a run whose invoice never reached Xero is failed, not completed (05bbc1b)
  • subscriptions: don't complete a run whose events could not be reported (49dd07f)
  • subscriptions: one tenant's failure no longer stops the monthly job (0347ce0)
  • subscriptions: overlapping monthly jobs draft one run per account (15a5feb)
  • subscriptions: report events invoiced once Xero holds their invoice (191b8fa)
  • suspension: a hung Sentinel can't lock the operator out of a retry (b7b1600)
  • suspension: a suspension or resume Sentinel did not carry out is not done (795ddfc)
  • suspension: take a suspension decision only from the status it applies to (e9aa7b9)
  • xero: make XERO_TENANT_ID optional, as the README documents (b63d700)
  • xero: never raise an invoice in Xero twice or re-email a sent one (d5c7fb1), closes #11 #1
  • xero: never send a paid or voided invoice again (c4cbab5), closes #6
  • xero: record a failed customer email like any other Xero failure (e66e816)
  • xero: record a replayed webhook delivery once (abbda1a)
  • xero: stop trusting dry-run placeholder ids once dry run is off (d8abffc)

Performance & SLO

SLO Targets:
P95 < 200msP99 < 500msAvailability > 99.5%
Latest (Last 7 Days):
P95: 1.7ms ✅P99: 2.2ms ✅Availability: 100.00% ✅
Worst (Last 7 Days):
P95: 1.7ms ✅P99: 2.2ms ✅Availability: 100.00% ✅
Loading performance data...
Performance Tests:
Passedstaging test
10/27/2026
P95: 1.7msP99: 2.2msHTTP errors: 0.00%Availability: 100.00%13,015 requests
HTTP statuses: 200: 13,015