Sign in
Create account
Sign in
Home
Payments
Business operations
Financial services
Developer tools
Security
All products
Home
Payments
Business operations
Home
Payments
Business operations
Financial services
Developer tools
Support
Overview
How cards work
Sample integration
Accept a payment
More payment scenarios
Set up future payments
Save a card during payment
Place a hold on a card
Finalize payments server-side
3D Secure authentication
Card brand choice
Supported card brands
U.S. and Canadian cards
Testing
Online payments
More payment scenarios
Card brand choice
payments
·
HomePaymentsOnline paymentsMore payment scenarios

Card brand choice

Enable your customers to select their preferred brand in your payment form.

Since June 2016, EU regulation mandates merchants and acquirers to follow consumers’ card brand choice for payments made with co-badged cards (e.g., cards branded with both Visa and Mastercard and a local scheme such as Cartes Bancaires). In practice, this means that merchants must allow customers to select their preferred brand in a payment form. Merchants can set a default brand choice as long as customers have the option to change that choice.

The Payment Intents API enables merchants to follow a customer’s preferred card brand choice if specified. If a preferred choice is not specified by the customer, you instruct Stripe to select one to optimize for authorization rate.

Only Stripe Elements and custom payment forms support card brand choice at this time.

See how it works

Check out the sample on card brand choice or see the code on GitHub.

Identifying the available card networks

When you create a payment method object, Stripe returns a list of networks the card can run on:

{ "id": "pm_1ExKbO2eZvKYlo2CcAu5tDP9", "object": "payment_method", ... "card": { "brand": "visa", ... "wallet": null, "networks": { "available": ["visa", "cartes_bancaires"] } }, "created": 1563398634, "customer": null, "livemode": false, "metadata": {}, "type": "card" }

Confirming the card network using Stripe Elements

Create a component in your payment form to include a way for your customers to specify their preferred card brand. In your existing Stripe Elements integration, pass the card brand choice (e.g., cartes_bancaires) as the payment_method_options.card.network in confirmCardPayment:

client.js
var preferredNetwork = 'cartes_bancaires'; var paymentMethodOptions = {} stripe.createPaymentMethod('card', cardElement, { billing_details: { name: 'Jenny Rosen', }, }).then(function(response) { // Check if cartes_bancaires is an available card network var networks = response.paymentMethod.card.networks; if (networks.available.includes(preferredNetwork)) { paymentMethodOptions = { card: { network: preferredNetwork, }, }, } return stripe.confirmCardPayment( '{PAYMENT_INTENT_CLIENT_SECRET}', { payment_method: response.paymentMethod.id, payment_method_options: paymentMethodOptions, } ); }).then(function(result) { /* handle error/success */ });

Confirming the card network on the server

When you create and confirm a payment intent for that payment method, set payment_method_options.card.network to the card brand your customer selected in your custom payment form (e.g., cartes_bancaires):

You might need to redirect your customer to the 3DS authentication page if the PaymentIntent response has a status of requires_action. See the documentation on card authentication and 3D Secure for more information.

Terminal
curl https://api.stripe.com/v1/payment_intents \ -u
sk_test_4eC39HqLyjWDarjtT1zdp7dc
\ -d "amount"=1099 \ -d "confirm"="true" \ -d "currency"="usd" \ -d "payment_method"="{{PAYMENT_METHOD_ID}}" \ -d "payment_method_options[card][network]"="cartes_bancaires" \ -d "payment_method_types[]"="card" \ -d "return_url"="https://example.com/return_url"

Identifying the network a charge was processed on

The charge object associated with a successful payment intent contains a network field indicating which card network the payment was processed on:

{ "id": "ch_1Ff52K2eZvKYlo2CWe10i0s7", "object": "charge", ... "payment_method_details": { "card": { "brand": "visa", ... "network": "cartes_bancaires", "three_d_secure": null, "wallet": null }, "type": "card" } }

Supported card brands

The following card brand choices are supported:

  • amex
  • cartes_bancaires
  • diners_club
  • discover
  • jcb
  • mastercard
  • visa
  • unionpay

Testing

You can use the following co-badged cards to test your integration:

NumberBrandCVCDate
4000002500001001Cartes Bancaires / VisaAny 3 digitsAny future date
5555552500001001Cartes Bancaires / MastercardAny 3 digitsAny future date
Was this page helpful?
Questions? Contact us.
Developer tutorials on YouTube.
You can unsubscribe at any time. Read our privacy policy.
On this page
Identifying the available card networks
Supported card brands
Testing