返回顶部
🇺🇸 English
🇨🇳 简体中文
🇨🇳 繁體中文
🇺🇸 English
🇯🇵 日本語
🇰🇷 한국어
🇫🇷 Français
🇩🇪 Deutsch
🇪🇸 Español
🇷🇺 Русский
s

stripemeter

Integrate Stripe usage-based billing with idempotent event ingestion, late-event handling, and pre-invoice reconciliation. Use when implementing usage metering, tracking API calls or seats, pushing usage to Stripe, handling billing drift, or building usage-based pricing.

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 0.1.0
安全检测
已通过
316
下载量
免费
免费
0
收藏
概述
安装方式
版本历史

stripemeter

# StripeMeter StripeMeter is a Stripe-native usage metering system that ensures correct usage totals for usage-based billing. It dedupes retries, handles late events with watermarks, keeps running counters, and pushes only deltas to Stripe. ## Quick Start ```bash git clone https://github.com/geminimir/stripemeter && cd stripemeter cp .env.example .env && docker compose up -d && pnpm -r build pnpm db:migrate && pnpm dev ``` ## Core Concepts ### Events (Immutable Ledger) Every usage event stored with deterministic idempotency key. Events are never deleted or modified. ### Counters (Materialized Aggregations) Pre-computed aggregations (sum/max/last) by tenant, metric, customer, and period. Updated in near-real-time. ### Watermarks (Late Event Handling) Each counter maintains a watermark timestamp. Events within lateness window (default 48h) trigger re-aggregation. ### Delta Push (Stripe Synchronization) Tracks `pushed_total` per subscription item and only sends delta to Stripe. ## API Endpoints ### Ingest Events ```bash curl -X POST http://localhost:3000/v1/events/ingest \ -H "Content-Type: application/json" \ -d '{ "events": [{ "tenantId": "your-tenant-id", "metric": "api_calls", "customerRef": "cus_ABC123", "quantity": 100, "ts": "2025-01-16T14:30:00Z" }] }' ``` ### Get Cost Projection ```bash curl -X POST http://localhost:3000/v1/usage/projection \ -H "Content-Type: application/json" \ -d '{"tenantId": "your-tenant-id", "customerRef": "cus_ABC123"}' ``` ### Health & Metrics - Readiness: `GET /health/ready` - Metrics: `GET /metrics` - Events: `GET /v1/events?tenantId=X&limit=10` ## Node.js SDK ```typescript import { createClient } from '@stripemeter/sdk-node'; const client = createClient({ apiUrl: 'http://localhost:3000', tenantId: 'your-tenant-id', customerId: 'cus_ABC123' }); // Track usage await client.track({ metric: 'api_calls', customerRef: 'cus_ABC123', quantity: 100, meta: { endpoint: '/v1/search' } }); // Get live usage const usage = await client.getUsage('cus_ABC123'); const projection = await client.getProjection('cus_ABC123'); ``` ## Python SDK ```python from stripemeter import StripeMeterClient client = StripeMeterClient( api_url="http://localhost:3000", tenant_id="your-tenant-id", customer_id="cus_ABC123" ) client.track( metric="api_calls", customer_ref="cus_ABC123", quantity=100 ) ``` ## Stripe Billing Driver For direct Stripe integration, use the stripe-driver package: ```typescript import { StripeBillingDriverImpl } from '@stripemeter/stripe-driver'; const driver = new StripeBillingDriverImpl({ liveKey: process.env.STRIPE_SECRET_KEY, testKey: process.env.STRIPE_TEST_SECRET_KEY }); // Record usage to Stripe await driver.recordUsage({ mode: 'live', stripeAccount: 'default', subscriptionItemId: 'si_xxx', quantity: 100, periodStart: '2025-01-01', idempotencyKey: 'unique-key' }); // Get usage summary const summary = await driver.getUsageSummary( 'si_xxx', '2025-01-01', 'default' ); ``` ## Shadow Mode Test Stripe usage posting without affecting live invoices: 1. Set `STRIPE_TEST_SECRET_KEY` in environment 2. Mark price mapping with `shadow=true` 3. Provide `shadowStripeAccount`, `shadowPriceId` 4. Live invoices remain unaffected ## Pricing Simulator ```typescript import { InvoiceSimulator } from '@stripemeter/pricing-lib'; const simulator = new InvoiceSimulator(); const result = simulator.simulate({ customerId: 'test', periodStart: '2024-01-01', periodEnd: '2024-02-01', usageItems: [{ metric: 'api_calls', quantity: 25000, priceConfig: { model: 'tiered', currency: 'USD', tiers: [ { upTo: 10000, unitPrice: 0.01 }, { upTo: 50000, unitPrice: 0.008 }, { upTo: null, unitPrice: 0.005 } ] } }] }); ``` ## Project Structure ``` stripemeter/ ├── packages/ │ ├── core/ # Shared types, schemas │ ├── database/ # Drizzle ORM + Redis │ ├── pricing-lib/ # Pricing calculator │ ├── stripe-driver/ # Direct Stripe API driver │ ├── sdk-node/ # Node.js SDK │ └── sdk-python/ # Python SDK ├── apps/ │ ├── api/ # REST API (Fastify) │ ├── workers/ # Background workers (BullMQ) │ ├── admin-ui/ # Admin dashboard │ └── customer-widget/# Embeddable widget ``` ## Environment Variables ```bash STRIPE_SECRET_KEY=sk_live_xxx # Live Stripe key STRIPE_TEST_SECRET_KEY=sk_test_xxx # Test Stripe key (for shadow mode) DATABASE_URL=postgres://... # PostgreSQL connection REDIS_URL=redis://... # Redis connection ``` ## Common Tasks ### Verify Idempotency ```bash # Send same event twice - counts once TENANT_ID=$(uuidgen) bash examples/api-calls/send.sh curl http://localhost:3000/metrics | grep ingest ``` ### Run Reconciliation Check drift between local totals and Stripe: - Differences beyond 0.5% epsilon trigger investigation - See [RECONCILIATION.md](RECONCILIATION.md) for runbook ### Replay Late Events ```bash curl -X POST http://localhost:3000/v1/replay \ -H "Content-Type: application/json" \ -d '{"tenantId": "X", "dryRun": true}' ``` ## Additional Resources - [API Documentation](docs/welcome.md) - [Simulator Guide](docs/simulator-getting-started.md) - [Reconciliation Runbook](RECONCILIATION.md) - [Alert Configuration](ops/ALERTS.md)

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 stripemeter-1776295457 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 stripemeter-1776295457 技能

通过命令行安装

skillhub install stripemeter-1776295457

下载

⬇ 下载 stripemeter v0.1.0(免费)

文件大小: 18.25 KB | 发布时间: 2026-4-16 15:40

v0.1.0 最新 2026-4-16 15:40
Initial release of stripemeter – usage-based billing integration for Stripe.

- Provides Stripe-native metering with idempotent event ingestion and late-event handling.
- Supports usage tracking, metrics aggregation, Stripe delta push, and reconciliation mechanisms.
- Includes API endpoints for event ingestion, cost projection, health checks, and metrics access.
- Offers Node.js and Python SDKs for easy integration.
- Features shadow mode for testing Stripe billing integrations safely.
- Bundles pricing simulator, admin UI, and reconciliation tooling.

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部