> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://ixopay.ferndocs.com/user-manual/manual/tokenization/customer-profiles/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://ixopay.ferndocs.com/_mcp/server. # Customer Profiles > **Full version: not available for Starter and Growth clients** > > If you want to get access to all IXOPAY platform features you need to upgrade your plan. Please contact our Support Team in the [IXOPAY Customer Experience Portal](https://ixopay.my.site.com/support) for more information. Customer Profiles allow you to store and organize customer data and related payment instruments to create a smooth shopping experience. You access Customer Profiles through either the platform or using the [Customer Profile API](https://documentation.ixopay.com/api/customer-profiles/customer-profiles-api) directly. ## Customer Profile Containers Customer Profiles are organized in so called **Customer Profile Containers**. Depending on your business model, contractual / legal setup or other requirements, it might make sense to create several containers to separate and categorize your customers. To create and edit Customer Profile Containers: 1. Navigate to the **Tokenization > Customer Profiles** section. 2. Select the **(Sub-)Tenant** you want to create or edit a Customer Profile Container for. 3. Click **+ New Container**. 4. Enter a **Container Name**. 5. Enable the option **Shared with Subtenants** if you want to share Customer Profiles among different Sub-Tenants (see New Container). 6. By default, Customer Profile Containers are enabled. Enable the option **Disabled** to disable Customer Profile Containers. 7. Click **+ Create**. The Container will appear in the Customer Profile Container Overview and can be edited at any time by clicking **edit**. You can also access the Customer Profiles stored in the Container by clicking **show** (see Customer Profiles). ![Customer Profile Container](https://documentation.ixopay.com/manual/assets/ideal-img/customer-profile-container.cf62871.1280.png)Customer Profile Container![New Container](https://documentation.ixopay.com/manual/assets/ideal-img/new-container.0d1430f.942.png)New Container![Customer Profile Container Overview](https://documentation.ixopay.com/manual/assets/ideal-img/customer-profile-container-overview.3e92991.1280.png)Customer Profile Container Overview ## Assign Customer Profile Container In order to store customer profiles in a container, you need to assign the Customer Profile Container to a Connector. Any successful Register Transaction or [Debit](https://documentation.ixopay.com/api/transaction/debit) / [Preauthorize](https://documentation.ixopay.com/api/transaction/preauthorize) Transaction with the `withRegister` flag set to true processed by this Connector will automatically add the customer data and used payment instrument for subsequent charges as a Customer Profile in this container if a `customerIdentification` is provided (see also [Creating a customer profile](https://documentation.ixopay.com/docs/reference/features/customer-profiles#creating-a-customer-profile)). You can assign a Customer Profile Container either in the Connector Base Data (see Connector Details Overview) or using [Global Settings](https://documentation.ixopay.com/manual/docs/connector/edit/global-connector-settings). ![Connector Details Overview](https://documentation.ixopay.com/manual/assets/ideal-img/connector-details-overview.0f37c39.1280.png)Connector Details Overview![Connector Base Data](https://documentation.ixopay.com/manual/assets/ideal-img/connector-base-data.e6d7f59.1120.png)Connector Base Data > **Note** > > If your setup uses [Multi-Method Connectors](https://documentation.ixopay.com/manual/docs/connector/multi-method-connector) make sure you also assign the Customer Profile Container there. ## Viewing Customer Profiles To access the individual profiles stored in a container, navigate to the Customer Profile Container Overview and click **Show** for the individual container. You will be presented with an overview of all Customer Profiles (Profile List) in this container including options to filter by **Profile Data** or **Customer Data**. Click **Show** for the individual profile to see more details (stored payment instruments, transaction history, customer data etc.). ![Customer Profile Container Overview](https://documentation.ixopay.com/manual/assets/ideal-img/customer-profile-container-overview.3e92991.1280.png)Customer Profile Container Overview![Overview of all Customer Profiles](https://documentation.ixopay.com/manual/assets/ideal-img/overview-of-all-customer-profiles.b541e0a.1280.png)Overview of all Customer Profiles ## Customer Profile Details Each Customer Profile contains different tabs containing details about * **Profile Data** * **Payment Instruments** * **Profile Transactions** There are also Action Buttons used to navigate back to the **Profile List, Edit Profile** (Data) or **Delete Profile.** ### Profile Data This tab contains base data about the Profile such as Customer data (e.g. personal data, billing data), the **Connector** used to create the Customer Profile, **Customer Profile GUID** , and **Customer Identification** , as well as the **Preferred method** (see also Payment Instruments). The section **Extra Data** can be used to store any additional data. ![Customer Profile](https://documentation.ixopay.com/manual/assets/ideal-img/customer-profile.e124e39.1280.png)Customer Profile![Edit Customer Profile](https://documentation.ixopay.com/manual/assets/ideal-img/edit-customer-profile.8abab3e.1280.png)Edit Customer Profile![Delete Customer Profile](https://documentation.ixopay.com/manual/assets/ideal-img/delete-customer-profile.5c25091.986.png)Delete Customer Profile > **Info** > > To add additional data to the customer profile, either the Customer Profile GUID or Customer Identification must be provided. ### Payment Instruments This tab contains all payment instruments stored by the customer, categorized into one of the following categories: * **Credit Cards (including ApplePay & GooglePay)** * **IBAN** * **Others** — any payment instrument not falling into a previous category There are also Action Buttons for each payment instrument (see Customer Payment Instruments): * **Set Preferred** — each customer can have **one** preferred payment instrument which will be marked as preferred for usage later on (e.g. to design [hosted payment page](https://documentation.ixopay.com/manual/docs/connector/multi-method-connector/payment-selection-page) for Multi-Method Connectors). * **Detach** — to detach the payment instrument from the Customer Profile (payment instrument will still be stored — additional costs may apply). * **Deregister & Detach** — to detach the payment instrument form the Customer Profile and deregister the payment instrument all together. * **Transaction** — link to the Transaction Details creating the stored payment instrument element in the Customer Profile. Depending on the category, you will see different information for each payment instrument (e.g. Account Updater Status, IBAN, BIC, Mandate ID, First 6 / Last 4 Digits, Expiry Date). For each payment instrument, the **Payment Token** is shown and can be used as the transactionToken to initiate subsequent transactions (see [Customer Profile API](https://documentation.ixopay.com/api/customer-profiles/customer-profiles-api)). ![Customer Payment Instruments](https://documentation.ixopay.com/manual/assets/ideal-img/customer-payment-instruments.b6cf3a6.1280.png)Customer Payment Instruments > **Tip** > > Setting a payment instrument as preferred can be done in the Transaction creating the stored payment instrument element in the Customer Profile (handled using the markAsPreferred flag in the CustomerProfileData object in the transaction request, see [Customer Profile API](https://documentation.ixopay.com/api/customer-profiles/customer-profiles-api)) or using the Action Button **Set Preferred** in the Customer Profile itself. The current preferred payment instrument is labeled as **preferred.** ## Setting up the Hosted Payment Page with Customer Profiles Please refer to the [Multi-Method Connector](https://documentation.ixopay.com/manual/docs/connector/multi-method-connector) and [Payment Selection Template](https://documentation.ixopay.com/manual/docs/connector/multi-method-connector/payment-selection-page) sections for details on how to create a Multi-Method Connector and to set up of Payment Selection (hosted payment) pages. If the **customerIdentification** or **customerGUID** parameter is sent within the request to a Multi-Method Connector, the following parameters are available for use within template (see [Fast Editor](https://documentation.ixopay.com/manual/docs/fast) and [Payment Selection Template](https://documentation.ixopay.com/manual/docs/connector/multi-method-connector/payment-selection-page)): * **UserPreferredPaymentInstrument** — containing the **Payment Token** value of the preferred instrument (e.g. `pt::b639e636df17af782602`) * **withRegister** — true or false * **customerProfileEnabled** – true or false * **paymentMethods** – associative array containing all stored payment instruments grouped by the payment method starting with the preferred method (if set) The basic structure of each payment method contains general information about the payment method: ```php [ methodIdentifier => [ identifier => Identifier apiIdentifier => API-Identifier name => name canRegister => true/false info => [ ... ] publicKey => abcd selected => true* ] ] ``` `selected => true` is only set for the payment method set as **Remember**. ![Remember payment method](https://documentation.ixopay.com/manual/assets/ideal-img/remember-payment-method.afc236a.876.png)Remember payment method Credit Card ```php [ [ cardHolder => Alex Smith number => xxxxxxxxxxxx1111 expiryDate => 09/2031 firstSix => 411111 lastFour => 1111 cardType => visa ptToken => pt::b639e636df17af782602 ], [ cardHolder => Jordan Jones number => … ... ] ] ``` > **Note** > > To ensure that sensitive details like credit card numbers and bank account numbers are not handled by merchants directly, the IXOPAY platform's payments.js library renders separate iFrames for details such as the credit card number and CVV. Data entered in these fields is then sent to the IXOPAY platform vault directly, where it is tokenized. (see [API documentation](https://documentation.ixopay.com/docs/guides/getting-started/accept-payments/payment.js)) IBAN ```php [ [ iban => ATxxxxxxxxxxxx11 bic => xxxx ptToken => pt::b639e636df17af782602 ], [ iban => ATxxxxxxxxxxxx11 bic => … … ] ] ``` Any other payment method ```php [ [ name => dummy ptToken => pt::b639e636df17af782602 ], [ name => dummy ptToken => pt::b639e636df17af782602 ], ... ] ``` ### Flags Within the transaction request, you can then set the following flags: * **doRegister** — to store the payment instrument * **rememberMethod** — to save the selected payment method as "last used payment method" * **setAsPreferredInstrument** — to store and set the payment instrument as preferred as well as save the payment method as "last used payment method" Examples ```html ``` Example template ```html
{% set forceFields = ["firstName", "lastName"] %}

