subkit
Subscriptions & invoices
- Plans, trials, proration
- Card, TWINT or QR-bill
- Reminders & retries
- VAT on every invoice
- Entitlements & limits
- Billing portal UI
npm i @agentkit/subkitSubscriptions, invoices, shop and members – as a library that runs inside your app. QR-bill, TWINT, VAT and four languages are built in, and the data stays in your database. From club projects to SaaS, in TypeScript and PHP.
npx agentkit initTry the VAT maths
VAT rate
Same rounding as subkit: whole Rappen, rounded half up.
Each kit works on its own, and they all share one adapter, one customer and one payment provider. Same kit, same behaviour, in every programming language we ship.
Subscriptions & invoices
npm i @agentkit/subkitMembers & renewals
npm i @agentkit/membershipkitCommerce
npm i @agentkit/shopkitSwiss by default
Generic billing libraries think in Stripe, cents and one language. Swiss customers pay by QR-bill and TWINT, expect VAT on every invoice and read it in German, French or Italian. agentkit starts there.
Receipt
Account / Payable to
Reference
Payable by
Currency
Amount
Payment part
Currency
Amount
Account / Payable to
Reference
Additional information
Payable by
Payment part per SIX guidelines, QR-IBAN with QR reference or IBAN with RF creditor reference. CHF and EUR. Scan-to-pay in every Swiss banking app.
Payments through zahls.ch with TWINT and credit cards. Card data never touches your server. Other providers plug in through one interface.
Inclusive or exclusive prices, VAT line and CHE number on every invoice, integer Rappen instead of floats. Per-line rates (8.1 / 2.6 / 3.8 %) and 5-Rappen rounding are next.
UI, emails and invoices in German, French, Italian and English, with Swiss formats: 15.10.2026, CHF 1’900.00, «guillemets», ss instead of ß.
Import camt.054 / camt.053 from your bank, match QR references to open invoices and mark them paid. No more manual matching of bank statements.
Today: payment terms, automatic retries and reminder emails. Next: 1st, 2nd and 3rd reminder with fees, reminder PDFs with a fresh QR-bill, export for debt collection.
The kits run in your app and write to your database. No extra processor for your customer data – host it in a Swiss data centre if you like.
Deliver invoices straight into the e-banking of your customers through the Swiss eBill network, with the QR-bill as fallback.
Your app
agentkit · in your process · TS or PHP
Yours
Every kit is defined once – schema, rules, HTTP API, emails, translations – and implemented natively per programming language. A shared conformance suite runs the same billing scenarios against each implementation, so a renewal in PHP produces exactly the rows a renewal in TypeScript does. The React UI talks to both.
TypeScript
referenceFrameworks
Next.js · Hono · SvelteKit · Nuxt · Express · Workers
Databases
Drizzle · Prisma · Kysely
PHP
nextFrameworks
Laravel · Symfony · PHP 8.3+
Databases
Eloquent · Doctrine · PDO
Python
laterFrameworks
Django · FastAPI · Flask
Databases
Django ORM · SQLAlchemy
Your database
Kits write to tables in your database through adapters. Join them, back them up, migrate away – no sync, no silo.
Drizzle · Prisma · Eloquent · Doctrine · PDO
Any stack
Native libraries per language, mounted as a route in your framework. Every implementation speaks the same API, so the same UI works on top.
Next.js · Hono · Laravel · Symfony · OpenAPI
Host it anywhere
Vercel, a Swiss cloud or the server in the basement: the kits go wherever your app goes. There is no agentkit backend to call home to.
Infomaniak · Exoscale · Swisscom · Vercel · on-prem
UI included
Drop-in components for the boring screens – React, or a web component for Blade and Twig. Headless hooks when you want your own.
<BillingPortal /> · useBilling() · <ak-cart>
Emails & documents
Receipts, failed payments, reminders, renewals, order confirmations – in four languages, HTML and text, any mailer. Printable invoices with QR-bill.
Resend · SMTP · Postmark · PDF
Agent-native
llms.txt, skills, an MCP server per kit and errors that link to the fix. One prompt from zero to a working checkout.
llms.txt · MCP · Skills · AGENTS.md
Correct by design
Compare-and-set updates, idempotent webhooks, transactions where it matters. One conformance suite for every language and database.
CAS · Idempotency · Transactions
Composable
One customer, one payment provider, one invoice system across kits. Membership fees and shop orders end up on the same QR-bill.
Shared customer · Typed events · Plugins
Open source
The code goes public on GitHub with version 0.1. No per-transaction fee to us, no lock-in. A hosted dashboard and webhook relay will be optional, not required.
MIT · TypeScript · PHP · Tested
Kits describe their tables declaratively. The CLI turns that into a schema or migration for the ORM you already use – Drizzle, Prisma, Eloquent, Doctrine – and every adapter passes the same conformance suite.
import { agentkit } from '@agentkit/core';
import { drizzleAdapter } from '@agentkit/drizzle';
import { subkit } from '@agentkit/subkit';
import { shopkit } from '@agentkit/shopkit';
import { membershipkit } from '@agentkit/membershipkit';
import { zahls } from '@agentkit/zahls';
export const kit = agentkit({
database: drizzleAdapter(db, { tablePrefix: 'ak_' }),
payments: zahls({ instance: 'acme', apiKey: env.ZAHLS_KEY }),
kits: [
subkit({ plans, defaultPlanId: 'free' }),
shopkit({ currency: 'CHF', vat: { rateBps: 810 } }),
membershipkit({ seasons: 'yearly', invoiceWith: 'subkit' }),
],
});
kit.on('shop.order.paid', async ({ order }) => fulfil(order));Every kit comes from code that already runs in production and is pulled out once it has proven itself.
Q4 2026 · now
Adapter contract and test suite, Drizzle adapter, subkit 0.1 with QR-bill, VAT and zahls.ch/TWINT on npm. Docs in German and English.
Q1 2027
Conformance suite as language-neutral fixtures, PHP port with Eloquent, Doctrine and PDO adapters, Laravel and Symfony integration.
Q1 2027
Fee invoices through subkit. camt.054 bank reconciliation.
2027
Catalogue, cart, TWINT checkout, Swiss Post shipping, vouchers. eBill, then eventkit and bookingkit.
Ship the product. Let the kits handle subscriptions, orders and members – Swiss-ready, in your database, under your control.