# Create a Staged Digital Wallet Operator payment

SDWO (Staged Digital Wallet Operator) is a payment framework for digital wallets that act as intermediaries between the cardholder and the final recipient. When it comes to settlement, funds from payments made through wallets are sent to the EC Wallet, which then transfers them to its end merchants. Currently, the model is structured for Visa, Mastercard, Elo, and Amex. Brazil Only.

It is important to distinguish between the SDWO wallet model and Pass-Through Digital Wallets. In this case, the wallet serves only as a substitute for the physical card and does not participate in the transaction. Therefore, QR code transactions generated at Getnet POS terminals or via NFC wallets (Samsung Pay, Google Pay, and Apple Pay) do not follow the SDWO model but rather the Pass-Through Digital Wallets model.

<Callout type="warning">

To help Getnet comply with card brand, arrangement, and BACEN (Banco Central do Brasil) rules for identifying SDWO transactions, Getnet customers that qualify as digital wallets must send certain fields, depending on the applicable brand and SDWO use case.

</Callout>

## Transaction models

SDWO supports four transaction models:

| Model | Type | Card Brand | pay_action | Description |
| --- | --- | --- | --- | --- |
| Stored Value (Me2Me) | Cash-in | Mastercard, Visa, Elo, and Amex | `FT` | Adds funds to the same wallet or same-ownership account. |
| Staged Back-to-back (Purchase) | Back-to-back | Mastercard, Visa, Elo, and Amex | `FP` | Purchase via wallet with immediate transfer to a sub-merchant. |
| Peer-to-peer (P2P) | Cash-in | Mastercard, Visa, and Amex | `PP` | Transfer between different users/different ownership and same wallet scheme. |
| Bill Payment Provider | Bill Payment | Visa and Amex | `BP` | Transfer of funds from a card to an account, to use the wallet to make a bill payment. |

### Stored Value (Me2Me)

Adds funds to the same wallet or same ownership account.

* Topping up Wallet Funds using a Card. E.g.: top up wallet balance via card.
* Transfer to another person's balance using card.

#### Required fields

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `soft_descriptor` | String | Yes | **Mastercard**, **Visa**, and **Amex**: wallet name only; **Elo**: Wallet name + `*` + +TRANSFERENCIA (fixed word: TRANSFERENCIA) Maximum 22 characters. |
| `dynamic_mcc` | Integer | Yes | Use `6540` for Cash-in. For toll roads, consider the MCC `4784`. |
| `wallet.type` | String | Yes | Always `55`. |
| `wallet.id` | String | Yes | Always `BRL`. |
| `wallet.merchant_id` | String | Yes (Visa, Mastercard, Elo) | Digital wallet ID registered with the card brand. |
| `wallet.fund_transfer.pay_action` | String | Yes | Always `FT`. |
| `wallet.fund_transfer.receiver.account_number` | String | Yes | Use `9999999999999995` or `#NA`. For road toll wallet transactions, you must provide the user's unique toll wallet account ID. |
| `wallet.fund_transfer.receiver.account_type` | String | Yes | Always `00`. |
| `wallet.fund_transfer.receiver.first_name` | String | Yes (Mastercard); optional otherwise | Recipient first name. |
| `wallet.fund_transfer.receiver.middle_name` | String | No | Recipient middle name abbreviation. |
| `wallet.fund_transfer.receiver.last_name` | String | Yes (Mastercard); optional otherwise | Recipient last name. |
| `wallet.fund_transfer.receiver.addr_street` | String | No | Recipient street address and number. |
| `wallet.fund_transfer.receiver.addr_city` | String | No | Recipient city. |
| `wallet.fund_transfer.receiver.addr_state` | String | No | Recipient state. |
| `wallet.fund_transfer.receiver.addr_country` | String | Yes | ISO 3166-1 alpha-3 country code. Example: `BRA`. |
| `wallet.fund_transfer.receiver.addr_postal_code` | String | No | Recipient postal code. |
| `wallet.fund_transfer.receiver.nationality` | String | No | ISO 3166-1 alpha-3 nationality. |
| `wallet.fund_transfer.receiver.phone` | String | No | Recipient phone number, including country code. |
| `wallet.fund_transfer.receiver.date_of_birth` | String | No | Recipient date of birth. Format `YYYYMMDD`. |
| `wallet.fund_transfer.receiver.id_type` | String | Yes | Document type. Use `03` for CPF or CNPJ. |
| `wallet.fund_transfer.receiver.id_num` | String | Yes | CPF or CNPJ number. |