Payment selection

Order
{{ data.transaction.description }}
Total Price
{{ data.transaction.amount }} {{ data.transaction.currency }}
{% if data.transaction.testMode %}
Test mode ENABLED
{% endif %}

{% if userPaymentInstruments|length > 0 %}

Your stored payment instruments

{% for type, paymentInstrumentsOfType in userPaymentInstruments %} {% for paymentInstrument in paymentInstrumentsOfType %}
{% if type == 'Creditcard' %}
{{ paymentInstrument.cardHolder }} {{ paymentInstrument.number }}
{{ paymentInstrument.expiryDate }}
{% elseif type == 'DirectDebit' %}
{{ paymentInstrument.iban }} {{ paymentInstrument.bic }}
{% else %}
{# insert information regarding the stored payment instrument here #} {{ type }}
{% endif %}
{% endfor %} {% endfor %}
{% endif %}{# paymentinstruments > 0 #}
0 %}style="display: none;"{% endif %}>

Please select your preferred payment method

{% for m in paymentMethods %}
{% set method = m.name|lower %} {% if method == "bitcoin" %} {{ m.name }} {% elseif method == "creditcard" %} {{ m.name }} {% elseif method == "DirectDebit" %} {{ m.name }} {% elseif method == "dummy" %} {{ m.name }} {% elseif method == "eps" %} {{ m.name }} {% elseif method == "paysafecard" %} {{ m.name }} {% else %}

{{ m.name }}

{% endif %}
{% for f in fields %} {% set mandatory = (f.name in m.fields ? 1 : 0) %} {% if f.name in forceFields or mandatory %} {% if f.type == "text" %}
{% elseif f.type == "select" %}
{% endif %} {% endif %} {% endfor %} {% if m.apiIdentifier == 'Creditcard' %}

Creditcard information

{% elseif m.apiIdentifier == 'DirectDebit' %}

Bank information

{% endif %}{# DirectDebit #} {% if withRegister %}{# if withRegister flag is set, the payment instrument MUST be stored (for Recurring) #}
{% elseif m.canRegister is defined %}{# if method can do register #} {% if m.canRegister %}{# can save the instrument? #}
Required if you want to set it as preferred
{% if userPaymentInstruments|length > 0 %}{# if there are stored instruments, add option to set this as preferred #} {# set instrument as preferred (and replace existing one) #}
{% endif %} {% endif %} {% endif %} {% if not m.selected %}{# option to save payment method if not already default #}
{% endif %}
{% if not loop.last %}
{% endif %}
{% endfor %}
``` > **Tip** > > For the template rendering of payment methods you can either loop through `paymentMethods` or create an appropriate handling for each `paymentMethod`. > **Setting up your payment flow using customer profiles** > > Customer Profile data can be requested before transaction processing using the [**Get profile**](https://documentation.ixopay.com/api/customer-profiles/get-profile) request against the Customer Profile API (e.g. to be included in the checkout page for customer confirmation). Merchants then must include this customer data in the actual transaction processing using the Payment Token, since profile data is not copied to subsequent transactions.