Migrating payment methods to Frisbii Pay

Prev Next

Migrating to Frisbii Pay (payment gateway only)

If you're switching to Frisbii Pay as your payment gateway (without using Frisbii Billing), you can securely import existing payment methods such as credit cards, SEPA mandates, Vipps/MobilePay agreements, and PayPal billing agreements. This allows you to initiate MIT (Merchant-Initiated Transactions) via the Frisbii API without requiring your customers to re-enter their details.


Before you start: Route all new charges through Frisbii Pay

Before importing any data, make sure that all new charges and customer registrations are routed through Frisbii Pay. This ensures you only have a fixed batch of legacy payment methods to migrate.

You can handle new signups via:

  • Our official plugins

  • Direct API integrations

Avoid running dual systems during migration. This prevents multiple rounds of import.


Import of payment methods


Credit card import

If your current PSP stores your customers’ saved card details, Frisbii can import those tokens securely to ensure uninterrupted billing during the migration.

⚠️ Only PCI Level 1 certified companies like Frisbii may handle and exchange card data.

Steps for importing credit card payment methods

1. Switch all new transactions to Frisbii
Ensure that all new subscriptions and card registrations are processed via Frisbii. So you only have existing subscriptions left

2. Request export from your current PSP

  • Email your current PSP requesting the export of all stored card data to Frisbii

  • CC support@frisbii.com in the email

  • 🛑 Ask the PSP to retain existing card data until migration is complete. This ensures you can continue charging through the old PSP if anything goes wrong during testing or cutover

3. Frisbii and PSP coordinate the transfer
Frisbii will handle the secure key exchange, encryption, and scheduling with your PSP.

4. Receive the token mapping file
Frisbii will provide a .csv file with the following format:,

The output file contains all the imported cards.
The output file is using semicolon as a delimiter. 
It consists of the following columns:

<id1>;<id2>;<frisbii_temporary_token>
"Id1" is the card identifier from the old PSP 
"Id2" is the second card identifier from the old PSP. 

This column will be omitted if the old PSP only supplies asingle identifier.
"frisbii_temporary_token" is the one-time token referencing an imported card.

Example:
12345677;42441;ct_ca7b393ebb0ab1b59ea075b55adae344
12345671;42442;ct_c6e16fd3f3c01cd1e92137ca0bb5b0e8
12345672;42443;ct_4940286230dbda172c391153034bd6c2
12345673;42444;ct_b38c72778b97986f19fbda396c31c231
12345674;42445;ct_b75e50c5bcd6a41f19f20f36d19367e1
123456715;42446;ct_3563d85177e2389af67e979ba2fbe7b1
123456718;412447;ct_34a4191f637f9b97b7f05cecbb911ec6
123456719;987448;ct_105d4994a19350b7924291e24c11ee5e
  • id1: Primary card reference from the PSP

  • id2: Optional second ID (may be omitted)

  • frisbii_temporary_token: One-time-use card token issued by Frisbii

5. Attach the card using Add Payment Method API

You can either attach the imported card token to an existing customer or create the customer inline in the same request.

Option A: Attach to existing customer

Required fields:

  • source: The one-time-use Frisbii card token
    → Example: "ct_ca7b393ebb0ab1b59ea075b55adae344"

  • customer_handle: The handle of the already created customer
    → Example: "cust_0022"

Request example:

{
  "source": "ct_ca7b393ebb0ab1b59ea075b55adae344",
  "customer_handle": "cust_0022"
}

Option B: Create customer inline

Required fields:

  • source: The Frisbii card token

  • customer: Object with customer data:

    • handle: Unique customer identifier → "customer_001"

    • email: Customer’s email address → "jane.doe@example.com"

    • first_name: First name → "Jane"

    • last_name: Last name → "Doe"

Request example:

{
  "source": "ct_ca7b393ebb0ab1b59ea075b55adae344",
  "customer": {
    "handle": "customer_001",
    "email": "jane.doe@example.com",
    "first_name": "Jane",
    "last_name": "Doe"
  }
}

✅ If successful, you will receive a Frisbii payment method ID (e.g. ca_fcfac2016614418f969fa5697383e47c).
Store this ID and use it as the source when creating subscriptions.

6. Store the returned Frisbii payment method reference in your own system
Store the returned Frisbii payment method reference in your own system, so you're ready to initiate charges using the Create Charge API. (e.g. ca_..., se_..., pp_...)

7. Close your old PSP account (optional)
Once you’ve verified that everything works:

  • ✅ You may ask the PSP to delete old card data and terminate your agreement

  • ⏳ We recommend keeping the account active for a short time to allow for refunds on old transactions


Vipps / MobilePay Recurring

Frisbii supports importing existing Vipps or MobilePay Subscriptions into the VippsMobilePay Recurring system, part of VippsMobilePay’s unified Nordic platform. This allows you to retain customer mandates (also called agreements or payment methods) without requiring re-authorization.

📘 Requires that your VippsMobilePay merchant agreement is set up in Frisbii and properly linked via your Merchant Serial Number (MSN).

