Il framework di fatturazione per il software svizzero.

Due librerie TypeScript: subkit per abbonamenti e fatture, shopkit per lo shop online. Girano nella tua app, con fattura QR, IVA e quattro lingue. I pagamenti passano da zahls.ch con TWINT e carta, i dati restano nel tuo database.

Prova la demo

Nessuna commissione per transazione · dati nel tuo database

acme.ch/account/billing
La tua app<BillingPortal />

Abbonamento e fatture

Acme AG

Basic

attivo

CHF 9.00 / mese

Pro

CHF 19.00 / mese

Passa a Pro
Metodo di pagamentoTWINT

Fatture

2026-0142

15.10.2026 · TWINT

CHF 9.00pagata

2026-0141

15.09.2026 · QR

CHF 9.00pagata
2
kit: subkit per gli abbonamenti, shopkit per lo shop online
4
lingue: tedesco, francese, italiano, inglese
0
dati dei clienti sui nostri server
MIT
open source, nessuna commissione per transazione

In uso presso

  • Thurbeck
  • Brauerei St. Johann
  • Membear

I kit

Scegli ciò che serve al tuo prodotto.

Ogni kit funziona da solo, ed entrambi condividono un unico adapter, un unico cliente e un unico fornitore di pagamento.

subkitAnteprima

Abbonamenti e fatture

Per SaaS, affiliazioni e quote associative

I tuoi clienti scelgono un piano e pagano con TWINT, carta o fattura QR. subkit rinnova, calcola il pro rata, invia i promemoria e riconcilia i pagamenti con la banca.

  • Piani, periodi di prova, calcolo pro rata
  • Carta, TWINT o fattura QR
  • Solleciti e nuovi tentativi
  • IVA su ogni fattura
  • Diritti di accesso e limiti
  • Portale di fatturazione
MensileAnnuale

Pro

CHF 19.00

/ mese

14 giorni gratis
Scegli Pro
TWINTVISAMASTERCARDQR

shopkitAnteprima

Commercio

Per shop di associazioni, PMI, merchandising e buoni

Prodotti con varianti, carrello e checkout con TWINT o su fattura. shopkit riserva il magazzino, calcola spedizione e IVA per prodotto e invia la conferma d’ordine.

  • Prodotti e varianti
  • Carrello e checkout con TWINT o fattura
  • Ordini e rimborsi
  • Magazzino e spese di spedizione secondo il peso
  • Codici sconto
  • Buoni regalo
  • Collegamento a HS-Soft (WaWiAssist)
  • Etichette di spedizione della Posta & verifica dell’indirizzo
  • Ordini tramite agente IA (MCP)
  • Back office da integrare
  • Giorno di ritiro e consegna con fascia oraria

Carrello

Sciarpa della società29.00
Maglia casa, M89.00
Spedizione9.00
TotaleCHF 127.00
Paga con TWINT

Novità in shopkit 0.2 · Ordinare tramite agente IA

La tua clientela ordina in chat.

Il tuo shop diventa un server MCP. L’agente delle tue clienti e dei tuoi clienti – Claude, ChatGPT o Cursor – cerca i prodotti, calcola l’ordine con IVA e spedizione e ordina. Si paga con un link zahls.ch o direttamente con il TWINT salvato. Per ogni shop shopkit, senza servizi aggiuntivi.

  • Accesso via OAuth – Claude e ChatGPT si collegano senza token
  • Viene addebitato solo l’importo confermato dalla cliente
  • Spedizione, ritiro o giorno di consegna con fascia oraria – l’agente chiede
  • I token di pagamento non raggiungono mai il modello
import { createShopCustomerMcpHandler } from '@agentkit.ch/shopkit/mcp'Guida nel README
AgentMCP · Rösterei Aare

Due volte la miscela della casa e un decalcificante, per posta.

search_productsmiscela della casa, decalcificante

quote_order

2 × Miscela della casa 500 g37.00

Decalcificante12.90

PostPac Priority9.00

TotaleCHF 58.90

Pagare CHF 58.90 con il tuo TWINT salvato?

Sì, grazie.

place_orderexpectedAmount: 5890

TWINT …

Novità in shopkit 0.2 · Per panetterie

HS-Soft (WaWiAssist) collegato.

