用途:为 token、API 调用、算力、存储或货币价值构建预付/包含额度计费,支持可审计的发放与扣减。适用于订阅内包含周期性额度、一次性充值包、按量消耗扣减、促销或客服补偿额度,以及配置过期、结转、低余额提醒和超额。
主要能力:信用权益(credit entitlement)定义额度单位与生命周期(名称、单位、精度、过期、结转、超额);发放(grant)可来自订阅每周期重发、一次性产品或附加项、直接 API 账本入账、结转。额度分自定义单位(token、调用、算力小时)与法币(USD/EUR 预付余额)。自定义单位精度 0–10,创建后不可改。余额含 balance、overage、last_transaction_at;每笔交易有账本记录(balance_before/after、overage_before/after、amount、类型、来源、grant ID、描述、元数据、时间戳),作为审计轨迹。
使用方式:服务端初始化 TypeScript SDK,密钥用 dodo_test_/dodo_live_ 前缀,开发用 environment: 'test_mode'。用 client.creditEntitlements.create(...) 创建权益;用 client.creditEntitlements.balances.retrieve(customerId, { credit_entitlement_id }) 读余额;用 createLedgerEntry 手动发放(entry_type: 'credit')或扣减(entry_type: 'debit',FIFO,余额不足返回 400),并传稳定 idempotency_key。用 listLedger 读账本。产品侧在创建/编辑流程附加信用权益;按量产品需设 meter_id、credit_entitlement_id、meter_units_per_credit,可选 free_threshold。结账用 checkoutSessions.create,购买产品即创建发放,结账不接受临时额度金额。
限制:额度金额为十进制字符串,勿用二进制浮点运算;amount 整数部分须小于 10^10。超额行为枚举为 forgive_at_reset(默认)、invoice_at_billing、carry_deficit、carry_deficit_auto_repay;启用超额时 price_per_unit 必填,有价格时 currency 必填。超额关闭时余额归零后停止扣减,但计量异步处理,不能作为应用请求的同步授权,需应用侧自行拦截。计量后台约每分钟处理一次,事件被接受不代表立即扣减。同一 idempotency_key 重复可能返回 409,应核对原操作而非换 key 重试。不要对已接入自动计量扣减的用量再手动扣减。产品最多携带五个信用权益。部分产品附加请求结构可能变化,应以仪表盘或当前 Create Product API 为准。