#### Example

```json
{
  "amount": 1000,
  "currency": "BRL",
  "customer_id": "cust-sender-001",
  "payment": {
    "payment_method": "CREDIT",
    "save_card_data": false,
    "transaction_type": "FULL",
    "number_installments": 1,
    "soft_descriptor": "DigitalWallet",
    "dynamic_mcc": 6540,
    "card": {
      "number_token": "<card_token>",
      "expiration_month": "09",
      "expiration_year": "30",
      "cardholder_name": "John Smith",
      "security_code": "517",
      "brand": "Mastercard"
    },
    "wallet": {
      "type": "55",
      "id": "BRL",
      "merchant_id": "327",
      "fund_transfer": {
        "pay_action": "FT",
        "receiver": {
          "account_number": "9999999999999995",
          "account_type": "00",
          "first_name": "Jane",
          "middle_name": "T",
          "last_name": "Doe",
          "addr_street": "1 Main ST",
          "addr_city": "SAO PAULO",
          "addr_state": "SP",
          "addr_country": "BRA",
          "addr_postal_code": "01408000",
          "nationality": "BRA",
          "phone": "5511977778888",
          "date_of_birth": "19901230",
          "id_type": "03",
          "id_num": "12345678901"
        }
      }
    }
  }
}
```

### Back-to-back (Purchase)

Purchase via wallet with immediate transfer to a sub-merchant.

* Payment of printed QR Code / wallet owner using card. Ex.: QR Code of the digital wallet printed at the counter and paid by card.
* Online payment through the logged-in area of ​​the wallet using a card.

#### Required fields

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `soft_descriptor` | String | Yes | Wallet name + `*` + sub-merchant name. Maximum 22 characters. |
| `dynamic_mcc` | Integer | Yes | MCC for the sub-merchant's activity. |
| `wallet.type` | String | Yes | Always `55`. |
| `wallet.id` | String | Yes | Always `BRL`. |
| `wallet.merchant_id` | String | Yes (Visa, Mastercard, Elo) | Digital wallet ID registered with the card brand. |
| `wallet.fund_transfer.pay_action` | String | Yes | Always `FP`. |
| `sub_merchant.business_name` | String | Yes (SDWO) | Sub-merchant name. Optional in the base API schema, required for this model. |
| `sub_merchant.foreign_type` | String | No | Origin of sub-merchants. `F` = all international; `P` = mixed; `D` = all domestic. |
| `sub_merchant.identification_code` | String | Yes | Unique sub-merchant identifier. Maximum 15 characters for Visa and Mastercard. |
| `sub_merchant.document_type` | String | Yes | Sub-merchant legal document type. One of `CPF`, `CNPJ`, `PASSPORT_BR`, `DNI`, `CUIL`, `CUIT`, `PASSPORT_AR`, `RUT`, `CI`, `CURP`, or `RFC`. |
| `sub_merchant.document_number` | String | Yes | Sub-merchant legal document number, matching `document_type`. Minimum 5 and maximum 25 characters. |
| `sub_merchant.address` | String | Yes | Sub-merchant street address. Maximum 60 characters. |
| `sub_merchant.city` | String | Yes | Sub-merchant city. Maximum 40 characters. |
| `sub_merchant.state` | String | Yes | Sub-merchant state. Maximum 3 characters. |
| `sub_merchant.postal_code` | String | Yes (SDWO) | Sub-merchant postal code. Optional in the base API schema, required for this model. |

> **Payment facilitators**: The `sub_merchant` block is the same object described in [Payment Facilitators](/en/global-api/reference-global/payment-facilitators). See that guide for the full field reference and the country and card-brand requirements.

#### Example