Per panetterie e pasticcerie con WaWiAssist: i prodotti arrivano da WaWiAssist, ogni ordine vi entra – con il giorno di ritiro come data dell’ordine. Che sia ordinato nello shop online o tramite agente.

  • Importazione con categoria di prezzo, prezzo promozionale, immagine, dichiarazione, allergeni e valori nutrizionali
  • Solo giorni di ritiro in cui ogni articolo del carrello è disponibile
  • Se HS-Soft non è raggiungibile, shopkit invia di nuovo l’ordine più tardi
  • Stato e nuovo invio nel back office e via MCP
import { createHsSoftSync } from '@agentkit.ch/shopkit/hssoft'Guida nel README

Articoli → prodotti

WaWiAssist

  • A1Treccia 500 g6.80
  • A7Pane contadino5.20
  • A12Grittibänz4.50

shopkit

  • Treccia 500 gimportato
  • Pane contadinoimportato
  • Grittibänzdal 1.11.

Ordine → WaWiAssist

shopkit

#2187 · CHF 18.80

Ritiro il 31.10.2026

WaWiAssist

—

Novità in shopkit 0.4 · La Posta

Etichette e indirizzi della Posta.

Un clic nell’ordine e l’etichetta con codice a barre è pronta – con la modalità di spedizione dell’ordine, fatturata sulla tua licenza d’affrancatura. Nel checkout la Posta propone NPA, località, via e numero e verifica l’indirizzo prima dell’ordine.

  • PostPac Economy e Priority, invii ingombranti, Swiss-Express «Luna», VinoLog e Posta A Plus
  • A5, A6 o A7 in PDF o ZPL2 per la stampante di etichette
  • Prestazioni complementari come firma, fragile o distribuzione il sabato
  • Numero d’invio con Track & Trace nell’e-mail di spedizione
import { createSwissPost } from '@agentkit.ch/shopkit/swisspost'Guida nel README

<Checkout />

Via e numero

Bahnhofst

NPA e località

8001 Zürich

Indirizzo confermato dalla Posta

#1044

A6 · PRI

1.2 kg

Crea etichetta

Rösterei Aare

Aarstrasse 12

3011 Bern

PRI

Anna Muster

Bahnhofstrasse 12

8001 Zürich

99.60.123456.00000001

Numero d’invio —

Niente vibe coding

Il denaro non è il posto giusto per il vibe coding.

Un agente di coding ti scrive una fattura QR e un checkout TWINT in un’ora. Gli errori emergono solo in produzione: pagamenti registrati due volte, differenze di centesimi, fatture rifiutate dalla banca. Meglio lasciare che il tuo agente integri codice già collaudato.

Fatturazione vibe-coded6 ✗

  • Riferimento QR con cifra di controllo sbagliataL’app bancaria rifiuta il pagamento.
  • Lo stesso webhook arriva due volteIl pagamento viene registrato due volte.
  • IVA con numeri in virgola mobileDifferenze di centesimi tra fattura e contabilità.
  • Cambio di piano a metà mesePro rata calcolato male, la cliente paga troppo.
  • Pagamento parziale nel camt.054Fattura segnata come pagata anche se mancano soldi.
  • Due checkout, un solo articolo in magazzinoVendi ciò che non hai più.

Errori tipici che emergono solo in produzione.

Con agentkit

Codice collaudato.

Il tuo agente di coding non reinventa la fatturazione, integra un kit. Il codice viene da Membear, dove gira in produzione, e copre proprio questi casi.

  • Dalla produzione di Membear
  • Testato su un vero Postgres
  • Centesimi interi, webhook idempotenti, compare-and-set

Aggiungi abbonamenti con fattura QR e TWINT usando @agentkit.ch/subkit. Leggi prima https://agentkit.ch/llms.txt.

Funzioni

Tutto ciò che ruota attorno al denaro, fatto una volta sola.

Cosa c’è in entrambi i kit: un agente di coding che li integra, webhook che contano una volta sola, e-mail in quattro lingue e schermate pronte.

Lo integra il tuo agente di coding

llms.txt, opzioni tipizzate ed errori con codici fissi. Un prompt fino al checkout funzionante.

llms.txt
  • llms.txt letto2s
  • Next.js + Drizzle rilevati4s
  • @agentkit.ch/subkit installato9s
  • Tabelle aggiunte allo schema14s
  • /api/billing configurato21s
  • Checkout con TWINT testato38s

Webhook che contano una volta sola

Webhook idempotenti e aggiornamenti compare-and-set: se lo stesso pagamento arriva due volte, viene registrato comunque una sola volta.

