Passer au contenu principal
Page de paiement
Le checkout Dodo Payments est un parcours de paiement optimisé pour la conversion et conforme à l’échelle mondiale, conçu pour les produits numériques et les entreprises SaaS. Il prend en charge plusieurs devises, langues, taxes, remises, modules complémentaires et workflows de conformité adaptés aux entreprises.

Checkout Sessions API

Créez des sessions de checkout hébergées de manière programmatique.

Preview Checkout

Calculez les prix et les taxes avant de créer une session.

Payment Methods

Méthodes de paiement prises en charge et options de configuration.

Devise Adaptative

La Devise Adaptative permet aux clients de payer dans leur devise locale préférée, améliorant ainsi la confiance et les taux de conversion.

Comment ça fonctionne

  1. Activer : Activez la devise adaptative depuis Paramètres → Business
  2. Sélectionner : Les clients peuvent changer de devise directement à la caisse
  3. Convertir : Les prix sont convertis dynamiquement en utilisant les taux de change en temps réel
  4. Afficher : Le montant final à payer est affiché de manière transparente avant le paiement
Sélecteur de devises à la caisse

Adaptive Currency

En savoir plus sur les devises prises en charge, les frais de conversion et la gestion des remboursements.

Paiement Multilingue

Dodo Payments prend en charge plusieurs langues sur la page de paiement, permettant aux clients de finaliser leurs paiements dans une langue avec laquelle ils sont à l’aise.
Sélecteur de langue à la caisse

Points Clés

  • Sélecteur de langue disponible directement lors du paiement
  • Texte de l’interface utilisateur, étiquettes et messages système sont localisés
  • Améliore l’accessibilité et la conversion internationale

Langues prises en charge

La page de paiement prend en charge 21 langues :
LanguageCode
Arabicar
Catalanca
Chinesezh
Dutchnl
Englishen
Frenchfr
Germande
Hebrewhe
Indonesianid
Italianit
Japaneseja
Koreanko
Malayms
Polishpl
Portuguesept
Romanianro
Russianru
Spanishes
Swedishsv
Thaith
Turkishtr
Vous pouvez forcer une langue spécifique sur le checkout en définissant le paramètre force_language lors de la création d’une session de checkout. Consultez l’API des sessions de checkout pour plus de détails.

Calcul automatique des taxes

Les taxes sont calculées automatiquement en fonction de l’adresse de facturation du client, garantissant la conformité aux exigences de la TPS, de la TVA et des taxes de vente sans configuration manuelle.

Fonctionnement du calcul des taxes

1

Location Detection

Les règles fiscales sont appliquées selon le pays du client (et la région lorsque cela est applicable).
2

Dynamic Updates

Le montant des taxes se met à jour automatiquement lorsque :
  • le pays change
  • l’adresse est mise à jour
3

Transparent Display

Le détail final des taxes est affiché clairement avant le paiement.
Le calcul des taxes est entièrement automatisé. Aucune configuration manuelle n’est requise pour les biens numériques standard et les produits SaaS.

Prise en charge de l’identification fiscale des entreprises

Pour les entreprises enregistrées, le checkout permet aux clients de saisir leur numéro d’identification fiscale (par exemple, numéro de TVA/TVH).

Que se passe-t-il lorsqu’un identifiant fiscal est saisi

  • L’éligibilité fiscale est validée en temps réel
  • Les exonérations fiscales ou règles d’autoliquidation applicables sont appliquées
  • Le montant des taxes se met instantanément à jour dans le checkout
Entrée de l'identifiant fiscal de l'entreprise à la caisse
Cela est particulièrement utile pour les services SaaS B2B et les services numériques où les clients professionnels peuvent bénéficier d’exonérations fiscales.

Codes de réduction

Les clients peuvent appliquer les codes promotionnels ou de réduction que vous avez créés dans le tableau de bord directement sur la page de paiement.

Expérience de checkout

  1. Le client saisit le code de réduction
  2. La réduction est validée instantanément
  3. Le prix mis à jour et les économies sont clairement affichés
Entrée du code de réduction à la caisse

Intégration API

Pré-appliquez un ou plusieurs codes de réduction empilés ou activez le champ de saisie de réduction :
const session = await client.checkoutSessions.create({
  product_cart: [
    { product_id: 'prod_abc', quantity: 1 }
  ],
  discount_codes: ['WELCOME20'], // Pre-apply one or more codes (max 20, applied in order)
  feature_flags: {
    allow_discount_code: true // Show discount input field
  },
  return_url: 'https://yoursite.com/return'
});
discount_codes accepte un tableau de jusqu’à 20 codes qui s’empilent dans l’ordre. Le champ unique discount_code est obsolète mais fonctionne toujours — les intégrations existantes n’ont pas besoin de changer immédiatement. Migrez vers discount_codes lorsque cela est pratique pour utiliser l’empilement et la forme de réponse enrichie.

Discount Codes

