Post-purchase web SDKs

Offer a branded impact experience after payment using ekko’s post‑purchase SDKs. ekko renders the components server‑side, and the SDK provides a simple way to drop them into your confirmation flow.

ℹ️

See our post-purchase SDKs in action at https://pwa.ekko.earth/

When to use

  • You want a hosted impact experience
  • You prefer ekko to process the compensation/ contribution payment separately from the main payment
  • You need fast time to value with low engineering effort

Options at a glance

OptionPlacement in journeyEffortBest for
Full page takeover SDKBetween payment complete → order confirmationMediumA focused, immersive impact journey
Embedded SDKInside your existing confirmation pageMediumA native‑feeling module within your own layout

How they work (shared flow)

  1. Create a brand. Use POST /organisations/brand/onboarding to create a brand and get a productId.

  2. Create an ImpactPay session. Your backend calls POST /impactpay/sessions with order context and merchant details. You receive an impactPaySessionId and a short-lived clientSecret to initialise the SDK.

  3. Initialise the SDK on the client. Pass the clientSecret to the SDK to authenticate the session. ekko server-side renders the component.

  4. Customer reviews and contributes. Customers see their footprint, learn more about projects, and can make a contribution using ekko’s hosted payment page.

  5. Set up webhooks. To keep your systems in sync, ekko provides webhook events for post-purchase payments:

    • IMPACT_PAYMENT → fired when a contribution payment is successfully processed
    • IMPACT_PAYMENT_REVERSAL → fired when a processed payment is refunded or voided
  6. Records and reconciliation. Compensations, contributions and any reversals appear in Impact Records. Since ekko processes the payment, settlement shows fundsFlow = receivable for the client’s service fee share.

What’s shared across both SDKs

  • Server-side rendered content and visuals that stay up to date as we apply new learnings and local insights - without you needing to make changes
  • Short‑lived clientSecret for secure initialisation
  • Resilience features so existing confirmation pages remain usable if the SDK fails to load