Build Mac AppDocsMenu

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

#QuestionAnswerSource
1Merchant of record?Yes.https://creem.io
2Native licence keys?Yes, per product.Creem docs, Licenses
3Activation limits?Yes, per product — dashboard only; absent from the Create Product API.site/.env.example notes
4Licence endpointsPOST /v1/licenses/{activate,validate,deactivate} with x-api-key.Creem API reference
5Refusal statuses404 unknown, 410 expired, 400 refused, 403 at the activation cap.wiki/Engineering/Licensing Architecture.md
6Credential statuses401 / 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
7Webhook signaturecreem-signature: hex HMAC-SHA256 of the raw body with the secret (the SDK also accepts Standard Webhooks headers).creem/webhooks SDK source
8Webhook eventscheckout.completed (check order.status === "paid"), refund.created, dispute.created.Creem docs
9Test vs liveKey prefix creem_test_ → test-api.creem.io. Payloads carry mode; the adapter guards both directions.site/lib/payments/creem/client.ts
10Checkout linksHosted …/payment/prod_… links; metadata[key]=value in the query round-trips to the webhook.Creem docs
11Return verificationSigned with the API key: SHA-256 over the ordered params plus salt=<key>.site/lib/payments/creem/client.ts
12Recovery by emailGET /v1/customers?email → GET /v1/customers/{id}/licenses.Creem API reference
13PricesGET /v1/products/{id} → price (cents), currency.same
14Custom fieldsYes.Creem docs
15Refund behaviourRefunds arrive as refund.created; licence status follows.Creem docs
16Legal nameCreemhttps://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.