Steps for importing VippsMobilePay Recurring payment methods

  1. Get mandate references from your old provider

    • Retrieve a list of recurring agreement IDs (mandates) from your current PSP

    • Contact the PSP if you're unsure how to export these

  2. Create the customer in Frisbii
    You have two options:

    • Option A: Create the customer in advance using:
      POST /v1/customer

    • Option B: Create the customer inline during the import call using the customer object

  3. Import the Vipps/MobilePay mandate

    Example:

    {
      "vipps_agreement_id": "vipps-789123",
      "currency": "NOK",
      "customer": {
        "handle": "cust_001",
        "email": "mail@example.com",
        "first_name": "Olav",
        "last_name": "Nordmann"
      }
    }
    

✅ If successful, you’ll receive a Frisbii payment method reference.

  1. Store the returned Frisbii payment method reference in your own system
    Store the returned Frisbii payment method reference in your own system, so you're ready to initiate charges using the Create Charge API. (e.g. ca_..., se_..., pp_...)

Important considerations

  • MSN binding: You must import under the correct Merchant Serial Number (MSN). If you’re using a new MSN, VippsMobilePay support must move existing mandates to it before import.

  • Partner exclusivity: Only one integration partner can be active. When Frisbii is registered, your previous PSP immediately loses access.

  • MobilePay compatibility: MobilePay subscriptions follow the same flow and endpoint as Vipps.

  • Portal setup: Be sure to select Frisbii as your integration partner in the VippsMobilePay portal.


SEPA Direct Debit

Frisbii allows you to import existing SEPA Direct Debit mandates to continue charging IBANs without reauthorization from the customer.

📘 This flow is for already signed mandates from your old provider. Frisbii auto-generates and stores signed PDFs for new mandates created through our platform.

Steps for importing SEPA mandates

  1. Gather customer and mandate data

    • Collect: creditor_country, debtor_iban, and debtor_name from your existing platform

  2. Create the customer in Frisbii
    You can:

    • Option A: Create the customer in advance using:
      POST /v1/customer

    • Option B: Create the customer inline using the customer object in the import request

  3. Import the SEPA mandate

    Example:

    {
      "creditor_country": "DE",
      "debtor_iban": "DE60680512070012345678",
      "debtor_name": "Anna Schmidt",
      "customer": {
        "handle": "cust_001",
        "email": "anna@example.com",
        "first_name": "Anna",
        "last_name": "Schmidt"
      }
    }
    

✅ If successful, you’ll receive a Frisbii payment method reference.

  1. Store the returned Frisbii payment method reference in your own system
    Store the returned Frisbii payment method reference in your own system, so you're ready to initiate charges using the Create Charge API. (e.g. ca_..., se_..., pp_...)

Important limitations

  • 🛑 Frisbii cannot import original mandate PDFs

  • ✅ You are responsible for securely storing original SEPA mandate documents from previous providers, as they may be required for audit or compliance purposes. For new SEPA mandates created in Frisbii, a digitally signed mandate is automatically generated, stored securely, and can be retrieved at any time via API or through the admin interface.


PayPal (Vault or Billing Agreement)

Frisbii supports importing stored PayPal Vault tokens and Billing Agreements so you can continue charging customers seamlessly.

Steps for importing PayPal payment methods

  1. Collect PayPal token information

    • Identify the token_id (Vault ID or Billing Agreement ID)

    • Determine token_type: VAULT or BILLING_AGREEMENT

  2. Create the customer in Frisbii
    Choose one of the two:

    • Option A: Use POST /v1/customer to pre-create the customer

    • Option B: Include the customer object inline in the import call

  3. Import the PayPal agreement

    Example:

    {
      "token_id": "EC-1ABC234DEF567890G",
      "token_type": "BILLING_AGREEMENT",
      "customer": {
        "handle": "paypal_cust_001",
        "email": "paypal@example.com",
        "first_name": "Maria",
        "last_name": "Anders"
      }
    }
    

✅ If successful, you’ll receive a Frisbii payment method reference.

  1. Store the returned Frisbii payment method reference in your own system
    Store the returned Frisbii payment method reference in your own system, so you're ready to initiate charges using the Create Charge API. (e.g. ca_..., se_..., pp_...)


Charging saved payment methods

After importing payment methods, you can start initiating MIT charges using Frisbii Pay.

Create Charge

  • Endpoint: POST /v1/charge

  • Documentation: https://docs.frisbii.com/reference/createcharge

  • Required fields:

    • source: Frisbii payment method ID

    • customer_handle: Customer identifier

    • handle: Unique order or charge reference

    • amount: Amount in minor units (e.g. 20000 = 200.00)

    • currency: ISO code (e.g. EUR, DKK)

Example:

{
  "source": "ca_f96004cae4308473c92bea0638b5b688",
  "handle": "order-0000213",
  "amount": 20000,
  "currency": "EUR",
  "customer_handle": "cust-0022"
}

Charge result states:

  • settled: Success

  • authorized: Authorized, not captured

  • failed: Card or PSP error

  • pending: Awaiting external confirmation (e.g. Vipps)

ℹ️ Card charges are synchronous. For async methods like Vipps, listen for webhook events.


Conclusion

By following this guide, you can migrate saved payment methods to Frisbii Pay with minimal disruption and no customer re-entry. Once imported, all payment methods are ready for MIT charging using Frisbii’s Create Charge API. Whether you’re migrating from another PSP or consolidating billing flows, Frisbii Pay offers a secure and controlled migration process.

Need help planning or validating your setup? Contact us at support@frisbii.com.