---
title: "Migrate Payment Details"
method: POST
path: "/migrate-payment-details"
---

# Migrate Payment Details

`POST /migrate-payment-details`

## Request

- Base URL: `https://secure.vend-o.com/api/gateway`
- URL: `https://secure.vend-o.com/api/gateway/migrate-payment-details`
- Auth: none required

This endpoint allows you to migrate payment details from other payment provider.

## Request body

- object
  - `api_secret` string, required: This is the credential that Vendo will use to authenticate your request
  - `is_test` integer: Set to 1 if you want to process a test transaction. Check Appendix A for test card details.
  - `merchant_id` integer, required: Your Vendo Merchant ID. This will be provided by your account manager
  - `site_id` integer, required: The Vendo Site ID for which you're processing the transaction.
  - `trace_id` string, required: Trace ID or initial transaction ID generated at the initiation of the subscription.
  - `external_references` object, required: This parameter has the following 4 child elements. All these values are pass-thru values, meaning that we'll post them back to you.
    - `transaction_reference` string, required: REQUIRED. A transaction reference that you can use to identify payments for specific users
    - `program_id` string: This is an extra parameter that you can use to track transactions for specific program IDs if you run multiple programs. This is specific for some e-commerce markets, it's an optional parameter
    - `campaign_id` string: This is an extra parameter that you can use to track transactions for specific Campaign IDs if you run multiple Marketing Campaigns. This is specific for some e-commerce markets, it's an optional parameter
    - `affiliate_id` string: This is an extra parameter that you can use to track transactions for specific Affiliate IDs if you run an affiliation program. This is specific for some e-commerce markets, it's an optional parameter
  - `payment_details` object, required: There are different possible sets of child elements depending on the payment_type: card, [sepa](doc:sepa), pix, crypto or tokenized.
    - `payment_method` string, required: REQUIRED for non-tokenized transactions. Supported values: card|[sepa](doc:sepa)|pix|[oxxo](doc:oxxo)|crypto|[paybybank](doc:pay-by-bank). Not used for Tokenized payments. Automatic rebills are not supported for some payment methods, f.ex. PIX, Pay by Bank, Crypto.
    - `card_number` string, required: REQUIRED for Card payments only. The credit/debit card number. For test transactions please check Appendix A to get the card details that you must use.
    - `expiration_month` string, required: REQUIRED for Card payments only. The expiration month of the card. Example: 09
    - `expiration_year` string, required: REQUIRED for Card payments only. The expiration year of the card. Example: 2025
    - `cvv` string: The CVV number. We accept 3 or 4 characters only. If you pass in the trace_id then you can't specify the CVV.
    - `name_on_card` string, required: REQUIRED for Card payments only. The name that is printed in the credit/debit card
    - `iban` string, required: REQUIRED for Sepa payments only. The International Bank Number.
    - `bic_swift` string: Optional for Sepa payments. The SWIFT Code of the bank. Not required for EU bank accounts.
    - `mandate` object: Optional for Sepa payments. Mandate reference collected on merchant side.
      - `reference` string, required: Unique identifier mandate reference
    - `token` string, required: REQUIRED for tokenized payments only. Tokenized payment details from the previous request.
    - `verification_id` integer: Use verification_id to reference verification of the payment method. Optional
    - `trace_id` string: Optional for Card payments only. This parameter allows you to reference a previous transaction processed through a card scheme (e.g., Visa, MasterCard).
    - `three_ds` object: A set of authentication 3DS parmeters
      - `version` string, required: 3DS version, example: 2.2.0
      - `ds_transactiond_id` string, required: Example: 0902482e-9e4a-5c41-8000-00000e2dce0b
      - `cavv` string, required: cavv, base 64 encoded string. example: jO7WU8G1ZGPhCBEChBQbAigAAAA=
      - `eci` string, required: eci. example: "02"
      - `xid` string, required: xid, base 64 encoded string. example: MjQwNjAzMDQyLTY3YjM1ZmY4YjQ=
      - `enrollment_status` string, required: Example: "Y"
  - `customer_details` object, required: REQUIRED for non-tokenized transactions. This node is not allowed for token transactions. This parameter contains the following 10 child elements. Not all of them are mandatory. This element contains the user's personal details.
    - `first_name` string, required: REQUIRED. The user's first name
    - `last_name` string, required: REQUIRED. The user's last name
    - `language` string, required: REQUIRED. The user's language. You must pass a valid ISO-639-1 string. e.g. en, es, de, nl, pt
    - `address` string: The user's address
    - `city` string: The user's city name
    - `state` string: The user's state or country region. eg. FL, CA. (Value can have up to 3 characters)
    - `country` string, required: REQUIRED. The user's country. You must pass a valid ISO 3166-1 alpha-2 Country Code string e.g. US, ES, DE, GB. For PIX must be BR. For Pay by Bank check the [available countries](doc:pay-by-bank#availability-by-country).
    - `postal_code` string: The user's postal code
    - `email` string, required: REQUIRED. The user's email address
    - `phone` string: The user's phone number
    - `national_identifier` string: REQUIRED for PIX payments only. A customer identifier required in some jurisdictions like personal or tax identifier (e.g. CPF in Brazil). When sending CPF, remove all special characters and only send digits.
  - `request_details` object, required: This parameter contains 2 child elements. Not all of them are mandatory.
    - `ip_address` string, required: REQUIRED. The user's ip address.
    - `browser_user_agent` string: The user agent of the user's browser
  - `subscription_schedule` object: Use this parameter to migrate a subscription with recurring scheduled rebills. Only supported for payment methods that allow recurring payments.
    - `next_rebill_date` string, date: This field specifies the date for the upcoming first rebill after a limited trial period or a subscription extension is applied. The format must be YYYY-MM-DD (e.g., 2024-03-14). The date must be in the future and use the Central European Time (CET) time zone.
    - `rebill_amount` number, float, required: Amount to bill. Currency is original transaction currency. Example: 10.34. Min: 0, Max: 1 000 000
    - `rebill_duration` integer, required: Time between rebills in days. Example: 30 for a monthly subscription. Min. 1 day. Min: 1, Max: 365
    - `reactivate_subscription` boolean: Optional parameter. It can be used to reactivate an expired subscription.
  - `currency` string: REQUIRED for subscription with recurring scheduled rebills. The 3-letter currency code of the amount to be charged. [Currencies](doc:data-types#currency-codes)

## Response `200`

200

- object
  - `status` integer
  - `external_references` object
    - `transaction_reference` string
    - `program_id` string
    - `campaign_id` string
    - `affiliate_id` string
  - `subscription` object
    - `id` integer
    - `datetime` string
  - `payment_details_token` string
  - `request_id` string

## Other responses

- `400`: 400

## Changes

- **2026-11-03** `ab4e06fada96`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/vendoservices/apis/s2s-api/changes/migrate-payment-details/post.md)

---

[API](https://skmtc.dev/vendoservices/apis/s2s-api.md) - [All operations](https://skmtc.dev/vendoservices/apis/s2s-api/llms.txt) - [OpenAPI document](https://skmtc.dev/vendoservices/apis/s2s-api/revisions/ab4e06fada96?raw)
