/v2/providersEnabled payment rails on this deployment
Authentication: None (public)
Responses
| Status | Meaning |
|---|---|
| 200 | { providers: [{ id, label, methods }] } |
Example
curl -sX GET https://t3rnel-wavepay-production.t3ratech.workers.dev/v2/providers
API reference
Create a checkout for a plan, send the buyer to the hosted page (or push a wallet prompt), and read the result.
/v2/providersEnabled payment rails on this deployment
Authentication: None (public)
| Status | Meaning |
|---|---|
| 200 | { providers: [{ id, label, methods }] } |
curl -sX GET https://t3rnel-wavepay-production.t3ratech.workers.dev/v2/providers
/v2/pricingPlans, prices and promotions for a product
Authentication: None (public)
| Name | In | Required | Type |
|---|---|---|---|
productId | query | yes | string |
| Status | Meaning |
|---|---|
| 200 | { plans: [{ planId, priceMinor, currency, promotion }] } |
curl -sX GET https://t3rnel-wavepay-production.t3ratech.workers.dev/v2/pricing
/v2/checkoutsCreate a buyer-facing hosted checkout
Authentication: None (public)
| Field | Type | Required |
|---|---|---|
productId | string | yes |
planId | string | yes |
provider | string | no |
email | string | no |
amountMinor | integer | no |
currency | string | no |
| Status | Meaning |
|---|---|
| 201 | { reference: pay_…, checkoutUrl, provider, amountMinor, currency, test } |
curl -sX POST https://t3rnel-wavepay-production.t3ratech.workers.dev/v2/checkouts \
-H 'content-type: application/json' \
-d '{"productId":"…","planId":"…","provider":"…","email":"…","amountMinor":0,"currency":"…"}'
/v2/checkouts/{reference}/statusPoll a checkout's settlement status
Authentication: None (public)
| Name | In | Required | Type |
|---|---|---|---|
reference | path | yes | string |
| Status | Meaning |
|---|---|
| 200 | { reference, state, amountMinor, currency } |
curl -sX GET https://t3rnel-wavepay-production.t3ratech.workers.dev/v2/checkouts/<reference>/status
/v2/internal/checkoutsCreate a server-side checkout (merchant-scoped)
Authentication: Merchant key in x-wavepay-service-key
| Name | In | Required | Type |
|---|---|---|---|
idempotency-key | header | yes | string |
| Field | Type | Required |
|---|---|---|
productId | string | yes |
planId | string | yes |
provider | string | yes |
email | string | no |
externalSubject | string | no |
amountMinor | integer | no |
currency | string | no |
| Status | Meaning |
|---|---|
| 201 | { reference, checkoutUrl, provider, amountMinor, currency, test } |
| 403 | MERCHANT_SCOPE — product not bound to this merchant |
curl -sX POST https://t3rnel-wavepay-production.t3ratech.workers.dev/v2/internal/checkouts \
-H 'x-wavepay-service-key: mk_live_…' \
-H 'content-type: application/json' \
-d '{"productId":"…","planId":"…","provider":"…","email":"…","externalSubject":"…","amountMinor":0,"currency":"…"}'
/v2/internal/checkouts/statusPoll a checkout's status (merchant)
Authentication: Merchant key in x-wavepay-service-key
| Status | Meaning |
|---|---|
| 200 | { reference, state } |
curl -sX POST https://t3rnel-wavepay-production.t3ratech.workers.dev/v2/internal/checkouts/status \
-H 'x-wavepay-service-key: mk_live_…'
/v2/internal/paymentsReconciliation ledger — idempotent drain with since/limit cursors
Authentication: Merchant key in x-wavepay-service-key
| Status | Meaning |
|---|---|
| 200 | { payments: [{ reference, amountMinor, currency, settledAt }], cursor } |
curl -sX POST https://t3rnel-wavepay-production.t3ratech.workers.dev/v2/internal/payments \
-H 'x-wavepay-service-key: mk_live_…'
/v2/internal/checkouts/otpComplete an O'mari payment with the buyer's one-time PIN
Authentication: Merchant key in x-wavepay-service-key
| Field | Type | Required |
|---|---|---|
reference | string | yes |
otp | string | yes |
| Status | Meaning |
|---|---|
| 200 | OK |
| 403 | FEATURE_DISABLED (flag off for live money) or MERCHANT_SCOPE |
curl -sX POST https://t3rnel-wavepay-production.t3ratech.workers.dev/v2/internal/checkouts/otp \
-H 'x-wavepay-service-key: mk_live_…' \
-H 'content-type: application/json' \
-d '{"reference":"…","otp":"…"}'