Overview
Inline checkout lets you create fully integrated checkout experiences that blend seamlessly with your website or application. Unlike the overlay checkout, which opens as a modal on top of your page, inline checkout embeds the payment form directly into your page layout. Using inline checkout, you can:- Create checkout experiences that are fully integrated with your app or website
- Let Dodo Payments securely capture customer and payment information in an optimized checkout frame
- Display items, totals, and other information from Dodo Payments on your page
- Use SDK methods and events to build advanced checkout experiences

How It Works
Inline checkout works by embedding a secure Dodo Payments frame into your website or app. The checkout frame handles collecting customer information and capturing payment details. Your page displays the items list, totals, and options for changing what’s on the checkout. The SDK lets your page and the checkout frame interact with each other. Dodo Payments automatically creates a subscription when a checkout completes, ready for you to provision.What Makes a Good Inline Checkout?
It’s important that customers know who they’re buying from, what they’re buying, and how much they’re paying. To build an inline checkout that’s compliant and optimized for conversion, your implementation must include:
Example inline checkout layout showing required elements
- Recurring information: If recurring, how often it recurs and the total to pay on renewal. If a trial, how long the trial lasts.
- Item descriptions: A description of what’s being purchased.
- Transaction totals: Transaction totals, including subtotal, total tax, and grand total. Be sure to include the currency too.
- Dodo Payments footer: The full inline checkout frame, including the checkout footer that has information about Dodo Payments, our terms of sale, and our privacy policy.
- Refund policy: A link to your refund policy, if it differs from the Dodo Payments standard refund policy.
Customer Journey
The checkout flow is determined by your checkout session configuration. Depending on how you configure the checkout session, customers will experience a checkout that may present all information on a single page or across multiple steps.Customer opens checkout

Customer enters their details
Customer selects payment method

Checkout completed

Dodo Payments creates subscription

