Accéder directement au contenu
Créez un compte
ou
connecter-vous
Logo de la documentation Stripe
/
Demander à l'assistant IA
Créez un compte
Connectez-vous
Démarrer
Paiements
Automatisation des opérations financières
Plateformes et places de marché
Gestion de fonds
Outils de développement
Démarrer
Paiements
Automatisation des opérations financières
Démarrer
Paiements
Automatisation des opérations financières
Plateformes et places de marché
Gestion de fonds
Aperçu
À propos des paiements Stripe
Mettre votre intégration à niveau
Analyses des paiements
Paiements en ligne
PrésentationTrouver votre cas d'usageManaged Payments
Utiliser Payment Links
Créer une page de paiement
Développer une intégration avancée
Développer une intégration dans l'application
Moyens de paiement
Ajouter des moyens de paiement
Gérer les moyens de paiement
Paiement accéléré avec Link
Interfaces de paiement
Payment Links
Checkout
Web Elements
Elements intégrés à l'application
Scénarios de paiement
Tunnels de paiement personnalisés
Acquisition flexible
Orchestration
Paiements par TPE
Terminal
    Présentation
    Accepter les paiements par TPE
    Conception d'intégration
    Choisir votre lecteur
    Concevoir une intégration
    Démarrage rapide
    Exemples d'applications
    Tests
    Configuration de Terminal
    Configurer votre intégration
    Se connecter à un lecteur
    Acceptation d'un paiement
    Encaisser des paiements par carte
    Autres moyens de paiement
    Accepter les paiements hors ligne
    Paiement des commande par courrier/par téléphone
    Spécificités régionales
    Lors du règlement
    Collecter des pourboires
    Collecter et enregistrer des informations de paiement pour une utilisation ultérieure
    Autorisations flexibles
    Après le paiement
    Rembourser des transactions
    Fournir des reçus
    Personnalisez Checkout
    Affichage du panier
    Collecter les données saisies à l'écran
    Collecter les données des lectures de la piste magnétique
    Collecter les données des paiements NFC sans contact
    Applications sur des appareils
    Gérer les lecteurs
    Commander, renvoyer ou remplacer des lecteurs
    Enregistrer des lecteurs
    Gérer les emplacements et les zones
    Configurer des lecteurs
    Chiffrement
    Références
    Documentation de l'API
    Lecteurs mobiles
    Lecteurs intelligents
    Guide de migration du SDK
    Liste de contrôle pour le déploiement
    Fiches produit du lecteur Stripe Terminal
Autres produits Stripe
Financial Connections
Cryptomonnaies
Climate
AccueilPaiementsTerminal

Remarque

Cette page n'est pas encore disponible dans cette langue. Nous faisons tout notre possible pour proposer notre documentation dans davantage de langues et nous vous fournirons la version traduite dès qu'elle sera disponible.

Regional considerations

Learn about regional considerations for integrating Terminal in different countries.

Copier la page

​​For the most part, you’ll be able to use a single Terminal integration in all supported countries. However, due to local payment methods or regulations there are some country-specific requirements. After going through the sample integration, use this guide to learn about country-specific requirements for Terminal.

Remarque

To process Terminal payments, both the Stripe account receiving the funds and the location associated with the reader must be in the same country, accepting local currency only.

Pays

Availability

Refer to the following table to understand which readers and SDK platforms you can use in each country.

