Das Billing-Framework für Schweizer Software.

Zwei Libraries für TypeScript: subkit für Abos und Rechnungen, shopkit für den Online-Shop. Sie laufen in deiner App, mit QR-Rechnung, MWST und vier Sprachen. Bezahlt wird über zahls.ch mit TWINT und Karte, die Daten bleiben in deiner Datenbank.

Demo ausprobieren

Keine Gebühr pro Transaktion · Daten in deiner Datenbank

acme.ch/account/billing
Deine App<BillingPortal />

Abo & Rechnungen

Acme AG

Basic

aktiv

CHF 9.00 / Monat

Pro

CHF 19.00 / Monat

Auf Pro wechseln
ZahlungsartTWINT

Rechnungen

2026-0142

15.10.2026 · TWINT

CHF 9.00bezahlt

2026-0141

15.09.2026 · QR

CHF 9.00bezahlt
2
Kits: subkit für Abos, shopkit für den Online-Shop
4
Sprachen: Deutsch, Französisch, Italienisch, Englisch
0
Kundendaten auf unseren Servern
MIT
Open Source, keine Gebühr pro Transaktion

Im Einsatz bei

  • Thurbeck
  • Brauerei St. Johann
  • Membear

Die Kits

Nimm, was dein Produkt braucht.

Jedes Kit funktioniert für sich, und beide teilen sich denselben Adapter, dieselben Kundendaten und denselben Zahlungsanbieter.

subkitPreview

Abos & Rechnungen

Für SaaS, Mitgliedschaften und Vereinsbeiträge

Deine Kundinnen und Kunden wählen einen Plan und zahlen per TWINT, Karte oder QR-Rechnung. subkit verlängert, rechnet pro rata ab, erinnert und gleicht Zahlungen mit der Bank ab.

  • Pläne, Testphasen, Pro-rata-Abrechnung
  • Karte, TWINT oder QR-Rechnung
  • Zahlungserinnerungen & Wiederholungen
  • MWST auf jeder Rechnung
  • Berechtigungen & Limiten
  • UI für das Abrechnungsportal
MonatlichJährlich

Pro

CHF 19.00

/ Monat

14 Tage gratis
Pro wählen
TWINTVISAMASTERCARDQR

shopkitPreview

E-Commerce

Für Vereinsshops, KMU, Merch und Gutscheine

Produkte mit Varianten, Warenkorb und Checkout mit TWINT oder auf Rechnung. shopkit reserviert das Lager, rechnet Versand und MWST pro Produkt und verschickt die Bestellbestätigung.

  • Produkte & Varianten
  • Warenkorb & Checkout mit TWINT oder Rechnung
  • Bestellungen & Rückerstattungen
  • Lager & Versandkosten nach Gewicht
  • Rabattcodes
  • Geschenkgutscheine
  • Anbindung an HS-Soft (WaWiAssist)
  • Versandetiketten der Post & Adressprüfung
  • Bestellen per KI-Agent (MCP)
  • Backoffice zum Einbauen
  • Abhol- und Liefertag mit Zeitfenster

Warenkorb

Vereinsschal29.00
Trikot Heim, M89.00
Versand9.00
TotalCHF 127.00
Mit TWINT bezahlen

Neu in shopkit 0.2 · Bestellen per KI-Agent

Deine Kundschaft bestellt im Chat.

Dein Shop wird zum MCP-Server. Der Agent deiner Kundinnen und Kunden – Claude, ChatGPT oder Cursor – sucht Produkte, rechnet die Bestellung mit MWST und Versand und bestellt. Bezahlt wird per zahls.ch-Link oder direkt mit dem gespeicherten TWINT. Für jeden shopkit-Shop, ohne zusätzlichen Dienst.

  • Anmeldung per OAuth – Claude und ChatGPT verbinden sich ohne Token
  • Belastet wird nur der Betrag, den die Kundin bestätigt hat
  • Versand, Abholung oder Liefertag mit Zeitfenster – der Agent fragt nach
  • Zahlungs-Tokens erreichen das Modell nie
import { createShopCustomerMcpHandler } from '@agentkit.ch/shopkit/mcp'Anleitung im README
AgentMCP · Rösterei Aare

