Migrating from Stripe

In this article, we'll guide you through migrating your payment and customer data from Stripe 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 and prepare your account.
  2. Prepare your data and verify the information is accurate.
  3. Contact Finix and let us know you want to migrate tokens and payment data from Stripe.
  4. Reach out and notify Stripe that you want to migrate your tokens and payment data to Finix.
  5. Finix will work with you and Stripe 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, Finix will follow up with a file that contains the new Finix payment tokens and how they map to Stripe's tokens.

Step 1: Integrate to Finix

To integrate with Finix and set up your account, check out our Developer Quickstart. For platforms and marketplaces, see the Platform Quickstart to get started.

Tokenizing Cards and Bank Accounts

Similar to Stripe, Finix has a Javascript library available to help you collect payment data without letting the sensitive data touch your servers.

  • See Tokenization Forms for details on how to securely accept payments on the web.
  • See iOS or Android Mobile Tokenization articles for details on how to securely accept payments in your mobile app.
  • See 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.

Low Code Products

Finix has a number of low code products to make it easy to transition from Stripe.

  • Checkout Pages: Using our Finix hosted checkout pages you can quickly accept payments from buyers with minimal development work. Checkout pages are a low-code solution that enables you to create a customizable payment page where buyers can easily enter their payment details and submit a payment on both desktop and mobile devices.
  • Payment Links: Payment links create individual links you can send to buyers to complete a transaction. You can share these links on web pages, email, text, or QR codes.
  • Subscriptions: Set up recurring payments using no-code tools, manage changes at scale with bulk updates, customize plans by applying one-off pricing changes, and more.

Stripe Field Mappings

To help you build out your payments integration, here's a short summary of the fields of Finix's API and how they map to Stripe.

See Finix's API reference for a detailed breakdown of our API.

Finix's Payment Instrument stores card and bank data

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.

The Finix Payment Instrument resource corresponds to the following Stripe resources:

Finix's Identity stores data for buyers and sellers

An Identity is required for either processing payments or onboarding sellers.

The Finix Identities resource corresponds to:

  • Stripe's customer: This object represents a customer of your business. Use it to create recurring charges, save payment and contact information, and track payments that belong to the same customer.
  • Stripe's account: This is an object representing a Stripe account. You can retrieve it to see properties on the account like its current requirements or if the account is enabled to make live charges or receive payouts.

Merchant Resources

The Finix Merchant resource corresponds to Stripe's account resource. A Merchant resource is essential for sellers to process payments.

For implementation details, see our guide on onboarding sellers.

Step 2: Prepare Your Data

When migrating from Stripe 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 Stripe.

To prepare your data for migration, start by reviewing the details of your customers in Stripe's dashboard and verify all their information is accurate.

Platforms and Marketplaces

Platforms and marketplaces will also need to export their customer profile data. Use the Connected Accounts page in Stripe's Dashboard or the accounts API resource to export the details of your sellers.

Customer profile data includes the details of your sellers, like the name(s), email address, physical address, and merchant category code (MCC). If you run into any issues migrating your seller data, please reach out to Finix Support Team or your Finix point of contact.

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 or your Finix point of contact.

Step 3: Contact Finix

When you're ready to begin migrating your customer and payment data from Stripe, contact your Finix point of contact or the Finix Support Team to notify us.

Once we receive your migration request, Finix will begin making the needed technical preparations.

Step 4: Notify Stripe

Reach out to Stripe support with your account details and let them know you'd like to migrate all your payment data to Finix.

Be sure to:

  • Explicitly state you're seeking to export payment data with the intention of migrating off of Stripe 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 Stripe.

Reach out to your Finix point of contact or the Finix support team with any information your original processor provided, and we'll work on developing a solution to prepare for your migration.

Step 5: Finix Imports Data