Découvrez comment créer et gérer les codes de réduction.

Validate Discount by Code

Recherchez et validez les réductions en utilisant les noms de code.

Collection d’adresses intelligentes

Le processus de paiement prend en charge une saisie d’adresse flexible pour une finalisation plus rapide.

Options disponibles

OptionDescription
Remplissage automatique d’adresse GoogleSélection rapide avec autocomplétion
Saisie manuelleContrôle total pour des adresses complètes
Sélection du paysGuide les logiques fiscales et de conformité
La collecte d’adresses équilibre la rapidité, la précision, et la couverture mondiale pour maximiser la conversion tout en assurant la conformité.

Collecte de numéros de téléphone

Contrôlez si le champ du numéro de téléphone apparaît lors de la commande — et si c’est obligatoire — en utilisant des indicateurs de fonctionnalité de session de commande.
IndicateurPar défautComportement
allow_phone_number_collectiontrueAffiche le champ numéro de téléphone dans le formulaire de commande
require_phone_numberfalseRend le champ numéro de téléphone obligatoire (la validation du formulaire impose une valeur non vide)
const session = await client.checkoutSessions.create({
  product_cart: [{ product_id: 'prod_abc', quantity: 1 }],
  feature_flags: {
    allow_phone_number_collection: true,
    require_phone_number: true
  },
  return_url: 'https://yoursite.com/return'
});
require_phone_number: true nécessite allow_phone_number_collection: true. L’API rejette les sessions où la collecte des téléphones est désactivée alors que le numéro de téléphone est requis.
Utilisez require_phone_number pour les SaaS B2B, les industries réglementées, ou tout flux où vous avez besoin d’un canal de contact vérifié pour le support, la révision de fraude, ou la conformité.

Champs personnalisés

Collectez des informations supplémentaires des clients lors de la commande en définissant des champs de formulaire personnalisés. Cela est utile pour recueillir des données telles que le nom de l’entreprise, la taille de l’équipe, la source de recommandation, ou toute autre information spécifique à l’entreprise.

Types de champs disponibles

TypeDescription
textEntrée de texte sur une seule ligne
numberEntrée numérique
emailAdresse e-mail avec validation
urlURL avec validation
dateSélecteur de date
dropdownSélection parmi des options prédéfinies
booleanBasculer Oui/Non

Exemple

const session = await client.checkoutSessions.create({
  product_cart: [
    { product_id: 'prod_abc', quantity: 1 }
  ],
  custom_fields: [
    {
      key: 'company_name',
      label: 'Company Name',
      field_type: 'text',
      required: true
    },
    {
      key: 'team_size',
      label: 'Team Size',
      field_type: 'dropdown',
      required: true,
      options: ['1-10', '11-50', '51-200', '200+']
    }
  ],
  return_url: 'https://yoursite.com/return'
});
Les réponses des clients sont automatiquement incluses dans les charges utiles de webhook (payment.succeeded, subscription.active) et les réponses de l’API via le tableau custom_field_responses. Vous pouvez définir jusqu’à 5 champs personnalisés par session de commande.

Custom Fields Guide

En savoir plus sur la configuration des champs personnalisés et l’accès aux réponses.

Politique de confidentialité et acceptation des conditions

Pour garantir transparence juridique et de conformité :
Cela aide à respecter les exigences mondiales de protection des consommateurs et de confidentialité des données, y compris la conformité au RGPD.

Cofin d’encaissement

Les collections de produits permettent une expérience de commande unifiée où les clients peuvent voir et sélectionner plusieurs produits connexes (par ex., forfaits Starter, Pro, Enterprise) dans une seule commande.

Comment ça marche

  1. Tous les produits affichés : Les clients voient tous les produits actifs de la collection
  2. Premier produit pré-sélectionné : Le premier produit de la collection est automatiquement sélectionné
  3. Comparer les options : Les clients peuvent comparer les prix et les fonctionnalités avant de faire un choix
  4. Sélection unique : Après la sélection d’un produit, la commande procède avec le flux de paiement standard

Création d’une collection de commande

const session = await client.checkoutSessions.create({
  product_collection_id: 'pdc_abc123',
  product_cart: [], // Required: pass an empty array for collection checkout
  return_url: 'https://yoursite.com/return'
});
Lors de l’utilisation d’product_collection_id, transmettez un tableau product_cart vide. Les codes de réduction ne peuvent pas être pré-appliqués à la création de session.

Product Collections

Découvrez comment créer et gérer les collections de produits pour des expériences de paiement unifiées.

Configuration des sessions de commande