Zweimal die Hausmischung und einen Entkalker, bitte per Post.

search_productshausmischung, entkalker

quote_order

2 × Hausmischung 500 g37.00

Entkalker12.90

PostPac Priority9.00

TotalCHF 58.90

CHF 58.90 mit deinem gespeicherten TWINT bezahlen?

Ja, bitte.

place_orderexpectedAmount: 5890

TWINT …

Neu in shopkit 0.2 · Für Bäckereien

HS-Soft (WaWiAssist) angebunden.

Für Bäckereien und Konditoreien mit WaWiAssist: Die Produkte kommen aus WaWiAssist, jede Bestellung geht dort als Auftrag ein – mit dem Abholtag als Bestelldatum. Egal, ob im Webshop oder per Agent bestellt.

  • Import mit Preiskategorie, Aktionspreis, Bild, Deklaration, Allergenen und Nährwerten
  • Nur Abholtage, an denen jeder Artikel im Warenkorb erhältlich ist
  • Ist HS-Soft nicht erreichbar, sendet shopkit die Bestellung später nochmals
  • Status und erneutes Senden im Backoffice und per MCP
import { createHsSoftSync } from '@agentkit.ch/shopkit/hssoft'Anleitung im README

Artikel → Produkte

WaWiAssist

  • A1Zopf 500 g6.80
  • A7Bauernbrot5.20
  • A12Grittibänz4.50

shopkit

  • Zopf 500 gimportiert
  • Bauernbrotimportiert
  • Grittibänzab 1.11.

Bestellung → WaWiAssist

shopkit

#2187 · CHF 18.80

Abholung 31.10.2026

WaWiAssist

—

Neu in shopkit 0.4 · Die Post

Etiketten und Adressen der Post.

Ein Klick in der Bestellung und das Etikett mit Barcode ist da – mit der Versandart der Bestellung, abgerechnet über deine Frankierlizenz. Im Checkout schlägt die Post PLZ, Ort, Strasse und Hausnummer vor und prüft die Adresse, bevor bestellt wird.

  • PostPac Economy und Priority, Sperrgut, Swiss-Express «Mond», VinoLog und A-Post Plus
  • A5, A6 oder A7 als PDF oder ZPL2 für den Etikettendrucker
  • Zusatzleistungen wie Unterschrift, Fragil oder Samstagszustellung
  • Sendungsnummer mit Track & Trace in der Versand-E-Mail
import { createSwissPost } from '@agentkit.ch/shopkit/swisspost'Anleitung im README

<Checkout />

Strasse und Nr.

Bahnhofst

PLZ und Ort

8001 Zürich

Adresse von der Post bestätigt

#1044

A6 · PRI

1.2 kg

Etikett erstellen

Rösterei Aare

Aarstrasse 12

3011 Bern

PRI

Anna Muster

Bahnhofstrasse 12

8001 Zürich

99.60.123456.00000001

Sendungsnummer —

Nicht vibe-coden

Geld ist der falsche Ort zum Vibe-Coden.

Ein Coding-Agent schreibt dir in einer Stunde eine QR-Rechnung und einen TWINT-Checkout. Die Fehler zeigen sich erst in Produktion: doppelt verbuchte Zahlungen, Rappen-Differenzen, Rechnungen, die die Bank ablehnt. Lass deinen Agent lieber Code einbauen, der sich bereits bewährt hat.

Vibe-coded Billing6 ✗

  • QR-Referenz mit falscher PrüfzifferDie Banking-App lehnt die Zahlung ab.
  • Derselbe Webhook kommt zweimalDie Zahlung wird doppelt verbucht.
  • MWST mit GleitkommazahlenRappen-Differenzen zwischen Rechnung und Buchhaltung.
  • Planwechsel mitten im MonatPro rata falsch berechnet, die Kundin zahlt zu viel.
  • Teilzahlung im camt.054Rechnung als bezahlt markiert, obwohl Geld fehlt.
  • Zwei Checkouts, ein Artikel an LagerDu verkaufst, was du nicht mehr hast.

Typische Fehler, die erst in Produktion auffallen.

Mit agentkit

Erprobter Code.

