Features
Provider research: Creem
The template's default provider, researched while building the three source
products. The adapter is site/lib/payments/creem/adapter.ts; the contract's
history is in wiki/Engineering/Licensing Architecture.md.
Read on: 2026-09-23 (re-read 2026-09-25). API: https://docs.creem.io
| # | Question | Answer | Source |
|---|---|---|---|
| 1 | Merchant of record? | Yes. | https://creem.io |
| 2 | Native licence keys? | Yes, per product. | Creem docs, Licenses |
| 3 | Activation limits? | Yes, per product — dashboard only; absent from the Create Product API. | site/.env.example notes |
| 4 | Licence endpoints | POST /v1/licenses/{activate,validate,deactivate} with x-api-key. | Creem API reference |
| 5 | Refusal statuses | 404 unknown, 410 expired, 400 refused, 403 at the activation cap. | wiki/Engineering/Licensing Architecture.md |
| 6 | Credential statuses | 401 / 403 for our key — the same 403 as the cap. The adapter treats 403 as ours unless the message names the limit. Settle in test mode. | same |
| 7 | Webhook signature | creem-signature: hex HMAC-SHA256 of the raw body with the secret (the SDK also accepts Standard Webhooks headers). | creem/webhooks SDK source |
| 8 | Webhook events | checkout.completed (check order.status === "paid"), refund.created, dispute.created. | Creem docs |
| 9 | Test vs live | Key prefix creem_test_ → test-api.creem.io. Payloads carry mode; the adapter guards both directions. | site/lib/payments/creem/client.ts |
| 10 | Checkout links | Hosted …/payment/prod_… links; metadata[key]=value in the query round-trips to the webhook. | Creem docs |
| 11 | Return verification | Signed with the API key: SHA-256 over the ordered params plus salt=<key>. | site/lib/payments/creem/client.ts |
| 12 | Recovery by email | GET /v1/customers?email → GET /v1/customers/{id}/licenses. | Creem API reference |
| 13 | Prices | GET /v1/products/{id} → price (cents), currency. | same |
| 14 | Custom fields | Yes. | Creem docs |
| 15 | Refund behaviour | Refunds arrive as refund.created; licence status follows. | Creem docs |
| 16 | Legal name | Creem | https://creem.io |
The path this puts us on
- Adapter only.
This page is docs/payments/providers/creem.md in the repository, copied 2026-09-25.