```json
{
  "amount": 5000,
  "currency": "BRL",
  "customer_id": "cust-sender-001",
  "payment": {
    "payment_method": "CREDIT",
    "save_card_data": false,
    "transaction_type": "FULL",
    "number_installments": 1,
    "soft_descriptor": "Wallet*StoreXYZ",
    "dynamic_mcc": 5411,
    "card": {
      "number_token": "<card_token>",
      "expiration_month": "09",
      "expiration_year": "30",
      "cardholder_name": "John Smith",
      "security_code": "517",
      "brand": "Mastercard"
    },
    "wallet": {
      "type": "55",
      "id": "BRL",
      "merchant_id": "327",
      "fund_transfer": {
        "pay_action": "FP"
      }
    }
  },
  "sub_merchant": {
    "business_name": "Store XYZ",
    "foreign_type": "D",
    "identification_code": "9058345",
    "document_type": "CNPJ",
    "document_number": "12345678000195",
    "address": "Rua das Flores 200",
    "city": "São Paulo",
    "state": "SP",
    "postal_code": "01310100"
  }
}
```

### Peer-to-peer (P2P)

Deposit into the account, followed by a transfer of funds to another account held by a different account holder within the same wallet scheme.

#### Required fields

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `soft_descriptor` | String | Yes | **Mastercard**, **Visa**, and **Amex**: wallet name only; **Elo**: Wallet name + `*` + receiver name. Maximum 22 characters. |
| `dynamic_mcc` | Integer | Yes | Use `6540` for P2P; for **Amex**, use `6538`. For toll roads, consider the MCC `4784`. |
| `wallet.type` | String | Yes | Always `55`. |
| `wallet.id` | String | Yes | Always `BRL`. |
| `wallet.merchant_id` | String | Yes (Visa, Mastercard, Elo) | Digital wallet ID registered with the card brand. |
| `wallet.fund_transfer.pay_action` | String | Yes | Always `PP`. |
| `wallet.fund_transfer.receiver.account_number` | String | Yes (Mastercard); optional otherwise | Use `9999999999999995` or `#NA`. For road toll wallet transactions, you must provide the user's unique toll wallet account ID. |
| `wallet.fund_transfer.receiver.account_type` | String | Yes | Always `00`. |
| `wallet.fund_transfer.receiver.first_name` | String | Yes (Mastercard); optional otherwise | Recipient first name. |
| `wallet.fund_transfer.receiver.middle_name` | String | No | Recipient middle name abbreviation. |
| `wallet.fund_transfer.receiver.last_name` | String | Yes (Mastercard); optional otherwise | Recipient last name. |
| `wallet.fund_transfer.receiver.addr_street` | String | No | Recipient street address and number. |
| `wallet.fund_transfer.receiver.addr_city` | String | No | Recipient city. |
| `wallet.fund_transfer.receiver.addr_state` | String | No | Recipient state. |
| `wallet.fund_transfer.receiver.addr_country` | String | Yes | ISO 3166-1 alpha-3 country code. Example: `BRA`. |
| `wallet.fund_transfer.receiver.addr_postal_code` | String | No | Recipient postal code. |
| `wallet.fund_transfer.receiver.nationality` | String | No | ISO 3166-1 alpha-3 nationality. |
| `wallet.fund_transfer.receiver.phone` | String | No | Recipient phone number, including country code. |
| `wallet.fund_transfer.receiver.date_of_birth` | String | No | Recipient date of birth. Format `YYYYMMDD`. |
| `wallet.fund_transfer.receiver.id_type` | String | Yes | Document type. Use `03` for CPF or CNPJ. |
| `wallet.fund_transfer.receiver.id_num` | String | Yes | Recipient CPF or CNPJ number. |

#### Example

```json
{
  "amount": 2000,
  "currency": "BRL",
  "customer_id": "cust-sender-001",
  "payment": {
    "payment_method": "CREDIT",
    "save_card_data": false,
    "transaction_type": "FULL",
    "number_installments": 1,
    "soft_descriptor": "DigitalWallet",
    "dynamic_mcc": 6540,
    "card": {
      "number_token": "<card_token>",
      "expiration_month": "09",
      "expiration_year": "30",
      "cardholder_name": "John Smith",
      "security_code": "517",
      "brand": "Mastercard"
    },
    "wallet": {
      "type": "55",
      "id": "BRL",
      "merchant_id": "327",
      "fund_transfer": {
        "pay_action": "PP",
        "receiver": {
          "account_number": "0001234567890",
          "account_type": "00",
          "first_name": "Jane",
          "middle_name": "T",
          "last_name": "Doe",
          "addr_street": "1 Main ST",
          "addr_city": "SAO PAULO",
          "addr_state": "SP",
          "addr_country": "BRA",
          "addr_postal_code": "01408000",
          "nationality": "BRA",
          "phone": "5511977778888",
          "date_of_birth": "19901230",
          "id_type": "03",
          "id_num": "12345678901"
        }
      }
    }
  }
}
```