Dein Coding-Agent erfindet das Billing nicht neu, sondern baut ein Kit ein. Der Code stammt aus Membear, wo er in Produktion läuft, und deckt genau diese Fälle ab.

  • Aus der Produktion bei Membear
  • Getestet gegen echtes Postgres
  • Ganze Rappen, idempotente Webhooks, Compare-and-Set

Füge mit @agentkit.ch/subkit Abos mit QR-Rechnung und TWINT hinzu. Lies zuerst https://agentkit.ch/llms.txt.

Funktionen

Alles rund ums Geld, einmal sauber gelöst.

Was in beiden Kits steckt: ein Coding-Agent, der sie einbaut, Webhooks, die nur einmal zählen, E-Mails in vier Sprachen und fertige Screens.

Dein Coding-Agent baut es ein

llms.txt, typisierte Optionen und Fehler mit festen Codes. Ein Prompt bis zum funktionierenden Checkout.

llms.txt
  • llms.txt gelesen2s
  • Next.js + Drizzle erkannt4s
  • @agentkit.ch/subkit installiert9s
  • Tabellen ins Schema übernommen14s
  • /api/billing eingerichtet21s
  • Checkout mit TWINT getestet38s

Webhooks, die nur einmal zählen

Idempotente Webhooks und Compare-and-Set-Updates: Kommt dieselbe Zahlung zweimal an, wird sie trotzdem nur einmal verbucht.

Wenn

TWINT-Zahlung trifft ein

CHF 19.00 · 2026-0143

Dann

  • Rechnung als bezahlt markieren
  • Plan Pro freischalten
  • Quittung auf Französisch senden
200Derselbe Webhook nochmalsignoriert, schon verbucht

Self-Service ab Werk.

Fertige React-Komponenten für die langweiligen Screens, dazu ein typisierter Client. Headless Hooks, wenn du deine eigene UI willst.

import { BillingPortal } from '@agentkit.ch/subkit/react'
  • <BillingPortal />subkit
  • <Checkout />shopkit
  • <Cart />shopkit
  • <OrderStatus />shopkit

Deine Datenbank, deine Tabellen

Die Kits schreiben über Adapter in deine Datenbank. Verknüpfe sie per JOIN – ohne Sync, ohne Silo.

select o.*, c.name from shop_orders o
join customers c on c.id = o.customer_external_id
numberpayment_statuspayment_methodtotal
1039refundedonline2900

Jede E-Mail, in vier Sprachen

Quittungen, Erinnerungen und Bestellbestätigungen als HTML und Text, mit deinem Mailer.

de

Deine Quittung für Pro

Acme AG

fr

Votre commande #1042 est confirmée

Boutique Léman

it

Promemoria: fattura 2026-0142

FC Lugano Nord

46° 48′ N · 8° 14′ E

Standardmässig Schweiz

Nicht nachträglich lokalisiert. Schweizerisch ab der ersten Zeile.

Generische Billing-Libraries denken in Stripe, Cents und einer Sprache. Schweizer Kundinnen und Kunden zahlen per QR-Rechnung und TWINT, erwarten die MWST auf jeder Rechnung und lesen sie auf Deutsch, Französisch oder Italienisch. Genau dort setzt agentkit an.

Zahlteil

Währung

CHF

Betrag

228.00

Konto / Zahlbar an

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

Referenz

21 00000 00003 13947 14300 09017

Zusätzliche Informationen

Rechnung 2026-0142 · Verein Pro, Jahresabo
inkl. 8.1 % MWST CHF 17.08 · CHE-123.456.789 MWST

Zahlbar durch

FC Seebach
Dorfstrasse 12
8052 Zürich
bezahlt
als NächstesMahnwesen auf Schweizer Art

Für Entwickler

Eine Library in deiner App. Kein Service davor.

Als Route in Next.js, Hono, SvelteKit, Remix oder Express eingebunden – auf Node.js, Bun, Deno oder am Edge. TypeScript, nutzbar auch aus JavaScript.

Ein Prompt

Dein Coding-Agent liest llms.txt, erkennt Framework und Datenbank, schreibt das Schema und richtet die Route ein.

~/acme

> Füge Abos mit subkit hinzu▍

