Skip to content
Create account
or
Sign in
The Stripe Docs logo
/
Ask AI
Create account
Sign in
Get started
Payments
Revenue
Platforms and marketplaces
Money management
Developer resources
Overview
About Stripe payments
Upgrade your integration
Payments analytics
Online payments
OverviewFind your use caseManaged Payments
Use Payment Links
Build a checkout page
Build an advanced integration
Build an in-app integration
Payment methods
Add payment methods
Manage payment methods
Faster checkout with Link
Payment interfaces
Payment Links
Checkout
Web Elements
In-app Elements
Payment scenarios
Handle multiple currencies
Custom payment flows
Flexible acquiring
Orchestration
In-person payments
Terminal
    Overview
    Accept in-person payments
    Integration design
    Select your reader
    Design an integration
    Quickstart
    Example applications
    Testing
    Terminal setup
    Set up your integration
    Connect to a reader
    Accepting a payment
    Collect card payments
    Additional payment methods
    Accept offline payments
    Mail order and telephone order payments
    Regional considerations
    During checkout
    Collect tips
    Collect and save payment details for future use
    Flexible authorizations
    After checkout
    Refund transactions
    Provide receipts
    Customize checkout
    Cart display
    Collect on-screen inputs
    Collect swiped data
    Collect tapped data for NFC instruments
    Apps on devices
    Manage readers
    Order, return, replace readers
    Register readers
    Manage locations and zones
    Configure readers
    Monitor Readers
    Encryption
    References
    API references
    Mobile readers
    Smart readers
    SDK migration guide
    Deployment checklist
    Stripe Terminal reader product sheets
Beyond payments
Incorporate your company
Crypto
Financial Connections
Climate
HomePaymentsTerminal

Regional considerations

Learn about regional considerations for integrating Terminal in different countries.

​​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.

Note

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.

Country

Availability

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

CountryAndroid**iOS**JavaScript
Germany
WisePad 3
Bluetooth or USB
Stripe Reader S700
Smart
Tap to Pay*
Embedded
WisePad 3
Bluetooth
Stripe Reader S700
Smart
Tap to Pay*
Embedded
Stripe Reader S700
Smart
*This Terminal integration shape is currently in beta.
**Compatibility for this mobile SDK also applies when used with React Native.

Integrate Terminal in Germany

Stripe supports Visa, Mastercard, American Express, Discover, and girocard payments in Germany. All transactions must be made in euros (EUR). To accept Terminal charges in Germany, either your platform account or connected account must be in Germany.

girocard payments

girocard is an interbank network that handles routing of debit card payments in Germany. Most consumer debit cards in Germany are branded with a girocard logo and co-badged with Visa or Mastercard (or their sub-brands like V-Pay or Maestro). You can process these cards over either supported network.

Integration requirements

To accept girocard payments, you must use the BBPOS WisePad 3 reader with the following minimum Terminal SDK versions:

  • iOS SDK 2.17.0: Released on 31 January 2023
  • Android SDK 2.17.0: Released on 2 February 2023
  • React Native SDK 0.0.1-beta.12: Released on 1 June 2023

The Stripe Reader S700 and the BBPOS WisePOS E reader don’t support girocard. These devices can continue to process transactions from co-badged cards with Visa and Mastercard.

Routing co-badged debit cards

Co-badged girocard debit cards support both girocard and international card networks. If your integration supports girocard, then when you create a PaymentIntent you can choose whether to process the payment directly through girocard or the co-badged network.

To do so, set the requested_priority on the nested payment_method_options.card_present.routing attribute for this purpose.

RoutingImplementationResult
girocardSet requested_priority on the nested payment_method_options.card_present.routing attribute to domesticFor co-badged girocard cards, the girocard network is prioritized. All other cards will be processed as-is.
International networksSet requested_priority on the nested payment_method_options.card_present.routing attribute to internationalFor co-badged girocard cards, the international network is prioritized. All other cards will be processed as-is.

Stripe Terminal also supports customer card brand choice by default to help you meet applicable requirements. Customers who insert a co-badged girocard card into a supported device can override your priority selection to exercise choice by selecting their preferred network routing option.

wisepad-3

SetupIntents, which are used to collect card details without charging the card, are always routed to the international network. This is because girocard doesn’t support off-session payments initiated by a business.

Refund a girocard payment

You can refund girocard payments through the API or Dashboard. The cardholder isn’t required to present their card again at the point of sale.

The girocard network doesn’t natively support refunds. As a workaround, Stripe sends the refund by SEPA transfer to the customer’s bank account, using the IBAN associated with their girocard.

To check the status of the transfer, inspect the Refund object. Be aware that the refund might fail—for instance, if the customer closes their bank account or the transfer can’t be processed.

Identify the network

To identify which network a payment was processed on, inspect the network value of the Charge object associated with a successful PaymentIntent.

{ "id": "ch_1Ff52K2eZvKYlo2CWe10i0s7", "object": "charge", ... "payment_method_details": { "card_present": { "brand": "visa", ... "network": "girocard" }, "type": "card_present" } }

Use locations

Create Locations for your business with addresses in Germany and associate your readers to them. This will ensure that they automatically download the configuration needed to properly process charges in Germany. A valid address for a Location in Germany must contain the line1, city, 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]"="Jarrestrasse 80" \ -d "address[city]"="Hamburg" \ -d "address[country]"="DE" \ -d "address[postal_code]"="22303" \

Reader software version

BBPOS WisePad 3 readers operating in Germany must use the reader software version 4.01.00.52_DE_v21_511001 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 German 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 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 Germany, 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.

Other translations

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

Strong Customer Authentication

Strong Customer Authentication (SCA) is a European regulatory requirement to reduce fraud and make payments more secure. SCA is or will be required for customer-initiated electronic payments within the European Economic Area (EEA). For more information about this European regulation, you can read Stripe’s PSD2: SCA guide.

Transactions below 50 euros (or the local currency equivalent) are considered low value and may be exempted from SCA. However, banks need to request authentication if the low value exemption has been used five times since the cardholder’s last successful authentication or if the sum of previously exempted payments exceeds 150 euros (or the local currency equivalent).

In Germany, all transactions authenticated with a PIN satisfy the SCA requirements. The card represents the first authentication element of the transaction (possession) and the PIN represents the second (knowledge). Some contactless cards may support PIN validation with a single tap; however, others may require initiating an authenticated Chip and PIN contact transaction to comply with the SCA requirements.

If a contactless transaction isn’t eligible for an SCA exemption, the reader prompts the customer to enter their PIN or insert their card for a chip-and-PIN transaction.

You will see two charges associated with SCA-authenticated transactions. The first will be a soft-declined charge with an error message online_or_offline_pin_required or offline_pin_required, depending on the card’s capabilities. The second will be the authorized or hard-declined charge.

Was this page helpful?
YesNo
Need help? Contact Support.
Join our early access program.
Check out our changelog.
Questions? Contact Sales.
LLM? Read llms.txt.
Powered by Markdoc