GardenKit
The billing SDK for platforms.
GardenKit is the typed SDK for Garden billing — checkout, usage metering, invoices, payment methods, addresses, and signed webhooks.
The surface
Ten calls. Complete billing.
garden.checkout.create(...)Hosted or embedded checkout sessions.
garden.portal.link(...)Signed link to the customer billing portal.
garden.usage.ingest(...)Record usage events, idempotency-keyed.
garden.meter.ingest(...)Push metered quantities per platform.
garden.meters.listForCustomer(...)Read live meters + included/limit.
garden.invoices.list(...)Invoices with platform-attributed lines.
garden.paymentMethods.list(...)Account-shared cards, bank, crypto.
garden.addresses.upsert(...)Billing address + tax IDs.
garden.webhooks.verify(...)Verify signed event envelopes.
garden.webhooks.route(...)Route events to your handlers.
Quickstart
Meter, bill, and get paid.
Idempotent everywhere. Typed end to end. The same contract Planter renders.
import { createGarden } from "@l1fe/garden";
const garden = createGarden({ platformId: "hives" });
// Meter usage as it happens
await garden.meter.ingest({
key: "hives.flight.invocation",
quantity: 1,
dimensions: { region: "us-east", flight: "buzz-worker" },
});
// Open embedded checkout for an open invoice
const session = await garden.checkout.create({
invoiceId: "in_207",
mode: "embedded",
});// Signed, replay-safe events from Vine
export async function POST(req: Request) {
const event = await garden.webhooks.verify(req);
await garden.webhooks.route(event, {
"invoice.paid": onPaid,
"invoice.payment_failed": onFailed,
"usage.threshold": onThreshold,
});
return new Response(null, { status: 204 });
}Install
Add GardenKit to any stack.
bun add @l1fe/gardenBuild on Garden
The billing contract. Typed end to end.
GardenKit gives platform teams one billing integration contract across checkout, metering, invoices, and webhooks.
