subkit
PreviewSubscriptions & invoices
- Plans, trials, proration
- Card, TWINT or QR-bill
- Reminders & retries
- VAT on every invoice
- Entitlements & limits
- Billing portal UI
npm i @agentkit/subkitOpen source from v0.1 · built in Switzerland
Subscriptions, 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 initInvoice
subkit
| Reference | Payable by | payment provider | Amount CHF |
|---|---|---|---|
| 2026-0142 | FC Seebach | TWINT | 228.00 |
| 2026-0141 | Chor Bern-Nord | QR-bill | 1'240.00 |
| 2026-0140 | Turnverein Wil | Mastercard | 96.50 |
| 2026-0139 | Club alpin Sion | QR-bill | 1'900.00 |
| 2026-0138 | Società ginnastica Lugano | Visa | 340.00 |
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/shopkiteventkit
Events, registrations, tickets, waitlists
bookingkit
Appointments, resources, reservations
invoicekit
One-off invoices with QR-bill, no subscription
mailkit
Newsletters, lists, double opt-in
Swiss 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
Next.js · Hono · SvelteKit · Nuxt · Express · Workers
Drizzle · Prisma · Kysely
referencePHP
Laravel · Symfony · PHP 8.3+
Eloquent · Doctrine · PDO
nextPython
Django · FastAPI · Flask
Django ORM · SQLAlchemy
laterYour database
Kits write to tables in your database through adapters. Join them, back them up, migrate away – no sync, no silo.
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.
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.
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.
Emails & documents
Receipts, failed payments, reminders, renewals, order confirmations – in four languages, HTML and text, any mailer. Printable invoices with QR-bill.
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.
Correct by design
Compare-and-set updates, idempotent webhooks, transactions where it matters. One conformance suite for every language and database.
Composable
One customer, one payment provider, one invoice system across kits. Membership fees and shop orders end up on the same QR-bill.
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.
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.