## Worldwide payment networks

In the Google Pay API, card schemes are configured by including their string identifiers in the
`allowedCardNetworks` array within the `CardParameters` object. Merchants
can select payment credentials returned by Google Pay by passing the supported methods, such as
`PAN_ONLY` or `CRYPTOGRAM_3DS` in the `allowedAuthMethods` array.

The following card schemes are available globally and support these credential types:

| Card scheme | `allowedAuthMethods` ||
| Card scheme | `PAN_ONLY` | `CRYPTOGRAM_3DS` |
|---|---|---|
| American Express | 🟢 | 🟢 |
| Discover | 🟢 | 🔴 |
| JCB | 🟢 | 🔴 |
| Mastercard | 🟢 | 🟢 |
| Visa | 🟢 | 🟢 |

## Local payment networks

Domestic networks can issue payment cards as either mono badge, which is exclusively under the
domestic brand or co-badge, which is partnered with a global scheme. Within Google Wallet and the
Google Pay API, these cards are tokenized and processed based on the networks they explicitly
support, adhering to local regulations and routing preferences. Check with the Payments Service
Providers (PSP) if the domestic network is supported before you configure Google Pay API.

### Co-badge cards

Co-badge cards feature both an international scheme and a domestic network, and allow them to be
routed over multiple payment rails. When provisioned into Google Wallet, they exist as a single
digital card, showing both network logos, and transactions with these cards have the routing
capabilities for both networks.

### Routing preference

On the Google side, co-badge cards can be configured with specific routing behaviors to respect
local regulations and merchant or user choice. The different parameters and configurations
include:

- **User choice**: lets the user select their preferred network from a UI dropdown on the
  payment sheet during checkout.

**Implemented co-badge configurations by domestic network:**

| Card scheme | `allowedAuthMethods` || Routing preference |
| Card scheme | `PAN_ONLY` | `CRYPTOGRAM_3DS` | User choice |
|---|---|---|---|
| **Elo** | 🟢 | 🟢 | 🟢 (combo cards only) |
| **Interac** | 🔴 | 🟢 | 🔴 |

> [!NOTE]
> **Note:** Elo is configured similarly to standard combo card routing where merchants can explicitly supply `ELO` and `ELO_DEBIT` depending on the transaction type.

#### Elo

Google Pay API supports Elo cards in Brazil. It's important to check whether your PSP supports
Elo before you configure the Google Pay API to accept these cards.

Users with Elo combo-cards, with dual-function, which has credit and debit on a single card, have
the option to select between debit or credit in the Google Pay payment sheet.

To accept Elo cards the following are required in the Google Pay API integration when building
the `PaymentDataRequest` object:

1. `transactionInfo.countryCode`

   It must be set to Brazil.

   ```javascript
   "countryCode": "BR"
   ```
2. `allowedCardNetworks`

   It must include `ELO` and `ELO_DEBIT` in the network list alongside
   any other accepted networks.

   > [!WARNING]
   > **Warning:** To enable the debit or credit combo card selector in the Google Pay payment sheet, specify both `ELO` and `ELO_DEBIT` together. `ELO_DEBIT` can't be passed without `ELO`.

   ```json
   "allowedCardNetworks": ["AMEX", "ELECTRON", "ELO", "ELO_DEBIT", "MAESTRO", "MASTERCARD", "VISA"]
         
   ```

   > [!NOTE]
   > **Note:** In Brazil, additional networks, such as `MAESTRO` and `ELECTRON` are supported for the debit rail.

   > [!WARNING]
   > **Warning:** If the PSP doesn't support Elo, don't include `ELO` and `ELO_DEBIT` in `allowedCardNetworks`. Setting it without processor support causes checkout failures during authorization.

3. `allowedAuthMethods`

   It must specify `CRYPTOGRAM_3DS` and `PAN_ONLY` to accept all Elo
   cards, including cards on file and device tokens.

   ```json
   "allowedAuthMethods": ["PAN_ONLY", "CRYPTOGRAM_3DS"]
   ```
4. `transactionInfo.totalPrice`

   The transaction price must be greater than zero, such as 10.50.

#### Interac

Google Pay API supports Interac cards in Canada. It's important to check whether your PSP
supports Interac before you configure the Google Pay API to accept these cards.

To support Interac cards, configure the `PaymentDataRequest` object with the following
parameters:

1. `transactionInfo.countryCode` and `transactionInfo.currencyCode`

   They must be set to Canada.

   ```json
   "countryCode": "CA",
   "currencyCode": "CAD"
       
   ```
2. `allowedCardNetworks`

   It must include `INTERAC` in the network list alongside any other accepted networks.

   ```json
   "allowedCardNetworks": ["AMEX", "DISCOVER", "INTERAC", "MASTERCARD", "VISA"]
         
   ```

   > [!WARNING]
   > **Warning:** If the PSP doesn't support Interac, don't include `INTERAC` in `allowedCardNetworks`. Setting it without processor support causes checkout failures during authorization.

3. `allowedAuthMethods`

   It must specify `CRYPTOGRAM_3DS` to accept payments from users with Interac cards.
   `PAN_ONLY` must be present to accept the rest of the cards listed in
   `allowedCardNetworks`.

   ```json
   "allowedAuthMethods": ["PAN_ONLY", "CRYPTOGRAM_3DS"]
   ```
4. `transactionInfo.totalPrice`

   The transaction price must be greater than zero, such as 10.50.