<script> tag and a Maven.createPayment() call, and the customer enters their card into a secure iframe we host.
Inline in chat
Renders as a message in your chatbot UI. No redirects.
Secure by default
Card data never touches your servers — we handle tokenization and charging.
Any gateway
Stripe, Authorize.net, Braintree, Shift4, or Fiserv — same code.
When to use the widget vs voice
You can use both on the same project — they share gateway connections, API keys, and webhook endpoints.
How it works
1
Your server creates a session
One
POST /v1/widget-sessions call with your API key, the amount, and the gateway. You get back a session_id.2
Your frontend mounts the widget
Include
widget.js once, then Maven.createPayment({ sessionId }).mount("#slot") — the iframe appears inline in your chat UI.3
Customer enters card details
The iframe is served from Maven’s domain. Card data goes directly from browser to Maven to VGS to the gateway.
4
Your callbacks fire
onSuccess({ transaction_id, card_brand, card_last4, ... }) or onFailure({ error_code, error_message }).5
Webhook confirms (optional)
Same webhook format as voice — your server gets an authoritative notification even if the customer closes the tab.
Architecture
Ready to integrate?
Quickstart
10-minute integration guide.
SDK Reference
Complete
Maven.createPayment() API.Customization
Theme, labels, fields, sizing.
Webhooks
Handle payment results server-side.
