Changelog
payments-recurring-core 0.2.9 - Default allowance cap 3× (was 12×)
defaultAllowanceCapUsdc now approves 3 billing periods of USDC (month/week/year/five_minute), not 12. New checkouts only; existing mandates keep their stored cap.
pnpm --filter @autlantic/payments-recurring-core publish --access public --no-git-checks
# then republish chain-evm / billing-engine / payments-recurring against 0.2.9 and bump hosting pinschain-evm 0.2.17 - Charge when this period is payable (use this, not 0.2.16)
Same as 0.2.16: preflightLiveCharge no longer hard-blocks on the rolling cap when leftover approval still covers this invoice.
Do not use 0.2.16. It was published with bare npm publish and left a broken workspace:* dependency on npm. Use 0.2.17 (pnpm publish so deps resolve to [email protected]).
pnpm --filter @autlantic/chain-evm publish --access public --no-git-checks
# bump billing-hosting pins to [email protected]chain-evm 0.2.16 - BROKEN publish (workspace:* deps)
Published incorrectly via npm publish. Use 0.2.17 instead.
billing-engine 0.3.19 / chain-evm 0.2.15 / payments-recurring-core 0.2.8 - Quiet defer for CHARGE_NOT_DUE
Renewal worker must not treat vault NOT_DUE (off-chain due clock ahead of on-chain periodEnd) as a failed customer payment.
- Core: first-class
CHARGE_NOT_DUE,isChargeNotDueFailure,deferRetryAtFromOnChainPeriodEnd - chain-evm:
preflightLiveChargereturnsCHARGE_NOT_DUE+periodEndUnix(no longerRELAYER_ERROR) - Engine:
deferInvoiceUntilOnChainDue;processDueInvoicesLiveaccepts{ defer: true, retryAt }and never emitsinvoice.payment_failed/ burns attempts for not-due - Aligns off-chain
dueAt/currentPeriodEndforward to on-chainperiodEndwhen deferring - Hosting must bump pins and return defer from the live submit callback; platform must skip
renewal_payment_failedemail for not-due (defense in depth)
pnpm --filter @autlantic/payments-recurring-core publish --access public --no-git-checks
pnpm --filter @autlantic/chain-evm publish --access public --no-git-checks
pnpm --filter @autlantic/billing-engine publish --access public --no-git-checks
pnpm --filter @autlantic/payments-recurring publish --access public --no-git-checks
# bump billing-hosting pins; wire worker defer; platform notify skipbilling-engine 0.3.18 / chain-evm 0.2.14 - Checkout vault bind + one-time txHash exclusivity
P0 money-finalization hardening for hosted checkout:
setOnChainSubscriptionIdrefuses an on-chain id already owned by another non-canceled subscriptionlistAllOneTimePayments+findOneTimePaymentByTxHash;confirmOneTimePaymentrejects reused live0xhashesassertVaultSubscriptionMatchesCheckoutverifies vault customer / merchant / amount before activate bind
pnpm --filter @autlantic/chain-evm publish --access public --no-git-checks
pnpm --filter @autlantic/billing-engine publish --access public --no-git-checks
# bump billing-hosting pins to [email protected] and [email protected]billing-engine 0.3.15 / payments-recurring 0.3.16 - cancelSubscriptionsMatching
Enterprise store offboarding: cancel all merchant subscriptions for a metadata.creatorId.
- Engine:
cancelSubscriptionsMatching({ merchantId, creatorId, billingKinds?, immediate?, reason?, statuses? }) - Immediate cancel voids open invoices;
attemptInvoiceCharge/ due processors skipcanceledsubscriptions - SDK:
AutlanticBilling.cancelSubscriptionsMatching(...)→POST /v1/subscriptions/cancel-matching - Idempotent: already-canceled rows return in
alreadyTerminal - Metadata: Autlantic uses
billingKind=platform|platform_lifetime|creator_membership|creator_passpluscreatorId
pnpm --filter @autlantic/billing-engine publish --access public --no-git-checks
pnpm --filter @autlantic/payments-recurring publish --access public --no-git-checks
# bump billing-hosting + Autlantic platform pinsbilling-engine 0.3.14 - Workspace bands, plan-change proration, and usage metering
Published on npm. Hosting pins 0.3.14 and wires portal/API/ops; Autlantic platform pin bump is optional (feature is hosting-side).
Workspace bands (Phase 1)
- Exported workspace band constants: Live free 100 successful charges / UTC month, Growth $49 USDC/month, 7-day soft overage grace, error code
workspace_plan_required - Pure helpers:
isLiveFreeBandExceeded,workspaceEntitlementFromState,countsTowardLiveSuccessfulCharges,isWorkspaceGrowthFeeMetadata,utcMonthKey - Test mode never enforces bands; Growth fee metadata is excluded from the free-band counter
- No % take rate (flat workspace fee only)
Plan-change proration (Phase 4)
previewPlanChangeProration/changeSubscriptionPlanfor mid-cycle upgrades and downgrades- Credits unused time on the old plan, charges remaining time on the new plan; net due floored at 0 with leftover credit in invoice metadata
- Hosting:
POST /v1/subscriptions/:id/change-plan(priceIdoramountUsdc)
Usage metering (Phase 5)
createUsageRecord,aggregateUsageQuantity,usageAmountUsdc,aggregateUsageIntoInvoice,createMemoryUsageStore- Metered quantity aggregation into open invoices (idempotent keys, increment/set actions)
- Hosting:
POST /v1/usage_records,GET /v1/subscriptions/:id/usage,POST /v1/subscriptions/:id/usage/aggregate
pnpm --filter @autlantic/billing-engine publish --access public --no-git-checks
# bump billing-hosting pins to billing-engine 0.3.14payments-recurring 0.3.15 - couponCode on create
CreateSubscriptionRequest.couponCode/CreatePaymentRequest.couponCode(optional)- Hosted API applies the coupon at create (same math as checkout apply;
duration: once→ first open invoice / payment only) - Local sandbox stores
couponCodein metadata only (no coupon store)
pnpm --filter @autlantic/payments-recurring publish --access public --no-git-checks
# bump billing-hosting + Autlantic platform pins to 0.3.15billing-engine 0.3.13 - Reload must not resurrect deleted payment links
replaceSnapshoton memory + write-through stores: full in-memory replace without queuing Prisma upsertsreloadPersistedBillingStoreusesreplaceSnapshotso portal delete + concurrent reload cannot resurrect rows- Fixes inconsistent Payment links UI (deleted links returning on refresh; empty vs disabled flicker)
pnpm --filter @autlantic/billing-engine publish --access public --no-git-checks
# bump billing-hosting pins to 0.3.13billing-engine 0.3.12 - Correct npm publish (pnpm)
- Republish payment-link flush/edit/delete after
0.3.11was published withnpm publishand left brokenworkspace:*dependency ranges - Always use
pnpm --filter @autlantic/billing-engine publishso peer workspace deps rewrite to registry versions
pnpm --filter @autlantic/billing-engine publish --access public
# bump billing-hosting pins to 0.3.12billing-engine 0.3.11 - Payment link disable flush, edit, delete (do not install)
Published incorrectly via npm publish (workspace:* deps). Use 0.3.12 instead.
flushBillingStorePersist: await write-through Prisma/file queue so portal disable survives reloadupdatePaymentLink/deletePaymentLinkfor merchant-editable fields and hard deleteresolvePaymentLinkStatustreatsdisabledAtas disabled
Docs - Magento Packagist, Woo 1.1.3, Shopify custom wiring
- Magento install is Packagist-first:
composer require autlantic/module-billing:^1.1(Packagist 1.1.0) - WooCommerce docs/examples use zip 1.1.3
- Commerce plugins: Shopify custom wiring (SDK + payment links + Admin API) while native checkout stays blocked (external) on Payments Partner
- Languages matrix and SDK README aligned
billing-engine 0.3.10 - Incomplete checkout reuse and expiry
createOrReuseSubscription: resume the same incomplete checkout for the same merchantRef (or plan + customer) instead of minting duplicatesexpireIncompleteCheckouts: cancel abandoned incomplete sessions after 24h (configurable) and void open invoicesprocessDueInvoicesLive: skip incomplete checkouts that never calledvault.subscribe()so they are not charged or emailed as renewals
pnpm --filter @autlantic/billing-engine publish --access public
# bump billing-hosting pins to 0.3.10, then deploy billing-api + billing-workerDocs - Commerce plugins (WooCommerce, Magento, Shopify)
- New guide: Commerce plugins — payment-link checkout, webhooks, install links
- Languages matrix includes WooCommerce, Magento 2, and Shopify
- Mirrors: woocommerce-autlantic, magento-autlantic, shopify-autlantic
- Shopify checkout listing still requires Shopify Payments Partner approval
0.3.14 / core 0.2.7 / chain-evm 0.2.11 / billing-engine 0.3.6 - Fractional allowance caps
- Round default allowance caps to 6 USDC decimals (fixes
0.1 × 12float noise) - Compare allowance / balance checks in USDC micros in
@autlantic/chain-evmpreflight
pnpm publish:sdk
# bump billing-hosting + Autlantic platform pins, then pnpm install0.3.13 - Catalog product/price writes and coupon CRUD (npm pending)
Hosted /v1/coupons is live. Client helpers and catalog writes land in @autlantic/payments-recurring 0.3.13 on main but are not on npm yet (latest published: 0.3.12). Until publish, call HTTP directly or pin from git.
- SDK (source):
createProduct,updateProduct,createPrice,updatePrice;listProducts({ includeInactive });listCoupons,createCoupon,updateCoupon,deleteCoupon - Hosted API:
POST/PATCH /v1/products,POST /v1/products/:id/prices,PATCH /v1/prices/:id,GET /v1/products?includeInactive=1 - Catalog intervals on write:
month|year|once|week|five_minute - Coupons HTTP:
GET/POST /v1/coupons,PATCH/DELETE /v1/coupons/:id(optionalscopeKey,metadata,expiresAt) - OpenAPI:
/v1/coupons+BillingCoupon. Guide: Coupons. Creator/platform metadata:source,creatorId,planId,oncePerMember. Billing is coupon SoT.
Publish when ready (OTP on npm):
cd /path/to/payments-sdk
git checkout main && git pull
pnpm publish:sdk
# then: promote main → production for docs; bump Autlantic platform pin to 0.3.13Docs - Registries, status, and trust
Package versions still 0.3.12 on npm until 0.3.13 publishes. Documents registry publishes, status, and portal/trust docs since 0.3.12:
- PHP:
autlantic/billing0.1.0 on Packagist (GitHub auto-update enabled) · PHP docs - Public status: status.autlantic.com live (API, portal, docs probes;
/api/statusand/healthz) · Status - Merchant portal: optional Google OIDC sign-in (
AUTH_GOOGLE_ID/AUTH_GOOGLE_SECRET) with Google Identity-compliant button - Docs: SOC 2 readiness outline (not a certification claim)
- Android:
com.autlantic:checkout0.1.0 on Maven Central · Android docs - Java:
com.autlantic:billing0.1.1 on Maven Central · Java docs - Enterprise readiness (Phases 1–6, brief): hosted API key rotation, audit log, and durable webhook retries; API versioning, rate limits, and idempotency docs; merchant test clock; reconciliation CSV exports and customer self-serve portal on hosting; Trust center, Status, and DPA outline template (pending counsel, not legal advice). No SOC 2 claim.
- .NET:
Autlantic.Billing0.1.0 on NuGet · .NET docs - Flutter:
autlantic_checkout0.1.0 on pub.dev · Flutter docs - React Native:
@autlantic/checkout0.1.0 on npm · React Native docs - SDK READMEs and API docs aligned to shared Autlantic branding standard (
sdks/README.STANDARD.md) - Guide: Device smoke test (Test-key phone / simulator walkthrough)
- Flutter / RN / .NET: registry publish steps in
sdks/PUBLISHING.md - Java:
com.autlantic:billing0.1.0 undersdks/java· Java docs - Example:
examples/mobile-checkout/java(port 3059),examples/mobile-checkout/dotnet(port 3060)
0.3.12 - Multi-language and mobile SDKs
@autlantic/payments-recurring0.3.12 on npm:AUTLANTIC_API_VERSION(2026-01-01),Autlantic-Versionheader,successUrl/cancelUrlon create subscription, payment, and payment link- Hosted API live pin:
Autlantic-Version: 2026-01-01onbilling.autlantic.com - Python:
autlantic-billing0.1.0 on PyPI - Go: module tag
sdks/go/v0.1.0 - PHP:
autlantic/billing0.1.0 (sdks/php/sdks/php/v0.1.0) - iOS Checkout (SPM): tag
sdks/ios/v0.1.0· iOS docs - Android Checkout: source in
sdks/android· Android docs (Maven Central pending) - Docs: Languages, Mobile, API versioning, Python, Go
- Example:
examples/mobile-checkout(pnpm example:mobile) with openable iOS/Android apps and Python/Go hosted backends - Autlantic platform dogfood pin:
@autlantic/payments-recurring0.3.12
0.3.11 - Fix npm dependency pins
- Republish with resolved semver deps (0.3.10 tarball incorrectly contained
workspace:*)
0.3.10 - Legal readme update
- npm README: Autlantic Limited operator line, About, Terms, Privacy, and Billing Terms links
- Root README and LICENSE: copyright holder Autlantic Limited (UK co. 17422039)
0.3.7 - Portal webhooks only
- Removed deprecated
billingWebhookUrl()/AUTLANTIC_BILLING_WEBHOOK_URLdelivery helper from@autlantic/billing-engine - Docs and npm README: merchants register webhook URL + secret in the portal; billing delivers only via those endpoints
@autlantic/billing-engine0.3.5,@autlantic/payments-recurring0.3.7
0.3.6 - Mode from API key
fromEnv()sandbox follows API key mode (abk_test_*/abk_live_*); live break-glass viaAUTLANTIC_BILLING_ALLOW_LIVE_SANDBOX- Helpers:
billingModeFromApiKey,sandboxFromApiKeyAndEnv @autlantic/payments-recurring0.3.6
0.3.5 - Resume + first-period charge fix
resumeSubscription(id)undoes cancel-at-period-end (hostedPOST /v1/subscriptions/:id/resume)- First invoice payment no longer advances
currentPeriodStart/currentPeriodEnd(renewals still advance) @autlantic/billing-engine0.3.4,@autlantic/payments-recurring0.3.5
0.3.4 - Unwrap getSubscription / getInvoice
getSubscriptionandgetInvoicenow return the resource object (same asgetPayment), not the{ subscription }/{ invoice }API wrapper- Fixes remote-mode ownership checks that read
metadata/statuson an undefined nested object
0.3.3 - Docs and npm positioning
- npm / README: non-custodial settlement, relayer gas-only wording, product security links
- Docs: Test / Live wording without Stripe-as-model framing; example store custody notes
- Package versions:
@autlantic/payments-recurring/@autlantic/billing-engine0.3.3,@autlantic/chain-evm0.2.8
0.3.2 - Enterprise SDK diagnostics
- Pluggable
BillingLogger+ opt-indebug/AUTLANTIC_BILLING_DEBUG - Redacted HTTP request/response traces (
X-Autlantic-Client-Request-Id, sdk version header) - Typed
AutlanticBillingError(code,type,statusCode,requestId) - Webhook
verifyBillingWebhookDetailed,parseBillingWebhookEventDetailed,assertBillingWebhook - Write-through store persist failures no longer hardcode
console.error(optionalonPersistError) logRelayerIntentis silent unless a log fn is passed- Docs: Debugging; fixed webhook verify argument order
- Docs DX: 15-minute integration, Local webhooks, FAQ, OpenAPI, Postman
Package versions: @autlantic/payments-recurring / @autlantic/billing-engine 0.3.2, @autlantic/chain-evm 0.2.7.
0.3.1 - Align engine with hosted portal / billing
Upstream features required by Autlantic hosted billing (portal, API, worker) so npm matches production behavior:
- Test/Live
modeon customers, subscriptions, invoices, and one-time payments resumeSubscriptionfor cancel-at-period-end undochainIdForBillingMode("test" | "live")(Sepolia vs Base)processDueInvoices/processDueInvoicesLiveoptionalmodefilter- Checkout session extras: coupons,
listAmountUsdc,nextPaymentAt, merchant branding BillingPersistAdapter.loadPaymentLink?for cross-process link loads- Payment links stamp
modeon minted one-time payments
Package versions: @autlantic/payments-recurring / @autlantic/billing-engine 0.3.1, @autlantic/payments-recurring-core / @autlantic/chain-evm 0.2.6.
0.3.0 - Payment links (URL / QR)
- Shareable payment links: fixed USDC amount, optional max uses / expiry
- SDK:
createPaymentLink,listPaymentLinks,getPaymentLink,disablePaymentLink,openPaymentLink - Hosted:
POST /v1/payment-links, public/checkout/link/:id(opens into one-time pay checkout) - Merchant portal: Payment links page with copy URL and QR
- Webhooks:
payment.created/payment.paidwhen a link is opened and paid - E2E smoke:
pnpm test:e2e:payment-links
Docs - Test / Live API keys
- Document Test and Live: portal toggle,
abk_test_/abk_live_keys, Sepolia vs Base mainnet - Webhook docs use per-mode endpoint signing secrets
- Clarify
AUTLANTIC_BILLING_SANDBOXis not the primary hosted mode switch
0.2.6 - Catalog products + example store
listProducts()andpriceIdoncreateSubscription- Hosted
GET /v1/products - Example storefront in the public payments-sdk repo
0.2.1 - Public docs alignment
- Marketing and getting-started samples match the real
AutlanticBillingAPI - Clarify that
activateSubscriptioncharges the first invoice - Docs site no longer links to the private GitHub repo
0.2.0 - Recurring USDC on Base
@autlantic/payments-recurringmerchant SDK@autlantic/payments-recurring-coretypes and retry policy@autlantic/chain-evmBase + USDC adapter@autlantic/billing-enginesubscriptions, invoices, webhooks- Hosted
billing-apiandbilling-worker
0.1.x - Legacy (removed)
Tron USDT one-off checkout (@autlantic/payments, @autlantic/chain-tron) has been removed from this monorepo.