Konfiguration im Code

Pläne, Zahlungsanbieter und MWST in einer Datei. Kein Dashboard, das du synchron halten musst.

import { createSubscriptions } from '@agentkit.ch/subkit';
import { drizzleAdapter } from '@agentkit.ch/subkit/drizzle';
import { zahlsProvider } from '@agentkit.ch/subkit/zahls';
import { db, env } from './db';

export const billing = createSubscriptions({
  // your Postgres, your tables
  database: drizzleAdapter(db),
  provider: zahlsProvider({ instance: 'acme', apiKey: env.ZAHLS_KEY }),
  plans: [
    { id: 'free', name: 'Free', features: [], limits: {}, prices: {} },
    {
      id: 'pro',
      name: 'Pro',
      features: ['export'],
      limits: {},
      prices: { month: { amount: 1900, currency: 'CHF' } },
    },
  ],
  defaultPlanId: 'free',
  tax: { rateBps: 810 }, // Swiss VAT 8.1 %
});

MIT

Lesen, ändern, selbst betreiben.

Deine Datenbank

Postgres über Drizzle – oder ein eigener Adapter.

Kein Backend von uns

Nichts telefoniert nach Hause.

Ganze Rappen

Geld ist nie eine Gleitkommazahl.

Warum agentkit

Wir haben das alles schon einmal gebaut.

Für Membear, unsere Vereinsverwaltung, haben wir QR-Rechnungen, TWINT über zahls.ch, MWST, Bankabgleich und Rechnungen in vier Sprachen gebaut. Die Stolpersteine lagen selten im Code, sondern in den Details: Referenznummern, Rundung, Fristen, Übersetzungen.

Dann haben wir gemerkt, dass jedes Schweizer Produkt genau das wieder selbst baut. Generische Billing-Tools denken in Stripe, Cents und Englisch – die Schweiz kommt, wenn überhaupt, als Plugin.

Darum lösen wir den Code aus der Produktion heraus und machen daraus Kits, die jede TypeScript-App nutzen kann. Kostenlos und Open Source unter MIT.

Das Team von siebenberge

Open Source

Open Source unter MIT.

subkit und shopkit stehen unter der MIT-Lizenz auf GitHub, die Pakete liegen auf npm. Du kannst den Code lesen, anpassen und selbst betreiben – ohne Gebühr pro Transaktion und ohne Abhängigkeit von uns.

01

MIT-Lizenz

Kommerziell nutzbar, auch in geschlossener Software.

02

Kein Lock-in

Der Code läuft in deiner App, die Daten liegen in deiner Datenbank. Ein Fork genügt, um unabhängig weiterzumachen.

03

Offen entwickelt

Roadmap, Issues und Pull Requests sind öffentlich – Beiträge sind willkommen.

Roadmap

Aus der Produktion herausgelöst, ein Kit nach dem anderen.

Jedes Kit entsteht aus Code, der bereits produktiv läuft, und wird erst herausgelöst, wenn er sich bewährt hat.

  1. 01jetzt

    subkit + shopkit

    auf npm

    subkit 0.2 und shopkit 0.4 als @agentkit.ch/subkit und @agentkit.ch/shopkit, der Code unter MIT auf GitHub: QR-Rechnung, Bankabgleich (camt.053 / camt.054), MWST, zahls.ch mit TWINT, Drizzle-Adapter für Postgres. Neu in shopkit: Bestellen per KI-Agent (MCP), Anbindung an HS-Soft (WaWiAssist), das Backoffice zum Einbauen und Versandetiketten der Post mit Adressprüfung.

  2. 02

    core + CLI

    als Nächstes

    Gemeinsamer Kern mit Adapter-Testsuite, CLI für Schema und Route, die Doku auch auf Deutsch. In shopkit: Live-Tarife der Post und Rückerstattungen über zahls.ch.

  3. 03

    Mahnwesen & Adapter

    2027

    1., 2. und 3. Mahnung mit Gebühren und Mahn-PDF mit neuer QR-Rechnung. Prisma- und Kysely-Adapter.

Fragen

Oft gefragt.

Noch etwas unklar? Die Demos zeigen die Kits mit echten Optionen.