Quick Start
Get started with the Dodo Payments Inline Checkout in just a few lines of code:Step-by-Step Integration Guide
Install the SDK
Initialize the SDK for Inline Display
displayType: 'inline'. You should also listen for the checkout.breakdown event to update your UI with real-time tax and total calculations.Create a Container Element
Open the Checkout
DodoPayments.Checkout.open() with the checkoutUrl and the elementId of your container:Test Your Integration
- Start your development server:
- Test the checkout flow:
- Enter your email and address details in the inline frame.
- Verify that your custom order summary updates in real-time.
- Test the payment flow using test credentials.
- Confirm redirects work correctly.
checkout.breakdown events logged in your browser console if you added a console log in the onEvent callback.Go Live
- Change the mode to
'live':
- Update your checkout URLs to use live checkout sessions from your backend.
- Test the complete flow in production.
Complete React Example
This example demonstrates how to implement a custom order summary alongside the inline checkout, keeping them in sync using thecheckout.breakdown event.
API Reference
Configuration
Initialize Options
Checkout Options
Methods
Open Checkout
Opens the checkout frame in the specified container.Checkout-Schließen
Entfernt das Checkout-Frame programmgesteuert und bereinigt Ereignislistener.Status überprüfen
Gibt zurück, ob das Checkout-Frame derzeit injiziert ist.Ereignisse
Das SDK bietet Echtzeit-Ereignisse über denonEvent-Rückruf. Für den Inline-Checkout ist checkout.breakdown besonders nützlich für die Synchronisierung Ihrer Benutzeroberfläche.
Checkout-Breakdown-Daten
Dascheckout.breakdown-Ereignis liefert die folgenden Daten:
Verständnis des Breakdown-Ereignisses
Dascheckout.breakdown-Ereignis ist der Hauptweg, um die Benutzeroberfläche Ihrer Anwendung mit dem Dodo Payments Checkout-Status zu synchronisieren.
Wann es ausgelöst wird:
- Bei der Initialisierung: Unmittelbar nachdem das Checkout-Frame geladen und bereit ist.
- Bei Adressänderung: Jedes Mal, wenn der Kunde ein Land auswählt oder eine Postleitzahl eingibt, die eine Steuerneuberechnung zur Folge hat.
- Währungsformatierung: Preise werden immer als ganze Zahlen in der kleinsten Währungseinheit zurückgegeben (z.B. Cent für USD, Yen für JPY). Um sie anzuzeigen, dividieren Sie durch 100 (oder die entsprechende Zehnerpotenz) oder verwenden Sie eine Formatbibliothek wie
Intl.NumberFormat. - Umgang mit Anfangszuständen: Wenn der Checkout zum ersten Mal geladen wird, können
taxunddiscount0odernullsein, bis der Benutzer seine Rechnungsinformationen bereitstellt oder einen Code anwendet. Ihre Benutzeroberfläche sollte diese Zustände elegant behandeln (z.B. ein Strich—zeigen oder die Zeile ausblenden). - Der “endgültige Gesamtbetrag” vs. “Gesamtbetrag”: Während
totalIhnen die Standardpreiskalkulation gibt, istfinalTotaldie Quelle der Wahrheit für die Transaktion. WennfinalTotalvorhanden ist, spiegelt es genau wider, was der Karte des Kunden belastet wird, einschließlich aller dynamischen Anpassungen. - Echtzeitrückmeldung: Verwenden Sie das Feld
tax, um den Benutzern anzuzeigen, dass Steuern in Echtzeit berechnet werden. Dies vermittelt ein “Live”-Gefühl zu Ihrer Checkout-Seite und reduziert Reibungen während des Adresseingabeschritts.
Implementierungsoptionen
Paketmanager-Installation
Installieren Sie über npm, yarn oder pnpm wie im Schritt-für-Schritt-Integrationsleitfaden gezeigt.CDN-Implementierung
Für schnelle Integration ohne Build-Schritt, können Sie unser CDN verwenden:Zahlungsart aktualisieren
Inline-Checkout unterstützt Updates der Zahlungsmethode für Abonnements. Wenn ein Kunde seine Zahlungsmethode aktualisieren muss - sei es für ein aktives Abonnement oder um ein pausiertes Abonnement zu reaktivieren - können Sie den Aktualisierungsablauf direkt in Ihrem Seitenlayout rendern.So funktioniert’s
- Rufen Sie die Update Payment Method API auf, um eine
payment_linkzu erhalten:
- Geben Sie das zurückgegebene
payment_linkalscheckoutUrlweiter, um den Inline-Checkout zu öffnen:
Für pausierte Abonnements
Wenn Sie die Zahlungsmethode für ein Abonnement imon_hold-Status aktualisieren, erstellt Dodo Payments automatisch eine Belastung für alle ausstehenden Beträge. Überwachen Sie die payment.succeeded und subscription.active Webhooks, um die Reaktivierung zu bestätigen.
Fehlerbehandlung
Das SDK bietet detaillierte Fehlerinformationen über das Ereignissystem. Implementieren Sie immer eine ordnungsgemäße Fehlerbehandlung in IhremonEvent-Rückruf:
Best Practices
- Responsives Design: Stellen Sie sicher, dass Ihr Containerelement genügend Breite und Höhe hat. Das iFrame wird typischerweise seine Containergröße ausfüllen.
- Synchronisation: Verwenden Sie das
checkout.breakdown-Ereignis, um Ihre benutzerdefinierte Bestellübersicht oder Preistabellen mit dem, was der Benutzer im Checkout-Frame sieht, synchron zu halten. - Zustände des Skeletts: Zeigen Sie einen Ladeindikator in Ihrem Container, bis das
checkout.opened-Ereignis ausgelöst wird. - Bereinigung: Rufen Sie
DodoPayments.Checkout.close()auf, wenn Ihre Komponente demontiert wird, um das iFrame und die Ereignislistener zu bereinigen.
#0d0d0d als Hintergrundfarbe zu verwenden, um eine optimale visuelle Integration mit dem Inline-Checkout-Frame zu gewährleisten.Zahlungsstatusüberprüfung
Warum serverseitige Validierung unerlässlich ist
Obwohl Inline-Checkout-Ereignisse Echtzeit-Feedback bieten, sollten sie nicht Ihre einzige Wahrheitsquelle für den Zahlungsstatus sein. Netzwerkprobleme, Browserabstürze oder das Schließen der Seite durch Benutzer können dazu führen, dass Ereignisse verpasst werden. Um eine zuverlässige Zahlungsvalidierung sicherzustellen:- Ihr Server sollte Webhook-Ereignisse abhören - Dodo Payments sendet Webhooks für Zahlungsstatusänderungen
- Implementieren Sie einen Polling-Mechanismus - Ihr Frontend sollte Ihren Server auf Statusaktualisierungen abfragen
- Kombinieren Sie beide Ansätze - Verwenden Sie Webhooks als primäre Quelle und Polling als Fallback
Empfohlene Architektur
Implementierungsschritte
1. Zuhören nach Checkout-Ereignissen - Wenn der Benutzer auf Bezahlen klickt, beginnen Sie mit der Vorbereitung zur Statusüberprüfung:payment.succeeded oder payment.failed Webhooks sendet. Siehe unsere Webhooks-Dokumentation für Details.
Fehlerbehebung
Checkout frame is not appearing
Checkout frame is not appearing
- Überprüfen Sie, dass
elementIdmit demideines tatsächlich im DOM vorhandenendivübereinstimmt. - Stellen Sie sicher, dass
displayType: 'inline'anInitializeübergeben wurde. - Überprüfen Sie, ob das
checkoutUrlgültig ist.
Taxes are not updating in my UI
Taxes are not updating in my UI
- Stellen Sie sicher, dass Sie das
checkout.breakdown-Ereignis anhören. - Steuern werden nur berechnet, nachdem der Benutzer ein gültiges Land und eine Postleitzahl im Checkout-Frame eingegeben hat.
Digitale Geldbörsen aktivieren
Für detaillierte Informationen zum Einrichten von Apple Pay, Google Pay und anderen digitalen Geldbörsen, siehe die Seite Digitale Geldbörsen.Schnellsetup für Apple Pay
Open Wallet domains

Open Wallet domains from the Apple Pay row
Download the domain association file

Download the Apple Pay domain association file
Register your domain
shop.example.com), dann Weiter.
Register the domain where you embed inline checkout
Host the file on your domain
Content-Type: application/octet-stream oder text/plain bedient werden.Verify the domain

Verify the hosted association file
Confirm it's active

Verified domains show an Active status
Test the integration
- Öffnen Sie den Checkout auf einem Apple-Gerät
- Verifizieren Sie, dass die Apple Pay-Taste erscheint
- Führen Sie eine Testtransaktion durch
Browserunterstützung
Das Dodo Payments Checkout SDK unterstützt die folgenden Browser:- Chrome (neueste)
- Firefox (neueste)
- Safari (neueste)
- Edge (neueste)
- IE11+