### Bill Payment Provider

Transferring funds from a card to an account in order to use the wallet to pay a bill.

#### Required fields

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `soft_descriptor` | String | Yes | Wallet name only. Maximum 22 characters. |
| `dynamic_mcc` | Integer | Yes | **Visa**: as listed below; **Amex**: MCC of the bill beneficiary. |
| `wallet.type` | String | Yes | Always `55`. |
| `wallet.id` | String | Yes | Always `BRL`. |
| `wallet.merchant_id` | String | Yes (Visa) | Digital wallet ID registered with the card brand. |
| `wallet.fund_transfer.pay_action` | String | Yes | Always `BP`. |
| `wallet.fund_transfer.receiver.first_name` | String | Yes (Amex) | For a legal entity (company), the full registered company name must be provided. For an individual, provide the name of the person who is the bill issuer (beneficiary). |
| `wallet.fund_transfer.receiver.middle_name` | String | No | For a legal entity (company), the full registered company name must be provided. For an individual, provide the name of the person who is the bill issuer (beneficiary). |
| `wallet.fund_transfer.receiver.last_name` | String | Yes (Amex) | For a legal entity (company), the full registered company name must be provided. For an individual, provide the name of the person who is the bill issuer (beneficiary). |
| `wallet.fund_transfer.receiver.addr_street` | String | Yes (Amex) | Address of the bill issuer (beneficiary). |
| `wallet.fund_transfer.receiver.addr_city` | String | Yes (Amex) | City of the bill issuer (beneficiary). |
| `wallet.fund_transfer.receiver.addr_state` | String | Yes (Amex) | State of the bill issuer (beneficiary). |
| `wallet.fund_transfer.receiver.addr_country` | String | Yes (Amex) | ISO 3166-1 alpha-3 country code. Example: `BRA`. |
| `wallet.fund_transfer.receiver.id_type` | String | Yes (Amex) | Document type. Use `03` for CPF or CNPJ. |
| `wallet.fund_transfer.receiver.id_num` | String | Yes (Amex) | CPF or CNPJ of the bill issuer (beneficiary). |

**Visa Bill Payment**: Visa requires a specific MCC for each bill payment. Set `dynamic_mcc` to the value that matches the biller's category from the list below.

| MCC | Description |
|---|---|
| 4814 | Telecommunication Services, including Local and Long-Distance Calls, Credit Card Calls, Calls Through Use of Magnetic-Stripe-Reading Telephones, and Fax Services |
| 4899 | Cable, Satellite and Other Pay Television / Radio / Streaming Services |
| 4900 | Utilities – Electric, Gas, Water, and Sanitary |
| 6012 | Financial Institutions – Merchandise, Services, and Debt Repayment |
| 6051 | Non-Financial Institutions – Foreign Currency, Liquid and Cryptocurrency Assets (for example: Cryptocurrency), Money Orders (Not Money Transfer), Account Funding (not Stored Value Load), Travelers Cheques, and Debt Repayment |
| 6300 | Insurance Sales, Underwriting, and Premiums |
| 6513 | Real Estate Agents and Managers |
| 8011 | Doctors and Physicians (Not Elsewhere Classified) |
| 8050 | Nursing, Home Healthcare and Personal Care Facilities |
| 8062 | Hospitals |
| 8099 | Medical Services and Health Practitioners (Not Elsewhere Classified) |
| 8111 | Legal Services and Attorneys |
| 8211 | Elementary and Secondary Schools |
| 8220 | Colleges, Universities, Professional Schools, and Junior Colleges |
| 8241 | Correspondence Schools |
| 8244 | Business and Secretarial Schools |
| 8249 | Vocational and Trade Schools |
| 8299 | Schools and Educational Services (Not Elsewhere Classified) |
| 8351 | Child Care Services |
| 9311 | Tax Payments |

#### Example

**Amex example**

