WavePayby T3raTech

API reference

Checkouts and payments

Create a checkout for a plan, send the buyer to the hosted page (or push a wallet prompt), and read the result.

GET/v2/providers

Enabled payment rails on this deployment

Authentication: None (public)

Responses

StatusMeaning
200{ providers: [{ id, label, methods }] }

Example

curl -sX GET https://t3rnel-wavepay-production.t3ratech.workers.dev/v2/providers
GET/v2/pricing

Plans, prices and promotions for a product

Authentication: None (public)

Parameters

NameInRequiredType
productIdqueryyesstring

Responses

StatusMeaning
200{ plans: [{ planId, priceMinor, currency, promotion }] }

Example

curl -sX GET https://t3rnel-wavepay-production.t3ratech.workers.dev/v2/pricing
POST/v2/checkouts

Create a buyer-facing hosted checkout

Authentication: None (public)

Body (JSON)

FieldTypeRequired
productIdstringyes
planIdstringyes
providerstringno
emailstringno
amountMinorintegerno
currencystringno

Responses

StatusMeaning
201{ reference: pay_…, checkoutUrl, provider, amountMinor, currency, test }

Example

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":"…"}'
GET/v2/checkouts/{reference}/status

Poll a checkout's settlement status

Authentication: None (public)

Parameters

NameInRequiredType
referencepathyesstring

Responses

StatusMeaning
200{ reference, state, amountMinor, currency }

Example

curl -sX GET https://t3rnel-wavepay-production.t3ratech.workers.dev/v2/checkouts/<reference>/status
POST/v2/internal/checkouts

Create a server-side checkout (merchant-scoped)

Authentication: Merchant key in x-wavepay-service-key

Parameters

NameInRequiredType
idempotency-keyheaderyesstring

Body (JSON)

FieldTypeRequired
productIdstringyes
planIdstringyes
providerstringyes
emailstringno
externalSubjectstringno
amountMinorintegerno
currencystringno

Responses

StatusMeaning
201{ reference, checkoutUrl, provider, amountMinor, currency, test }
403MERCHANT_SCOPE — product not bound to this merchant

Example

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":"…"}'
POST/v2/internal/checkouts/status

Poll a checkout's status (merchant)

Authentication: Merchant key in x-wavepay-service-key

Responses

StatusMeaning
200{ reference, state }

Example

curl -sX POST https://t3rnel-wavepay-production.t3ratech.workers.dev/v2/internal/checkouts/status \
  -H 'x-wavepay-service-key: mk_live_…'
POST/v2/internal/payments

Reconciliation ledger — idempotent drain with since/limit cursors

Authentication: Merchant key in x-wavepay-service-key

Responses

StatusMeaning
200{ payments: [{ reference, amountMinor, currency, settledAt }], cursor }

Example

curl -sX POST https://t3rnel-wavepay-production.t3ratech.workers.dev/v2/internal/payments \
  -H 'x-wavepay-service-key: mk_live_…'
POST/v2/internal/checkouts/otp

Complete an O'mari payment with the buyer's one-time PIN

Authentication: Merchant key in x-wavepay-service-key

Body (JSON)

FieldTypeRequired
referencestringyes
otpstringyes

Responses

StatusMeaning
200OK
403FEATURE_DISABLED (flag off for live money) or MERCHANT_SCOPE

Example

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":"…"}'