Receipt

Account / Payable to

agentkit

Siebenberge GmbH

CH

Reference

npx agentkit init

Payable by

Your app

Currency

CHF

Amount

0.00

MIT, open source

Payment part

The billing frameworkfor Swiss software.

Additional information

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 init

The kits

Pick what your product needs.

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.

subkit

Subscriptions & invoices

Preview
  • Plans, trials, proration
  • Card, TWINT or QR-bill
  • Reminders & retries
  • VAT on every invoice
  • Entitlements & limits
  • Billing portal UI

npm i @agentkit/subkit  /  composer require agentkit/subkit

membershipkit

Members & renewals

In progress
  • Membership types & seasons
  • Households & families
  • Renewal campaigns
  • Signup forms & custom fields
  • Fee invoices via subkit
  • Member cards & export

npm i @agentkit/membershipkit  /  composer require agentkit/membershipkit

shopkit

Commerce

planned
  • Products & variants
  • Cart & checkout with TWINT
  • Orders & refunds
  • Stock & Swiss Post shipping
  • Discount codes
  • Gift vouchers

npm i @agentkit/shopkit  /  composer require agentkit/shopkit

later: eventkit (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

  • Rechnung (de)
  • Facture (fr)
  • Fattura (it)
  • Invoice (en)

Not localised later. Swiss from the first line.

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.

Payment part

Currency

CHF

Amount

228.00

Account / Payable to

CH44 3199 9123 0008 8901 2
Acme AG
Bahnhofstrasse 1
8001 Zürich

Reference

21 00000 00003 13947 14300 09017

Additional information

Invoice 2026-0142 · Club Pro, annual plan
incl. 8.1 % VAT CHF 17.08 · CHE-123.456.789 VAT

Payable by

FC Seebach
Dorfstrasse 12
8052 Zürich
Generated by subkit: QR-IBAN with QR reference, VAT line, payer from your customer table. Sample data.
Swiss QR-billlive
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.
TWINT via zahls.chlive
Payments through zahls.ch with TWINT and credit cards. Card data never touches your server. Other providers plug in through one interface.
VAT done rightlive
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.
de · fr · it · enlive
UI, emails and invoices in German, French, Italian and English, with Swiss formats: 15.10.2026, CHF 1’900.00, «guillemets», ss instead of ß.
Bank reconciliationnext
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.
Reminders, Swiss stylenext
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.
revDSG friendlyby design
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.
eBillplanned
Deliver invoices straight into the e-banking of your customers through the Swiss eBill network, with the QR-bill as fallback.

How it works

A library in your app. Not a service in front of it.

Your app

  • Next.js · Laravel · Symfony
  • <BillingPortal />
  • your auth → authorize()

agentkit · in your process · TS or PHP

  • subkit · membershipkit · shopkit
  • database adapter
  • payment provider

Yours

  • Your Postgres · MySQL · SQLite
  • zahls.ch · TWINT
  • Your bank · camt.054
  • Your mailer

Your programming language

One spec. Native in every stack.

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.

Frameworks
TypeScript
reference
Next.js · Hono · SvelteKit · Nuxt · Express · Workers
PHP
next
Laravel · Symfony · PHP 8.3+
Python
later
Django · FastAPI · Flask

Features

Everything around the money, done once.

Your database

The data never leaves your app.

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

TypeScript and PHP, one HTTP API.

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

Your servers, your data centre.

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

Self-service out of the box.

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

Every lifecycle email, ready.

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

Your coding agent can wire it in.

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

Money paths are boring on purpose.

Compare-and-set updates, idempotent webhooks, transactions where it matters. One conformance suite for every language and database.

CAS, Idempotency, Transactions

Composable

Kits that know each other.

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

MIT. Every line readable – from v0.1.

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

One config

Declared in code. Reviewed in pull requests.

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));

Roadmap

Extracted from production, one kit at a time.

Every kit comes from code that already runs in production and is pulled out once it has proven itself.

  1. 1

    core + subkit

    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.

  2. 2

    subkit for PHP

    Q1 2027

    Conformance suite as language-neutral fixtures, PHP port with Eloquent, Doctrine and PDO adapters, Laravel and Symfony integration.

  3. 3

    membershipkit

    Q1 2027

    Fee invoices through subkit. camt.054 bank reconciliation.

  4. 4

    shopkit & more

    2027

    Catalogue, cart, TWINT checkout, Swiss Post shipping, vouchers. eBill, then eventkit and bookingkit.

Payment part

Roll your own billing – in minutes, not months.

Ship the product. Let the kits handle subscriptions, orders and members – Swiss-ready, in your database, under your control.