```json
{
  "amount": 1500,
  "currency": "BRL",
  "customer_id": "cust-sender-001",
  "payment": {
    "payment_method": "CREDIT",
    "save_card_data": false,
    "transaction_type": "FULL",
    "number_installments": 1,
    "soft_descriptor": "DigitalWallet",
    "dynamic_mcc": 4900,
    "card": {
      "number_token": "<card_token>",
      "expiration_month": "09",
      "expiration_year": "30",
      "cardholder_name": "John Smith",
      "security_code": "1234",
      "brand": "Amex"
    },
    "wallet": {
      "type": "55",
      "id": "BRL",
      "fund_transfer": {
        "pay_action": "BP",
        "receiver": {
          "first_name": "Jane",
          "last_name": "Doe",
          "addr_street": "1 Main ST",
          "addr_city": "SAO PAULO",
          "addr_state": "SP",
          "addr_country": "BRA",
          "id_type": "03",
          "id_num": "12345678901"
        }
      }
    }
  }
}
```

**Visa example**

```json
{
  "amount": 1500,
  "currency": "BRL",
  "customer_id": "cust-sender-001",
  "payment": {
    "payment_method": "CREDIT",
    "save_card_data": false,
    "transaction_type": "FULL",
    "number_installments": 1,
    "soft_descriptor": "DigitalWallet",
    "dynamic_mcc": 6300,
    "card": {
      "number_token": "<card_token>",
      "expiration_month": "09",
      "expiration_year": "30",
      "cardholder_name": "John Smith",
      "security_code": "517",
      "brand": "Visa"
    },
    "wallet": {
      "type": "55",
      "id": "BRL",
      "merchant_id": "327",
      "fund_transfer": {
        "pay_action": "BP"
      }
    }
  }
}
```

## Request fields

### wallet object

Set `wallet.type` to `55` and `wallet.id` to `BRL` for all SDWO transactions in Brazil.

| Brand | Field | Type | Max length | Required | Description |
| --- | --- | --- | --- | --- | --- |
| All | `wallet.type` | String | 2 | Yes | Type of wallet. Use `55` for Local Brazil Wallet (SDWO). |
| All | `wallet.id` | String | 5 | Yes | Wallet identifier. Always `BRL` for SDWO transactions in Brazil. |
| Visa / Mastercard / Elo | `wallet.merchant_id` | String | 12 | Yes | Digital Wallet ID registered with the card network. |
| Amex | `wallet.merchant_id` | String | 12 | No | Not applicable. |

### fund_transfer object

| Brand | Field | Type | Required | Description |
| --- | --- | --- | --- | --- |
| All | `fund_transfer.pay_action` | String | Yes | Transaction type / financing type. |
| All | `fund_transfer.receiver` | Object | Conditional | Required for Cash-in and Bill Payments Provider. |

### receiver object

The `receiver` object identifies the recipient of the transfer.

| Field | Type | Max length | Description |
| --- | --- | --- | --- |
| `account_number` | String | 20 | Account number. Use `#NA` or `9999999999999995`. |
| `account_type` | String | 2 | Always `00`. |
| `first_name` | String | 35 | Recipient first name. |
| `middle_name` | String | 1 | Recipient middle name abbreviation. |
| `last_name` | String | 35 | Recipient last name. |
| `addr_street` | String | 50 | Street address and number. |
| `addr_city` | String | 25 | City. |
| `addr_state` | String | 3 | State. |
| `addr_country` | String | 3 | ISO 3166-1 alpha-3 country code. Example: `BRA`. |
| `addr_postal_code` | String | 10 | Postal code. |
| `nationality` | String | 3 | ISO 3166-1 alpha-3 nationality. |
| `phone` | String | 20 | Phone number including country code. |
| `date_of_birth` | String | 8 | Format YYYYMMDD. |
| `id_type` | String | 2 | Document type. Use `03` for CPF or CNPJ. |
| `id_num` | String | 25 | Document number (CPF or CNPJ). |

### sub_merchant object