PaysAndroid**iOS**JavaScriptPiloté par serveur
États-Unis
Lecteur M2 de Stripe
Bluetooth or USB
Lecteur S700 de Stripe
Smart
BBPOS WisePOS E
Smart
Tap to Pay
Embedded
Lecteur M2 de Stripe
Bluetooth
Lecteur S700 de Stripe
Smart
BBPOS WisePOS E
Smart
Tap to Pay
Embedded
Lecteur S700 de Stripe
Smart
BBPOS WisePOS E
Smart
Lecteur S700 de Stripe
Smart
BBPOS WisePOS E
Smart
Australie
Canada
Italie
Pays-Bas
BBPOS WisePad 3
Bluetooth or USB
Lecteur S700 de Stripe
Smart
BBPOS WisePOS E
Smart
Tap to Pay*
Embedded
BBPOS WisePad 3
Bluetooth
Lecteur S700 de Stripe
Smart
BBPOS WisePOS E
Smart
Tap to Pay
Embedded
Lecteur S700 de Stripe
Smart
BBPOS WisePOS E
Smart
BBPOS WisePOS E
Smart
Irlande
Nouvelle-Zélande
Royaume-Uni
BBPOS WisePad 3
Bluetooth or USB
Lecteur S700 de Stripe
Smart
BBPOS WisePOS E
Smart
Tap to Pay
Embedded
BBPOS WisePad 3
Bluetooth
Lecteur S700 de Stripe
Smart
BBPOS WisePOS E
Smart
Tap to Pay
Embedded
Lecteur S700 de Stripe
Smart
BBPOS WisePOS E
Smart
BBPOS WisePOS E
Smart
Singapour
BBPOS WisePad 3
Bluetooth or USB
Lecteur S700 de Stripe
Smart
BBPOS WisePOS E
Smart
Tap to Pay
Embedded
BBPOS WisePad 3
Bluetooth
Lecteur S700 de Stripe
Smart
BBPOS WisePOS E
Smart
Lecteur S700 de Stripe
Smart
BBPOS WisePOS E
Smart
BBPOS WisePOS E
Smart
France
Allemagne
BBPOS WisePad 3
Bluetooth or USB
Lecteur S700 de Stripe
Smart
Tap to Pay*
Embedded
BBPOS WisePad 3
Bluetooth
Lecteur S700 de Stripe
Smart
Tap to Pay*
Embedded
Lecteur S700 de Stripe
Smart
Belgique
Danemark
Luxembourg
Malaisie
Norvège
Espagne
BBPOS WisePad 3
Bluetooth or USB
Lecteur S700 de Stripe
Smart
BBPOS WisePOS E
Smart
Tap to Pay*
Embedded
BBPOS WisePad 3
Bluetooth
Lecteur S700 de Stripe
Smart
BBPOS WisePOS E
Smart
Lecteur S700 de Stripe
Smart
BBPOS WisePOS E
Smart
BBPOS WisePOS E
Smart
Autriche
République tchèque
Finlande
Pologne+
Portugal
Suède
Suisse
BBPOS WisePad 3
Bluetooth or USB
Lecteur S700 de Stripe
Smart
BBPOS WisePOS E
Smart
Tap to Pay*
Embedded
BBPOS WisePad 3
Bluetooth
Lecteur S700 de Stripe
Smart
BBPOS WisePOS E
Smart
Tap to Pay*
Embedded
Lecteur S700 de Stripe
Smart
BBPOS WisePOS E
Smart
BBPOS WisePOS E
Smart
+Terminal est actuellement disponible en version bêta dans ce pays.
*Cette forme d'intégration Terminal est actuellement en phase bêta.
**La compatibilité de ce SDK mobile s'applique également lorsqu'il est utilisé avec React Native.

Integrate Terminal in Canada

Stripe supports Visa, Mastercard, American Express, Discover, and Interac payments in Canada. All transactions must be made in Canadian dollars (CAD). To accept Terminal charges in Canada, either your platform account or connected account must be in Canada.

Use locations

Create Locations for your business with addresses in Canada and associate your readers to them. This will ensure that they automatically download the configuration needed to properly process charges in Canada. A valid address for a Location in Canada must contain the line1, city, state, postal_code, and country properties.

Command Line
curl
curl https://api.stripe.com/v1/terminal/locations \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -d "display_name"="HQ" \ -d "address[line1]"="3040 Bur Oak Ave" \ -d "address[city]"="Markham" \ -d "address[state]"="ON" \ -d "address[country]"="CA" \ -d "address[postal_code]"="L6B 0R1" \

Reader software version

Verifone P400 readers operating in Canada must use the reader software version 3.0.1.15 or later. Read about Verifone P400 software updates for details.

Similarly, BBPOS WisePad 3 readers must use the reader software version 4.01.00.48_Prod_NA_off_v23_480001 or later. Read about BBPOS WisePad 3 software updates for details.

Translation

Language regulations require that services, including point-of-sale services, be provided in French unless English has been agreed upon by the cardholder and their card issuer. Terminal is built to help you comply with these requirements if they apply to your business.

Default reader language

The Verifone P400 interface displays text in French in addition to English if it is registered to a location with an address in Canada.

The BBPOS WisePOS E and Stripe Reader S700 support changing reader language in the Settings panel. Swipe right across the screen to access the Settings panel, and select your language.

The BBPOS WisePad 3 supports changing reader language directly in the reader interface. After you have registered your reader to a Location with an address in Canada, the reader installs a language pack relevant for your region if one isn’t already in place. To view available language options and to select a language, click the Power / Settings button and scroll down using the arrow keys until you reach the language selection menu. Highlight your desired language and press the green Enter key.

Transaction language

After the cardholder has presented their card, the reader determines the cardholder’s preferred language. Each screen after that point is translated according to the cardholder’s preferences.

Other translations

If you’re required to provide services in or would like to translate text into French in addition to English, ensure that any of your custom reader screens and receipts display the appropriate translations.

Interac payments