Once you've submitted the migration request to Stripe, Finix will work with Stripe to ingest the necessary payment data and create Payment Instruments and Identities from the PAN data for your buyers.

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_brandBrand of the payment card.Visa
customer_emailCustomer's email address saved with the original payment provider.customer@example.com
error_msgReturned 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 with the updated details.null, Account not found
expiration_monthPayment card's expiration month.12
expiration_yearPayment card's 4-digit expiration year.2026
external_customer_idUnique ID (from your original provider) to reference a specific customer and their saved payment details.cus_abc123def456
external_token_idToken ID from your original provider that identifies the customer’s tokenized payment details.token-abc123
finix_application_idID of the Application linked to the Finix Payment Instrument.APdoThHn4jjYUSxQf76txAgg
finix_identity_idID of the Identity linked to the Finix Payment Instrument.IDcV3F1FzHB5cT9DoGZLJ39Q
finix_instrument_idID of the Finix Payment Instrument created from the tokenized payment data.PI8uU6wfi6hqBoWmzm9L4F2b
import_reference_numberUnique ID generated by Finix to reference a specific import.221014_TESTIMPORTHERE007
instrument_last_fourLast four digits of the payment card.4242
is_expiredIndicates whether the payment card is expired.

When true, it means the card is expired and cannot be used. Use the Account Updater to get updated information.
true, false
successfulIndicates 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 directly using Finix's API.
true, false

CSV Example

The CSV will look like this:

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 is also available to help guide you through the migration process and help make the changes that need to get made to your platform.

API Mappings

Payment Flow

Replace Stripe API calls with equivalent Finix API endpoints:

FeatureStripe API EndpointFinix API Endpoint
Create a customerPOST /v1/customersPOST /identities
Save a cardPOST /v1/payment_methodsPOST /payment_instruments
Attach card to customerPOST /v1/payment_methods + attach to customerPOST /payment_instruments + attach to a buyer Identity
Create a Payment IntentPOST /v1/payment_intentsPOST /authorizations or POST /Transfers
Capture an authorized paymentPOST /v1/payment_intents/{id}/capturePOST /authorizations/{id}/captures
Void an authorizationPOST /v1/payment_intents/{id}/cancelPOST /authorizations/{id}/void
Create a charge (auto-capture)POST /v1/chargesPOST /transfers
Refund a chargePOST /v1/refundsPOST /transfers/{id}/refunds
Create a connected accountPOST /v1/accountsPOST /identities + POST /merchants
WebhooksStripe WebhooksFinix Webhooks

Buyer Data Mappings

Finix Field Identity Stripe Equivalent Customer Description
citycustomer#address.cityOptional, the city listed on the buyer's billing address
countrycustomer#address.countryOptional, the country listed on the buyer's billing address
emailcustomer#emailOptional, the buyer's email address
first_namecustomer#nameOptional, the buyer's first name
last_namecustomer#nameOptional, the buyer's last name
line1customer#address.line1Optional, line one of the buyer's billing address
line2customer#address.line2Optional, line two of the buyer's billing address
phonecustomer#phoneOptional, buyer's phone number
postal_codecustomer#address.postal_codeOptional, the zip or postal code listed on the buyer's billing address
regioncustomer#address.regionOptional, the state listed on the buyer's billing address

Seller Data Mappings

Finix Field IdentityStripe accountDescription
business_addressaccount#company.addressPrimary address for the legal entity
business_nameaccount#company.nameThe seller's legal business name
business_phoneaccount#company.phoneSeller's customer service phone number
business_tax_idaccount#company.tax_idSeller's Tax Identification Number (TIN/EIN)
business_typeaccount#business_typeType of entity: individual, company
default_statement_descriptoraccount#settings.payments.statement_descriptorDescription shown on buyer’s bank/card statement
dobaccount#individual.dobControl owner's date of birth
doing_business_asaccount#business_profile.nameAlternate/DBA name of the business
emailaccount#individual.email or account#emailEmail address of the principal control owner
first_nameaccount#individual.first_nameLegal first name of the control owner
incorporation_dateaccount#company.verification.document.issue_date (approx.)Date of incorporation – Stripe does not expose directly
last_nameaccount#individual.last_nameLegal last name of the control owner
max_transaction_amountMax transaction size in cents
ach_max_transaction_amountMax ACH transaction size
mccaccount#business_profile.mccMerchant Category Code (MCC)
ownership_typeaccount#company.structureOwnership type, e.g., single_member_llc, corporation
personal_addressaccount#individual.addressBilling address of control owner
phoneaccount#individual.phoneControl owner’s phone number
principal_percentage_ownershipaccount#company.owners[].ownership_percentOwnership percentage by control person
tax_idaccount#company.tax_idTIN/SSN of the business (EIN)
titleJob title of the control owner
urlaccount#business_profile.urlPublic website of the business