Use this block for Back-to-back (Purchase) transactions. For the full field reference, including the optional `acceptor` contact fields, see [Payment Facilitators](/en/global-api/reference-global/payment-facilitators).

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `business_name` | String | Yes (SDWO) | Sub-merchant name. Maximum 80 characters. |
| `foreign_type` | String | No | Origin of sub-merchants. `F` = all international; `P` = mixed; `D` = all domestic. |
| `identification_code` | String | Yes | Unique sub-merchant identifier. Maximum 15 characters for Visa and Mastercard. |
| `document_type` | String | Yes | Sub-merchant legal document type. One of `CPF`, `CNPJ`, `PASSPORT_BR`, `DNI`, `CUIL`, `CUIT`, `PASSPORT_AR`, `RUT`, `CI`, `CURP`, or `RFC`. Brazilian sub-merchants use `CPF` or `CNPJ`. |
| `document_number` | String | Yes | Sub-merchant legal document number, matching `document_type`. Minimum 5 and maximum 25 characters. |
| `address` | String | Yes | Street address. Maximum 60 characters. |
| `city` | String | Yes | City. Maximum 40 characters. |
| `state` | String | Yes | State. Maximum 3 characters. |
| `postal_code` | String | Yes (SDWO) | Postal code. Maximum 15 characters. |

### pay_action

| Value | Use case |
| --- | --- |
| `FT` | Funding Transfer: Me2Me transactions. |
| `FP` | Funding and Purchase: Back-to-back transactions. |
| `PP` | Peer-to-Peer: transfer to another user / other ownership. |
| `BP` | Bill Payment Provider. |

### account_type

| Value | Description |
| --- | --- |
| `00` | Other: **Always use `00`**. Currently, the only allowed value |
| `01` | RTN + Bank Account |
| `02` | IBAN |
| `03` | Card Account |
| `04` | Email |
| `05` | Phone Number |
| `06` | Bank Account Number + BIC |
| `07` | Wallet ID |
| `08` | Social Network ID |

### id_type

| Value | Description|
| --- | --- |
| `00` | Passport |
| `01` | National Identification Card |
| `02` | Driver’s License |
| `03` | Government-issued. Use for CPF or CNPJ |
| `04` | Other |

### dynamic_mcc

The `dynamic_mcc` field allows the merchant to use a specific Merchant Category Code for each transaction, according to the product being sold, or according to the merchant associated with the sale in the case of sub-acquirers, correctly identifying the business activity to the transaction.

Since this information is used for classification (which influences approval rate) and transaction fee assessment by the card networks, it is extremely important that it is accurate. The MCC is also highly important for fraud prevention controls and the analysis of purchasing behavior. Card brands, arrangements, and BACEN (Banco Central do Brasil) require it to identify Staged Digital Wallet Operator (SDWO) transactions.

| Attribute | Type | Required | Description |
| --- | --- | --- | --- |
| `dynamic_mcc` | Integer | Yes | MCC that overrides the merchant's registered MCC for the transaction. |

> If an invalid Dynamic MCC is provided, it will be replaced with the MCC registered in the merchant's profile and used for the transaction authorization request.

### soft_descriptor

`soft_descriptor` is a field in the payment object that appears on the cardholder's statement. See [Soft descriptor](/en/global-api/reference-global/soft-descriptor) for the `soft_descriptor` format.

## Brand-specific rules

### wallet.merchant_id format

| Brand | ID type | Length |
| --- | --- | --- |
| Visa | MVV (Merchant Value Verification) | 6 characters |
| Mastercard | WID (Wallet ID) | 3 characters |
| Elo | WID (Wallet ID) | 11 characters |

In addition to sending these fields, digital wallets that operate with Visa, Mastercard, and Elo must contact these brands to register and generate their identification number (MVV for Visa, and Wallet ID for Mastercard and Elo), and then submit this information in the requested field.

The role of digital wallets that fall under the SDWO arrangement is to send all requested data to Getnet. Missing fields or values, or incorrect formatting, can result in a declined transaction or a penalty from the card brands.

<Callout type="warning">

This section contains the specific data required for wallet payments. Submit this data together with the rest of the payment data, as described in [Payments - Global API | Portal API Getnet Docs](/en/global-api/sep-api/payment-guides-api/card-payments/single-step-payment) and [Payments - Global API | Portal API Getnet Docs](/en/global-api/sep-api/payment-guides-api/card-payments/pre-auth-payment).

</Callout>

## Next steps

- [Google Pay](/en/global-api/sep-api/payment-guides-api/apms/google-pay): Full request and response examples for SDWO and SDWO with 3DS transactions.
- [Create a Single-Step Payment](/en/global-api/sep-api/payment-guides-api/card-payments/single-step-payment): Standard payment flow that the `wallet` object extends.
- [Create a 3DS Authenticated Payment](/en/global-api/sep-api/payment-guides-api/card-payments/3ds-guide): Additional 3DS fields required alongside the SDWO `wallet` object.