Interac is the interbank network that handles routing of debit payments in Canada. Consumer debit cards in Canada are branded with an Interac logo and might also be co-branded with another payment network’s logo. Even if the card is co-branded, however, all Interac debit transactions must be routed through Interac. To maximize card acceptance, you should build Interac support into your integration.

Remarque

Interac isn’t supported while operating offline.

Create a PaymentIntent

To accept Interac transactions you need to create your payments using the interac_present payment method type. Include the card_present payment method type as well if you accept Visa, Mastercard, and American Express payments.

Remarque

Learn more about the in-person PaymentIntent flow.

Client-side

Create a PaymentIntent from your client using one of the following options:

Remarque

Client-side PaymentIntent creation is possible with the iOS, Android, and React Native SDKs. If you’re using the server-driven integration, create a PaymentIntent server-side.

Server-side

API Reference

  • Create a PaymentIntent

The JavaScript SDK and the server-driven integration require you to create the PaymentIntent on your server. For the other client SDKs, you can create the PaymentIntent on your server if the information required to start a payment isn’t readily available in your app.

Command Line
cURL
curl https://api.stripe.com/v1/payment_intents \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d amount=999 \ -d currency=cad \ -d "payment_method_types[]"=card_present \ -d "payment_method_types[]"=interac_present \ -d capture_method=automatic

Collect and process a payment

After you process the payment, the reader determines whether to route the payment across Interac rails based on the profile of the card presented.

In cases where the Interac card is co-branded, the payment_method_details.interac_present.brand field on a PaymentIntent’s returned charge reports the co-brand. The type field on the payment_method for an Interac transaction is always interac_present.

There are further Interac requirements that Stripe handles automatically for you, without additional integration work on your side:

  • Before a card is presented, on-screen prompts are in the default reader language. After the card information has been collected, the localization is based on the language preference specified by the presented card.
  • The reader automatically prompts for PIN in cases where it is required.
  • Interac Flash (contactless) payments are limited to 250 CAD and generally up to three consecutive transactions. Transactions higher than 100 CAD or the fourth contactless transaction in a row require the customer to insert their Interac card and enter their PIN.

Capture and reconcile

Unlike Visa, Mastercard, and American Express transactions, Interac transactions are authorized and automatically captured in a single step. Make sure that your application doesn’t continue to capture the PaymentIntent. If you attempt to capture an interac_present payment, the Stripe API returns an error. Make sure that you prevent unintended and duplicate payments in your integration; if failures or declines occur while processing Interac, you can attempt to re-use the same PaymentIntent from the original transaction to safeguard against double-charging.

Remarque

To match the network’s single-message behavior, as of the 2025-03-31.basil API version interac_present payments requires the capture_method parameter to be set to automatic or automatic_async on the PaymentIntent.

Refund an Interac payment

In-person refunds are mandatory for Interac transactions in Canada. You can’t create refunds in the API or in the Dashboard for these payments. In this flow, the reader prompts the cardholder to present the card used in the original charge. After the card details are read successfully, your application processes the refund. Like online refunds, you can perform partial refunds by passing in an amount less than the transaction value.

The currency and the card used for refund processing must match those of the original charge, otherwise the request fails with an error.

As a fallback, you can offer refunds to different payment methods such as store credit or cash.

To initiate an in-person refund for an Interac payment, call the refund_payment endpoint:

Command Line
cURL
curl https://api.stripe.com/v1/terminal/readers/tmr_xxx/refund_payment \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d payment_intent=pi_xxx \ -d amount=2000

The status of the reader action is in_progress, as shown in the following example, until the customer presents a card on the reader:

{ "id": "tmr_xxx", "object": "terminal.reader", "action": { "type": "refund_payment", "refund_payment": { "payment_intent": "pi_xxx" }, "status": "in_progress", "failure_code": null, "failure_message": null }, … }

If you’re using a simulated reader, you can simulate payment method presentment with the present_payment_method endpoint:

Command Line
cURL
curl https://api.stripe.com/v1/test_helpers/terminal/readers/tmr_xxx/present_payment_method \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d type=interac_present

A successful refund generates a terminal.reader.action_succeeded event. The reader’s action.status value changes to succeeded, and the action.refund_payment has a refund attribute under it.

A failed refund generates a terminal.reader.action_failed event. The reader’s action.status value changes to failed, and the action.failure_code and action.failure_message properties each have a detailed failure explanation under them. The action.refund_payment property won’t have a refund attribute set under it.

We recommend using webhooks to track when the reader action status changes.

Cette page vous a-t-elle été utile ?
OuiNon
Besoin d'aide ? Contactez le service Support.
Rejoignez notre programme d'accès anticipé.
Consultez notre log des modifications.
Des questions ? Contactez l'équipe commerciale.
LLM ? Lire llms.txt.
Propulsé par Markdoc