Skip to content

Integrations status

TwistCue v2 ships with the UI and ledger reality for every integration, but some provider-side calls are stubbed (record-only) until you wire them. This page is the honest map.

  • Live: real provider calls happen. Money moves, videos transcode, pushes deliver.
  • 🟡 Live but degraded: happy path works; edge cases stubbed.
  • 🔴 Stubbed: the UI + ledger behave correctly, but the provider-side action is a no-op. Enable per instructions below.
  • Direct-upload URLs, TUS resumable protocol.
  • HMAC-verified webhook.
  • Signed HLS playback URLs at play time.
  • Auto thumbnail extraction (3 candidates).
  • Config: CF_STREAM_ACCOUNT_ID, CF_STREAM_API_TOKEN, CF_STREAM_WEBHOOK_SECRET.
  • Poster and hero image uploads currently write a placeholder media_asset row without hitting CF Images.
  • Enable: wire CF_IMAGES_ACCOUNT_ID + CF_IMAGES_API_TOKEN, update MediaService.uploadImage() to call CF Images (see the TODO in media.service.ts).

Apple / Google IAP (via RevenueCat): 🟡 Live but degraded

Section titled “Apple / Google IAP (via RevenueCat): 🟡 Live but degraded”
  • Store purchases route through RevenueCat → webhook → ledger credits.
  • Refunds: record-only. Store-side refunds are triggered from the store, not from us. Our record-mode picks up refund events from RevenueCat webhooks and reverses the ledger.
  • Config: REVENUECAT_WEBHOOK_SECRET, REVENUECAT_PROJECT_ID.
  • Payment intent creation is stubbed. Ledger credits do not fire from card charges in v2.
  • Enable: wire the MID’s API. Update PaymentsService.createCardIntent() and the corresponding webhook handler.
  • Payment creation + webhook: schema in place, provider calls are console.log stubs.
  • Enable: wire DLOCAL_LOGIN, DLOCAL_TRANS_KEY, DLOCAL_SECRET_KEY. See dLocal API docs.
  • Same shape as dLocal.
  • Enable: wire pawaPay credentials.

VAS / DCB via adbilling.me: 🟡 Live but degraded

Section titled “VAS / DCB via adbilling.me: 🟡 Live but degraded”
  • MSISDN + PIN funnel active on adbilling.me stack.
  • Entitlement grant into TwistCue is via a shared endpoint (/v1/vas/entitle) called by adbilling.me on successful subscribe. Ledger credit fires.
  • Cancellations flow via the same channel; carrier-level refunds are typically not supported.

Refund execution: 🔴 Stubbed for card / dLocal / pawaPay

Section titled “Refund execution: 🔴 Stubbed for card / dLocal / pawaPay”
  • Refund pipeline (ledger + audit + approvals) is live.
  • Provider-side money-out call is stubbed in v2: refunds execute in record-only mode. Manual reconciliation needed until wired.
  • Enable per rail:
    • Card MID refund endpoint → PaymentsService.executeRefund_card()
    • dLocal refund endpoint → .executeRefund_dlocal()
    • pawaPay refund endpoint → .executeRefund_pawapay()
  • Store IAP refunds are record-only by design: Apple/Google refund from their end.
  • Push composer + estimate + scheduler are live.
  • Delivery to APNs is stubbed: sends log to console, don’t hit APNs.
  • Enable: upload APNs P8 key, set APNS_KEY_ID, APNS_TEAM_ID, APNS_KEY_PATH, APNS_BUNDLE_ID. Wire PushService.sendApns().
  • Same story.
  • Enable: provide FCM service account JSON. Set FCM_SERVICE_ACCOUNT_PATH.
  • Mobile app emits events to analytics_event table (our own ingest).
  • PostHog embedded dashboards for non-money charts are planned; UI currently reads from our own rollup tables.
  • Enable: provision PostHog project, set POSTHOG_PROJECT_KEY, add embed URLs to admin analytics pages that are marked “PostHog embed later”.
  • DB columns exist on admin_users for WebAuthn credentials.
  • Admin login is password-only in v2.
  • Enable: phase 2: add WebAuthn registration + verify handlers.
IntegrationStatusNotes
Cloudflare StreamLive
Cloudflare Images🔴Poster/hero uploads stubbed
Apple/Google IAP (RevenueCat)🟡Purchases live; refunds record-only
Cards (web MID)🔴Stubbed
dLocal🔴Stubbed
pawaPay🔴Stubbed
VAS (adbilling.me)🟡Live via shared endpoint
Refund execution (non-store rails)🔴Record-only
APNs🔴Stubbed
FCM🔴Stubbed
PostHog embed🔴Native charts only in v2
WebAuthn🔴Phase 2
  1. APNs + FCM: without push, engagement is crippled.
  2. Card MID: unlocks web checkout (lowest fees).
  3. dLocal: unlocks EG (Fawry), ID (OVO/DANA), PH (GCash).
  4. CF Images: better poster/hero pipeline.
  5. pawaPay: sub-Saharan Africa expansion.
  6. PostHog embed: nice-to-have analytics UI.
  7. WebAuthn: nice-to-have admin security.