Quando

Arriva un pagamento TWINT

CHF 19.00 · 2026-0143

Allora

  • Segnare la fattura come pagata
  • Attivare il piano Pro
  • Inviare la ricevuta in francese
200Lo stesso webhook, di nuovoignorato, già registrato

Self-service pronto all’uso.

Componenti React pronti per le schermate noiose, più un client tipizzato. Hook headless se vuoi la tua interfaccia.

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

Il tuo database, le tue tabelle

I kit scrivono nel tuo database tramite adapter. Collegali con un JOIN – senza sincronizzazione, senza silo.

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

Ogni e-mail, in quattro lingue

Ricevute, promemoria e conferme d’ordine in HTML e testo, con il tuo servizio di invio.

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

Svizzero per impostazione

Non localizzato in seguito. Svizzero dalla prima riga.

Le librerie di fatturazione generiche ragionano in Stripe, centesimi e una sola lingua. La clientela svizzera paga con fattura QR e TWINT, si aspetta l’IVA su ogni fattura e la legge in tedesco, francese o italiano. agentkit parte da qui.

Sezione pagamento

Valuta

CHF

Importo

228.00

Conto / Pagabile a

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

Riferimento

21 00000 00003 13947 14300 09017

Informazioni supplementari

Fattura 2026-0142 · Club Pro, abbonamento annuale
IVA 8.1 % incl. CHF 17.08 · CHE-123.456.789 IVA

Pagabile da

FC Seebach
Dorfstrasse 12
8052 Zürich
pagata
prossimamenteSolleciti alla svizzera

Per sviluppatori

Una libreria nella tua app. Non un servizio davanti a essa.

Montata come route in Next.js, Hono, SvelteKit, Remix o Express – su Node.js, Bun, Deno o all’edge. In TypeScript, utilizzabile anche da JavaScript.

Un solo prompt

Il tuo agente di coding legge llms.txt, riconosce il tuo framework e il tuo database, scrive lo schema e configura la route.

~/acme

> Aggiungi abbonamenti con subkit▍

Configurazione nel codice

Piani, fornitore di pagamento e IVA in un unico file. Nessuna dashboard da tenere sincronizzata.

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

Leggere, modificare, gestire in proprio.

Il tuo database

Postgres tramite Drizzle – o un adapter tuo.

Nessun nostro backend

Niente «chiama casa».

Centesimi interi

Il denaro non è mai un numero in virgola mobile.

Perché agentkit

Abbiamo già costruito tutto una volta.

Per Membear, il nostro software di gestione per associazioni, abbiamo costruito fatture QR, TWINT tramite zahls.ch, IVA, riconciliazione bancaria e fatture in quattro lingue. Gli ostacoli raramente erano nel codice, ma nei dettagli: numeri di riferimento, arrotondamenti, scadenze, traduzioni.

Poi ci siamo accorti che ogni prodotto svizzero ricostruisce esattamente questo. Gli strumenti di fatturazione generici ragionano in Stripe, centesimi e inglese – la Svizzera arriva, se va bene, come plugin.

Per questo estraiamo il codice dalla produzione e ne facciamo kit che ogni app TypeScript può usare. Gratis e open source con licenza MIT.

Il team di siebenberge

Open source

Open source con licenza MIT.

subkit e shopkit sono su GitHub con licenza MIT, i pacchetti su npm. Puoi leggere il codice, adattarlo e gestirlo in proprio – senza commissioni per transazione e senza dipendere da noi.

01

Licenza MIT

Utilizzabile commercialmente, anche in software proprietario.

02

Nessun lock-in

Il codice gira nella tua app, i dati restano nel tuo database. Basta un fork per proseguire in modo indipendente.

03

Sviluppo aperto

Roadmap, issue e pull request sono pubbliche – i contributi sono benvenuti.

Roadmap

Estratti dalla produzione, un kit alla volta.