01Was ist der Unterschied zwischen subkit und shopkit?

subkit verrechnet wiederkehrende Zahlungen: Pläne, Abos, Testphasen und Rechnungen – für SaaS, Mitgliedschaften oder Vereinsbeiträge. shopkit verkauft Produkte: Katalog, Warenkorb, Checkout, Bestellungen und Gutscheine. Beide teilen sich Kundendaten, Zahlungsanbieter und QR-Rechnung.

02Brauche ich beide Kits?

Nein. Jedes Kit funktioniert für sich. Ein Verein mit Mitgliederbeiträgen und Fanshop nimmt beide, ein SaaS meist nur subkit.

03Können meine Kundinnen und Kunden per KI-Agent bestellen?

Ja, seit shopkit 0.2. createShopCustomerMcpHandler macht deinen Shop zum MCP-Server: Der Agent der Kundin – Claude, ChatGPT oder Cursor – sucht Produkte, rechnet die Bestellung mit MWST und Versand und bestellt. Bezahlt wird über einen zahls.ch-Link oder mit dem gespeicherten Zahlungsmittel, belastet wird nur der bestätigte Betrag. Wer bestellt, entscheidet deine Anmeldung (OAuth oder API-Key).

04Funktioniert shopkit mit HS-Soft (WaWiAssist)?

Ja. @agentkit.ch/shopkit/hssoft importiert die Artikel aus WaWiAssist als Produkte und sendet jede Bestellung als Auftrag zurück, mit dem Abholtag als Bestelldatum. Du brauchst nur den API-Key deines WaWiAssist von HS-Soft.

05Erstellt shopkit Versandetiketten der Post?

Ja, seit shopkit 0.4. @agentkit.ch/shopkit/swisspost erstellt das Etikett mit Barcode aus der Bestellung – im Backoffice, per API oder per MCP – und schickt der Kundin die Sendungsnummer mit Track & Trace. Im Checkout schlägt es Adressen der Post vor und prüft sie. Du brauchst eine Frankierlizenz und einen Zugang zur Digital Commerce API der Post. Etiketten ins Ausland und Live-Tarife sind geplant.

06Ist agentkit wirklich Open Source?

Ja. subkit und shopkit stehen unter der MIT-Lizenz auf github.com/siebenberge/agentkit, die Pakete liegen auf npm. Issues und Pull Requests sind willkommen.

07Wo liegen die Daten meiner Kundinnen und Kunden?

In deiner Datenbank. Die Kits laufen als Library in deiner App und schreiben über Adapter in deine Tabellen. Es gibt kein agentkit-Backend und keinen zusätzlichen Auftragsbearbeiter.

08Welche Zahlungsarten werden unterstützt?

TWINT und Kreditkarten über zahls.ch sowie Rechnung mit Schweizer QR-Rechnung. Weitere Zahlungsanbieter lassen sich über die PaymentProvider-Schnittstelle anbinden.

09Was kostet agentkit?

Die Kits sind kostenlos. Wir verlangen keine Gebühr pro Transaktion – du bezahlst nur deinen Zahlungsanbieter.

10Welche Frameworks werden unterstützt?

TypeScript, nutzbar auch aus JavaScript. Die Kits hängen sich als Route in Next.js, Hono, SvelteKit, Remix oder Express ein und laufen auf Node.js, Bun, Deno oder am Edge. Die Daten schreiben sie über den Drizzle-Adapter in Postgres; Adapter für Prisma und Kysely sind geplant.

11Kann ich es heute schon nutzen?

Ja: npm i @agentkit.ch/subkit oder npm i @agentkit.ch/shopkit. subkit stammt aus Code, der produktiv läuft; shopkit ist in der Preview. Ohne Installation ausprobieren: sub.agentkit.ch und shop.agentkit.ch.

Bau dein Produkt, nicht deine Abrechnung.

Kopiere den Setup-Prompt in deinen Coding-Agent – oder probiere die Kits zuerst im Browser aus.

Setup-Prompt für deinen Coding-Agent

Füge mit @agentkit.ch/subkit Abos mit QR-Rechnung und TWINT hinzu. Lies zuerst https://agentkit.ch/llms.txt.

Demo ausprobieren