# Migrating from WePay Learn how to migrate your data from WePay to Finix. In this article, we'll guide you through migrating your payment and customer data from WePay and importing it to Finix, ensuring a smooth transition that minimizes disruptions to your customers and business operations. ## Migration Overview To migrate your platform's tokenized payment data to Finix, you'll need to: 1. [Integrate with Finix](#step-1-integrate-with-finix) and prepare your account. 2. [Prepare your data](#step-2-prepare-your-data) and verify the information is accurate. 3. [Contact Finix](#step-3-contact-finix) and let us know you want to migrate tokens and payment data from WePay. 4. [Reach out and notify WePay](#step-4-notify-wepay) that you want to migrate your tokens and payment data to Finix. 5. [Finix will work with you and WePay](#step-5-finix-imports-data) to receive the encrypted Primary Account Numbers (PANs) and other payment details. Once received, Finix will work with you to import the tokens and other payment details into your Finix account. 6. [When the import process is complete](#step-6-verify-migrated-data), Finix will follow up with a file that contains the new Finix payment tokens and how they map to WePay's tokens. ## Step 1: Integration Overview See our [Developer Quickstart](/guides/getting-started/developer-quickstart) for details on integrating with Finix and setting up your account. Platforms and marketplaces: See our [Platform Quickstart](/guides/platforms/platform-qsg/) for details on how to get your platform started. ### Accepting payment details Similar to WePay's Tokenization JavaScript Library, Finix has a library available to help you collect payment data without letting the sensitive data touch your servers. For more details, see [Accepting Payment Details](/guides/online-payments/payment-tokenization). - See [Tokenization Forms](/guides/online-payments/payment-tokenization/tokenization-forms) for details on how to securely accept payments on the web. - See [Payment Tokenization](/guides/online-payments/payment-tokenization) for details on how to securely accept payments in your mobile app. - See [Raw Card Data](/guides/online-payments/payment-tokenization/handling-raw-card-data) if you have a Level 1 PCI-compliant card data environment (CDE). Establishing how you'll accept payment details with Finix early is helpful in case you need to request payment details from a buyer or seller again. ### WePay Field Mappings To help you build out your payments integration, here's a detailed breakdown of the fields in WePay's API and how they map to Finix's API. See [Finix's API reference](/api) for a detailed breakdown of our API. #### Payment Methods The Finix `Payment Instrument` resource corresponds to two WePay resources: - [WePay's `credit_card`](https://developer.wepay.com/api/api-calls/credit_card) - [WePay's `payment_bank`](https://developer.wepay.com/api/api-calls/payment_bank) A `Payment Instrument` represents your buyer's or seller's payment method. To implement this in your integration, see our guide on [Create a Payment Instrument](/api/payment-instruments/createpaymentinstrument). #### Identity Resources The Finix `Identities` resource corresponds to [WePay's `legal_entities` resource](https://dev.wepay.com/api/latest/operation/POST_legal_entities/). This resource represents the personal details of your buyers and sellers. An `Identity` is required for processing payments with both buyers and sellers. To implement identity management, refer to our documentation on [Create an Identity](/api/identities/createidentity). #### Merchant Resources The Finix `Merchant` resource corresponds to [WePay's `account` resource](https://dev.wepay.com/api/latest/operation/POST_accounts/). A `Merchant` resource is essential for sellers to process payments. For implementation details, see our guide on [Create a Merchant](/api/merchants/createmerchant). ## Step 2: Prepare Your Data When migrating from WePay to Finix, you should focus on aggregating and exporting your payment data to send to Finix. Payment data is the secured payment details of your customers, also called Primary Account Number data (or PAN data for short). PAN data includes secured credit and debit card details, bank account numbers, expiration dates, CVV, security codes, and other payment details saved for your customers on WePay. To prepare your data for migration, start by reviewing the details of your customers in WePay's dashboard and verify all their information is accurate. ### Platforms and Marketplaces Platforms and marketplaces will also need to export their customer profile data. Customer profile data includes the details of your sellers, like the name(s), email address(es), physical address, and merchant category code (MCC). Migrating this data will help ensure there are no issues migrating sellers. If you have any questions about sellers or what information to export, reach out to the [Finix Support team](/guides/getting-started/support-at-finix/) or your Finix point of contact. ## Step 3: Contact Finix When you're ready to begin migrating your customer and payment data from WePay, contact your Finix point of contact or the [Finix Support Team](mailto:support@finix.com) to notify us. Once we receive your migration request, Finix will begin making the needed technical preparations. ## Step 4: Notify WePay Reach out to [WePay support](https://support.wepay.com/hc/en-us/requests/new) with your account details and let them know you'd like to migrate all your payment data to Finix. You can also submit an export request using WePay's [export form](https://developer.wepay.com/docs/faq/credit-card-migrations#does-wepay-participate-in-credit-card-data-migrations). Be sure to: - Explicitly state you're seeking to export payment data with the intention of migrating off of WePay and over to Finix. - Include your Finix point of contact or Finix support on your request. Including Finix on the request to keep us in the loop will help give our team permission to start working on the migration with WePay. Reach out to your Finix point of contact or the [Finix support team](mailto:support@finix.com) with any information your original processor provided, and we'll work on developing a solution to prepare for your migration. ### Platforms and Marketplaces Use the **Customers** page in WePay's Dashboard or the Customer Profile API resource to export the details of your sellers. - [WePay's dashboard](#wepay-dashboard) - [WePay's `account` API resource](#wepay-account-api-resource) If you run into any issues migrating your seller data, please reach out to [Finix Support Team](mailto:support@finix.com) or your Finix point of contact, and they'll help you migrate customer data into your Finix account. #### WePay dashboard Use the **Customers** page of the WePay dashboard to export your seller's data. - For details on how to export your seller data from WePay's dashboard, reach out to [WePay support](https://support.wepay.com/hc/en-us/requests/new). #### WePay Account API Resource Use the `legal_entities` resource to export your seller's data from WePay's API. More details on the `legal_entities` can be found in WePay's API Reference: [Create a legal entity.](https://dev.wepay.com/api/latest/operation/POST_legal_entities/) ## Step 5: Finix Imports Data Once you've submitted the migration request to WePay, Finix will work with WePay to ingest the necessary payment data and create `Payment Instruments` and `Identities` from the PAN data for your buyers. The original processor will need to use a PGP key provided by Finix to encrypt data before transmitting it to Finix. See [Finix PGP Key](/guides/business/security-and-compliance/pgp-key/) for Finix's PGP key. If requested, Finix's most recent PCI DSS Attestation of Compliance (AoC) [is available](/guides/managing-operations/security-compliance) by request under a signed non-disclosure agreement with Finix. When Finix receives the PAN data from WePay: - We'll begin decrypting the sensitive payment data in a PCI-compliant environment. - Once decrypted, the team will begin working with you to import the sensitive payment data into your Finix account and help you create `Payment Instruments` and `Identity` accounts for your buyers. It can take anywhere from a few days to several weeks for your original processor to transfer your payment data to Finix, so be sure to accommodate this transition time in your migration plan. ## Step 6: Verify Migrated Data When the import is complete, Finix will reach out with a CSV that contains the new Finix payment tokens and how they map to the tokens of the original processor. If there's any reason any data can't be used, we'll outline what's wrong and work with you and the original processor to resolve the issue. The import process maps the original processor's token IDs to new Finix `Payment Instruments`, `Identities`, and custom fields. You can then use the newly created `Payment Instruments` and other data in your Finix integration to begin processing payments and building your integration. ### CSV Output When the import is complete, Finix will reach out with a CSV that contains the new Finix payment tokens and how they map to the tokens of the original processor. The import process maps the originals processor’s token IDs to new Finix token IDs, identities, and custom fields. You can then use the newly created `Payment Instruments` and other data in your Finix integration. #### CSV Fields | Field | Description | Example | | --- | --- | --- | | `card_brand` | Brand of the payment card. | `Visa` | | `customer_email` | Customer's email address saved with the original payment provider. | `customer@example.com` | | `error_msg` | Returned when there’s an issue locating an account. Use the details in `error_msg` to reach out to the cardholder and confirm their payment information. After confirmingonfirming, [create a `Payment Instrument`](/api/payment-instruments/createpaymentinstrument) with the updated details. | `null`, `Account not found` | | `expiration_month` | Payment card's expiration month. | `12` | | `expiration_year` | Payment card's 4-digit expiration year. | `2026` | | `external_customer_id` | Unique ID (from your original provider) to reference a specific customer and their saved payment details. | `cus_abc123def456` | | `external_token_id` | Token ID from your original provider that identifies the customer’s tokenized payment details. | `token-abc123` | | `finix_application_id` | ID of the `Application` linked to the Finix `Payment Instrument`. | `APdoThHn4jjYUSxQf76txAgg` | | `finix_identity_id` | ID of the `Identity` linked to the Finix `Payment Instrument`. | `IDcV3F1FzHB5cT9DoGZLJ39Q` | | `finix_instrument_id` | ID of the Finix `Payment Instrument` created from the tokenized payment data. | `PI8uU6wfi6hqBoWmzm9L4F2b` | | `import_reference_number` | Unique ID generated by Finix to reference a specific import. | `221014_TESTIMPORTHERE007` | | `instrument_last_four` | Last four digits of the payment card. | `4242` | | `is_expired` | Indicates whether the payment card is expired. When `true`, it means the card is expired and cannot be used. Use the [Account Updater](/guides/after-the-payment/account-updater) to get updated information. | `true`, `false` | | `successful` | Indicates if a Finix `Payment Instrument` was created successfully using the tokenized payment data. When `false`, it indicates Finix couldn’t create a `Payment Instrument`. Review the details in `external_customer_id` and try creating a [`Payment Instrument`](/api/payment-instruments/createpaymentinstrument) directly using Finix's API. | `true`, `false` | #### CSV Example The CSV will look like this: ```csv Example Payment Migration CSV import_reference_number,finix_instrument_id,finix_identity_id,finix_application_id,successful,external_customer_id,external_token_id,customer_email,instrument_last_four,card_brand,expiration_month,expiration_year,error_msg,is_expired 221014_TESTIMPORTHERE007,PImch9imuQDLamPY1LCRmpsG,IDouBD8vwBFEjV5HvmyWsw2A,APaPLggMvZ6bYCLhbr65MUZ9,True,cus_abc123def456,expiredTokenID,jenny.rosen@example.com,4242,UNKNOWN,1,2020,,true 221014_TESTIMPORTHERE007,PIm1QR8aF2a3NH8cmPgQ5x2o,IDrHeCSZ4ss4f2HjuKFaGqiM,APaPLggMvZ6bYCLhbr65MUZ9,True,cus_abc123def459,card_edf214abc789,johnny.rosen@example.com,4242,UNKNOWN,1,2024,,false 221014_TESTIMPORTHERE007,PIwi2m5TRh26ZVBXA4DLmSZM,IDrHeCSZ4ss4f2HjuKFaGqiM,APaPLggMvZ6bYCLhbr65MUZ9,True,cus_abc123def459,card_123,johnny.rosen@example.com,4242,UNKNOWN,1,2024,,false 221014_TESTIMPORTHERE007,PI85kuV5ySHF4GUDLC9wden7,IDrHeCSZ4ss4f2HjuKFaGqiM,APaPLggMvZ6bYCLhbr65MUZ9,True,cus_abc123def459,card_456,johnny.rosen@example.com,4242,UNKNOWN,1,2024,,false 221014_TESTIMPORTHERE007,PI6mfsXjJfHK9z89NNmoZWS1,IDrHeCSZ4ss4f2HjuKFaGqiM,APaPLggMvZ6bYCLhbr65MUZ9,True,cus_abc123def459,card_edf214abd789,johnny.rosen@example.com,4242,UNKNOWN,1,2024,,false 221014_TESTIMPORTHERE007,PIrmDHqhYuW1gQXSVV3CxB8H,IDrHeCSZ4ss4f2HjuKFaGqiM,APaPLggMvZ6bYCLhbr65MUZ9,True,cus_abc123def459,card_edf214abc789,johnny.rosen@example.com,4242,UNKNOWN,1,2024,,false 221014_TESTIMPORTHERE007,PI4UNNgggfwqZ4eqpHCZHqat,IDrHeCSZ4ss4f2HjuKFaGqiM,APaPLggMvZ6bYCLhbr65MUZ9,True,cus_abc123def459,card_nodatafound,johnny.rosen@example.com,4242,UNKNOWN,1,2024,,false 221014_TESTIMPORTHERE007,,IDouBD8vwBFEjV5HvmyWsw2A,APaPLggMvZ6bYCLhbr65MUZ9,False,cus_abc123def456,badTokenID,jenny.rosen@example.com,,,1,2024,Not a valid card number,false ``` With the CSV, you can make the necessary changes to get customers started processing payments on Finix. [Finix’s support team](/guides/getting-started/support-at-finix/) is also available to help guide you through the migration process and help make the changes that need to get made to your platform. ## Next Steps ## Appendix ### Buyer Data Mappings | Finix Field | WePay Equivalent | Description | Finix API Ref | | --- | --- | --- | --- | | `city` | `payments#payment_method.credit_card.card_holder.address.city` | Optional, the city listed on the buyer's billing address | [Link](/api/identities/createidentity) | | `country` | `payments#payment_method.credit_card.card_holder.address.country` | Optional, the country listed on the buyer's billing address | [Link](/api/identities/createidentity) | | `email` | `payments#payment_method.credit_card.card_holder.email` | Optional, the buyer's email address | [Link](/api/identities/createidentity) | | `first_name` | `payments#payment_method.credit_card.card_holder.holder_name` | Optional, the buyer's first name | [Link](/api/identities/createidentity) | | `last_name` | `payments#payment_method.credit_card.card_holder.holder_name` | Optional, the buyer's last name | [Link](/api/identities/createidentity) | | `line1` | `payments#payment_method.credit_card.card_holder.address.line1` | Optional, line one of the buyer's billing address | [Link](/api/identities/createidentity) | | `line2` | `payments#payment_method.credit_card.card_holder.address.line2` | Optional, line two of the buyer's billing address | [Link](/api/identities/createidentity) | | `phone` | `payments#payment_method.credit_card.card_holder.phone` | Optional, buyer's phone number | [Link](/api/identities/createidentity) | | `postal_code` | `payments#payment_method.credit_card.card_holder.address.postal_code` | Optional, the zip or postal code listed on the buyer's billing address | [Link](/api/identities/createidentity) | | `region` | `payments#payment_method.credit_card.card_holder.address.region` | Optional, the state listed on the buyer's billing address | [Link](/api/identities/createidentity) | ### Seller Data Mappings | Finix Field | WePay Equivalent | Description | Finix API Ref | | --- | --- | --- | --- | | `business_address` | `legal_entity#address` | Primary address for the legal entity | [Link](/api/identities/createidentity) | | `business_name` | `legal_entity#legal_entity_name` | The seller's legal business name | [Link](/api/identities/createidentity) | | `business_phone` | `legal_entity#phone` | Seller's customer service phone number | [Link](/api/identities/createidentity) | | `business_tax_id` | `legal_entity#entity_country_info.US.employer_identification_number` | Seller's Nine digit Tax Identification Number (TIN) or Employer Identification Number (EIN) | [Link](/api/identities/createidentity) | | `business_type` | — | The entity type of the seller. Use the respective enum | [Link](/api/identities/createidentity) | | `default_statement_descriptor` | `account#statement_description` | A description of the seller that appears on the buyer's bank or card statement | [Link](/api/identities/createidentity) | | `dob` | `legal_entity#date_of_birth` | The control owner's date of birth | [Link](/api/identities/createidentity) | | `doing_business_as` | `account#name` | Alternate names of the business | [Link](/api/identities/createidentity) | | `email` | `legal_entity#email` | The email address of the principal control owner | [Link](/api/identities/createidentity) | | `first_name` | `legal_entity#name.first` | The legal first name of the control owner | [Link](/api/identities/createidentity) | | `incorporation_date` | `legal_entity#year_of_formation` | The date the company was founded and registered | [Link](/api/identities/createidentity) | | `last_name` | `legal_entity#name.last` | The legal last name of the control owner | [Link](/api/identities/createidentity) | | `max_transaction_amount` | — | The maximum amount (in cents) that can be charged for a single transaction | [Link](/api/identities/createidentity) | | `ach_max_transaction_amount` | — | The maximum amount (in cents) that can be charged for a single ACH transaction | [Link](/api/identities/createidentity) | | `mcc` | `account#industry_code.code` | The Merchant Category Code (MCC) that this merchant will be classified under | [Link](/api/identities/createidentity) | | `ownership_type` | `legal_entity#entity_country_info.US.legal_form` | The legal entities ownership type. Use the respective enum | [Link](/api/identities/createidentity) | | `personal_address` | `legal_entities#controller.address` | The billing address of the control owner | [Link](/api/identities/createidentity) | | `phone` | `legal_entities#controller.phone` | The principal control owner's phone number | [Link](/api/identities/createidentity) | | `principal_percentage_ownership` | — | Percentage of the company owned by the principal control owner | [Link](/api/identities/createidentity) | | `tax_id` | `legal_entities#entity_country_info.US.employer_identification_number` | Pass either the TIN, ITIN, or control owner's SSN | [Link](/api/identities/createidentity) | | `title` | `legal_entities#controller.job_title` | The corporate title of the control owner | [Link](/api/identities/createidentity) | | `url` | `legal_entities#primary_url` | The URL of the seller's public website | [Link](/api/identities/createidentity) | ### Credit Card Data Mappings | Finix Field | WePay Equivalent | Description | Finix API Ref | | --- | --- | --- | --- | | `address` | `payments#payment_method.credit_card.card_holder.address` | The address of the card owner | [Link](/api/payment-instruments/createpaymentinstrument) | | `expiration_month` | `payments#payment_method.credit_card.expiration_month` | The expiration month of the card | [Link](/api/payment-instruments/createpaymentinstrument) | | `expiration_year` | `payments#payment_method.credit_card.expiration_year` | The 4-digit expiration year of the card | [Link](/api/payment-instruments/createpaymentinstrument) | | `identity` | — | The ID of the `Identity` that the payment method should be associated with | [Link](/api/payment-instruments/createpaymentinstrument) | | `name` | `payments#payment_method.credit_card.card_holder.holder_name` | The name of the card owner | [Link](/api/payment-instruments/createpaymentinstrument) | | `number` | `payments#payment_method.credit_card.card_number` | The card number (no dashes in between numbers) | [Link](/api/payment-instruments/createpaymentinstrument) | | `security_code` | `payments#payment_method.credit_card.cvv` | The 3-4 digit security code for the card (i.e. CVV code) | [Link](/api/payment-instruments/createpaymentinstrument) | | `type` | — | Type of `Payment Instrument` - for cards use **PAYMENT_CARD** | [Link](/api/payment-instruments/createpaymentinstrument) | ### Bank Account Data Mappings | Finix Field | WePay Equivalent | Description | Finix API Ref | | --- | --- | --- | --- | | `account_number` | `payments#payment_method.payment_bank_us.account_number` | Bank account number | [Link](/api/payment-instruments/createpaymentinstrument) | | `account_type` | `payments#payment_method.payment_bank_us.account_type` | Bank account type | [Link](/api/payment-instruments/createpaymentinstrument) | | `bank_code` | `payments#payment_method.payment_bank_us.routing_number` | Bank account routing number | [Link](/api/payment-instruments/createpaymentinstrument) | | `identity` | — | The ID of the `Identity` that the payment method should be associated with. | [Link](/api/payment-instruments/createpaymentinstrument) | | `name` | `payments#payment_method.payment_bank_us.account_holder.holder_name` | Name of accountholder or cardholder | [Link](/api/payment-instruments/createpaymentinstrument) | | `type` | — | Type of `Payment Instrument` | [Link](/api/payment-instruments/createpaymentinstrument) |