Skip to main content

Overview

The Moment JavaScript SDK enables seamless payment integration into any web application. Whether you need a modal overlay or inline embedded checkout — the SDK handles it all with a simple, unified API. Built with vanilla JavaScript (no dependencies), the SDK works with any frontend framework or plain HTML pages.

Embedded Modal :


Key Features

  • Zero Dependencies – Pure vanilla JavaScript, works everywhere
  • Flexible Display Options – Choose between modal overlay or inline embedded checkout
  • Flexible Callbacks – Handle payment success, failure, cancellation, retry, and expiry events
  • Cross-Origin Safe – Secure iframe communication via postMessage
  • Environment Detection – Automatic sandbox / production switching based on client key
  • PCI Compliant – All sensitive payment data handled in Moment’s secure iframe

Display Variants


How It Works

  1. Page loadsMoment(clientKey) creates an SDK instance; moment.checkout() is called to create a checkout instance with your fetchClientToken, fetchSessionStatus, and event callbacks (onSuccess, onFailure, etc.)
  2. Customer clicks Paycheckout.launch() is called
  3. SDK calls fetchClientToken — your callback creates a session on your backend (with a success_url) and returns the client_token
  4. Checkout opens in your chosen variant (modal or inline)
  5. Customer submits payment — Moment takes over the full page and redirects to the authentication page
  6. Customer completes authentication on the external page
  7. Customer is redirected back to your success_url with ?session_id=abc123 appended
  8. Page loads againmoment.checkout() detects the session_id in the URL automatically and calls your fetchSessionStatus('abc123') callback
  9. Your callback fetches the status from your backend, which queries Moment API
  10. SDK routes to the right handleronSuccess, onFailure, onExpired, or onCancel — and removes session_id from the URL silently
  11. Webhooks are delivered to your backend regardless of outcome

Installation

Self-Hosted

Download moment.js and include it in your project:

Module Import (Coming Soon)


Quick Start

1. Initialize the SDK

Call Moment(clientKey) once when your page loads to create an SDK instance. Then call moment.checkout() with your fetch callbacks and event handlers — it returns a checkout instance, and the SDK calls your callbacks automatically at the right moments, so you never manage tokens or session IDs manually. Backend endpoints:
server.js
Frontend — initialize once on page load:
app.js

2. Open Checkout

app.js

API Reference

Moment(clientKey)

Factory function — creates an isolated SDK instance scoped to your publishable key. Returns an object with product namespaces (checkout, and more in the future). Throws immediately if clientKey is invalid.

moment.checkout(config)

Creates and returns a checkout instance for this SDK. Detects any ?session_id= in the current URL and automatically calls fetchSessionStatus if provided. Returns a checkout object with launch, close, and submit methods. Example:

checkout.launch(options)

Opens the payment checkout. Internally calls your fetchClientToken function to retrieve a fresh token, then opens checkout. The display variant (modal or inline) is determined from the JWT payload variant claim, which is set when creating the session on your backend. Returns a Promise that resolves with { checkoutUrl, variant } once the checkout is open. Examples:

checkout.close()

Manually closes the modal or inline checkout.

checkout.submit() Coming soon

Triggers payment submission from outside the iframe — useful when you want an external “Pay” button rather than relying on the checkout UI’s built-in submit. Only available for the inline variant.

Security Best Practices

  1. Never expose your secret key (sk_...) in frontend code
  2. Always create sessions server-side using your secret key
  3. Validate webhooks to confirm payment status server-side
  4. Use HTTPS for all pages that include the SDK
  5. Handle token expiry by requesting a new token if needed

Next Steps