Contrôlez le comportement de la commande à l’aide de l’API des sessions de paiement :
const session = await client.checkoutSessions.create({
  product_cart: [
    { product_id: 'prod_abc', quantity: 1 }
  ],
  customer: {
    email: 'customer@example.com',
    name: 'Jane Doe'
  },
  billing_currency: 'EUR', // Set specific currency
  discount_codes: ['PROMO10'],
  feature_flags: {
    allow_discount_code: true
  },
  return_url: 'https://yoursite.com/return',
  cancel_url: 'https://yoursite.com/pricing', // Optional: where to redirect on cancel
  metadata: {
    order_ref: 'ORD-12345'
  }
});
Après le paiement, les clients sont redirigés vers votre return_url avec des paramètres de requête ajoutés automatiquement — incluant payment_id ou subscription_id, status, email, et license_key (si applicable). Voir le guide des sessions de commande pour la liste complète.

Checkout Sessions API

Référence complète de l’API pour les sessions de commande.

Checkout Integration Guide

Guide pas-à-pas pour intégrer la commande.

Personnalisation du thème de commande

Personnalisez l’apparence de la page de commande pour correspondre à votre marque en utilisant le paramètre customization.theme_config lors de la création d’une session de commande via l’API. Configurez les couleurs, les polices, le rayon des bordures, et le texte des boutons pour les modes clair et sombre.
Page de commande thématisée

Design & Theme Customization

Configurez les thèmes visuellement depuis le tableau de bord avec des thèmes préconstruits, typographie, couleurs, et aperçu en direct.
Cette section couvre la configuration du thème de l’API côté serveur en utilisant customization.theme_config. Si vous utilisez le Checkout SDK (commande en overlay ou inline), consultez les sections de personnalisation de thème dans Overlay Checkout ou Inline Checkout qui utilisent des propriétés en camelCase (par ex., bgPrimary au lieu de bg_primary).

Options de configuration de thème

PropriétéDescription
lightConfiguration des couleurs pour le mode clair
darkConfiguration des couleurs pour le mode sombre
font_primary_urlURL pour la police principale
font_secondary_urlURL pour la police secondaire
font_sizeTaille de police : xs, sm, md, lg, xl, 2xl
font_weightPoids de police : normal, medium, bold, extraBold
radiusRayon des bordures pour les éléments de l’interface utilisateur (par ex., 4px, 0.5rem, 8px)
pay_button_textTexte personnalisé pour le bouton de paiement (par ex., “Acheter maintenant”, “Abonnez-vous maintenant”)

Configuration des couleurs (Mode clair/sombre)

Chaque mode (light et dark) prend en charge les propriétés de couleur suivantes :
PropriétéDescription
bg_primaryCouleur principale de l’arrière-plan
bg_secondaryCouleur secondaire de l’arrière-plan
text_primaryCouleur principale du texte
text_secondaryCouleur secondaire du texte
text_placeholderCouleur du texte du placeholder
text_errorCouleur du texte d’erreur
text_successCouleur du texte de succès
border_primaryCouleur principale de la bordure
border_secondaryCouleur secondaire de la bordure
button_primaryCouleur principale de l’arrière-plan du bouton
button_primary_hoverCouleur hover du bouton principal
button_secondaryCouleur de fond secondaire du bouton
button_secondary_hoverCouleur hover du bouton secondaire
button_text_primaryCouleur du texte du bouton principal
button_text_secondaryCouleur du texte du bouton secondaire
input_focus_borderCouleur de la bordure en focus de l’input
Tous les champs de couleur acceptent les formats de couleur CSS standards :
  • Hex : #fff, #ffffff, #ffffffff
  • RGB/RGBA : rgb(255, 255, 255), rgba(255, 255, 255, 0.5)
  • HSL/HSLA : hsl(120, 100%, 50%), hsla(120, 100%, 50%, 0.5)
  • Couleurs nommées : red, blue, transparent

Exemple

const session = await client.checkoutSessions.create({
  product_cart: [
    { product_id: 'prod_abc', quantity: 1 }
  ],
  customization: {
    theme_config: {
      // Custom fonts
      font_primary_url: 'https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap',
      font_size: 'md',
      font_weight: 'medium',
      radius: '8px',
      pay_button_text: 'Complete Purchase',
      
      // Light mode colors
      light: {
        bg_primary: '#ffffff',
        bg_secondary: '#f5f5f5',
        text_primary: '#1a1a1a',
        text_secondary: '#666666',
        button_primary: '#0066ff',
        button_primary_hover: '#0052cc',
        button_text_primary: '#ffffff',
        border_primary: '#e0e0e0'
      },
      
      // Dark mode colors
      dark: {
        bg_primary: '#1a1a1a',
        bg_secondary: '#2d2d2d',
        text_primary: '#ffffff',
        text_secondary: '#a0a0a0',
        button_primary: '#3385ff',
        button_primary_hover: '#4d99ff',
        button_text_primary: '#ffffff',
        border_primary: '#404040'
      }
    }
  },
  return_url: 'https://yoursite.com/return'
});
Vous n’avez pas besoin de spécifier toutes les propriétés de couleur. Toutes les propriétés non spécifiées utiliseront les valeurs de thème par défaut.
Last modified on May 22, 2026