Ogni kit nasce da codice già in produzione e viene estratto solo quando ha dato prova di sé.

  1. 01ora

    subkit + shopkit

    su npm

    subkit 0.2 e shopkit 0.4 come @agentkit.ch/subkit e @agentkit.ch/shopkit, il codice con licenza MIT su GitHub: fattura QR, riconciliazione bancaria (camt.053 / camt.054), IVA, zahls.ch con TWINT, adapter Drizzle per Postgres. Novità in shopkit: ordini tramite agente IA (MCP), collegamento a HS-Soft (WaWiAssist), il back office da integrare e le etichette della Posta con verifica dell’indirizzo.

  2. 02

    core + CLI

    in seguito

    Un nucleo comune con suite di test degli adapter, una CLI per schema e route, la documentazione anche in tedesco. In shopkit: tariffe in tempo reale della Posta e rimborsi tramite zahls.ch.

  3. 03

    Solleciti e adapter

    2027

    1°, 2° e 3° sollecito con spese e PDF di sollecito con nuova fattura QR. Adapter Prisma e Kysely.

Domande

Domande frequenti.

Qualcosa non è chiaro? Le demo mostrano i kit con le loro vere opzioni.

01Qual è la differenza tra subkit e shopkit?

subkit fattura i pagamenti ricorrenti: piani, abbonamenti, periodi di prova e fatture – per SaaS, affiliazioni o quote associative. shopkit vende prodotti: catalogo, carrello, checkout, ordini e buoni regalo. Entrambi condividono i dati dei clienti, il fornitore di pagamento e la fattura QR.

02Mi servono entrambi i kit?

No. Ogni kit funziona da solo. Un’associazione con quote sociali e fan shop li prende entrambi, un SaaS di solito solo subkit.

03La mia clientela può ordinare tramite un agente IA?

Sì, da shopkit 0.2. createShopCustomerMcpHandler trasforma il tuo shop in un server MCP: l’agente della cliente – Claude, ChatGPT o Cursor – cerca i prodotti, calcola l’ordine con IVA e spedizione e ordina. Si paga con un link zahls.ch o con il metodo di pagamento salvato, e viene addebitato solo l’importo confermato. Chi ordina lo decide il tuo login (OAuth o chiave API).

04shopkit funziona con HS-Soft (WaWiAssist)?

Sì. @agentkit.ch/shopkit/hssoft importa gli articoli di WaWiAssist come prodotti e vi invia ogni ordine, con il giorno di ritiro come data dell’ordine. Ti serve solo la chiave API del tuo WaWiAssist, fornita da HS-Soft.

05shopkit crea etichette di spedizione della Posta?

Sì, da shopkit 0.4. @agentkit.ch/shopkit/swisspost crea l’etichetta con codice a barre dall’ordine – nel back office, tramite API o MCP – e invia alla cliente il numero d’invio con Track & Trace. Nel checkout propone gli indirizzi della Posta e li verifica. Ti servono una licenza d’affrancatura e un accesso alla Digital Commerce API della Posta. Le etichette per l’estero e le tariffe in tempo reale sono previste.

06agentkit è davvero open source?

Sì. subkit e shopkit sono su github.com/siebenberge/agentkit con licenza MIT, i pacchetti su npm. Issue e pull request sono benvenute.

07Dove si trovano i dati dei miei clienti?

Nel tuo database. I kit girano come libreria nella tua app e scrivono nelle tue tabelle tramite adapter. Non c’è nessun backend agentkit e nessun responsabile del trattamento aggiuntivo.

08Quali metodi di pagamento sono supportati?

TWINT e carte di credito tramite zahls.ch, oltre alla fattura con fattura QR svizzera. Altri fornitori si collegano tramite l’interfaccia PaymentProvider.

09Quanto costa agentkit?

I kit sono gratuiti. Non prendiamo commissioni per transazione – paghi solo il tuo fornitore di pagamento.

10Quali framework sono supportati?

TypeScript, utilizzabile anche da JavaScript. I kit si collegano come route in Next.js, Hono, SvelteKit, Remix o Express e girano su Node.js, Bun, Deno o all’edge. Scrivono i dati in Postgres tramite l’adapter Drizzle; adapter per Prisma e Kysely sono previsti.

11Posso usarlo già oggi?

Sì: npm i @agentkit.ch/subkit o npm i @agentkit.ch/shopkit. subkit nasce da codice in produzione; shopkit è in anteprima. Provali senza installare: sub.agentkit.ch e shop.agentkit.ch.

Costruisci il tuo prodotto, non la tua fatturazione.

Copia il prompt di setup nel tuo agente di coding – oppure prova prima i kit nel browser.

Prompt di setup per il tuo agente di coding

Aggiungi abbonamenti con fattura QR e TWINT usando @agentkit.ch/subkit. Leggi prima https://agentkit.ch/llms.txt.

Prova la demo