--- title: "Transaction components" description: "Use Platform Experience components to build interactive dashboards for your users." url: "https://docs.adyen.com/platforms/components-overview/after-payment/transactions-component" source_url: "https://docs.adyen.com/platforms/components-overview/after-payment/transactions-component.md" canonical: "https://docs.adyen.com/platforms/components-overview/after-payment/transactions-component" last_modified: "2026-09-15T14:06:03+02:00" language: "en" --- # Transaction components Use Platform Experience components to build interactive dashboards for your users. ##### Learn more  [View our repository on GitHub](https://github.com/Adyen/adyen-platform-experience-web)  [Try it out with a live demo](https://demotool.adyen.com/se/pie/platform-tx)  [Explore the latest updates](/release-notes/platforms-and-financial-products) Transaction components enable you to offer comprehensive transaction management in your portal's user interface (UI) with minimal engineering effort. These components integrate all the features required to search, analyze, and manage transaction records without making multiple API requests. This means you do not need to implement complex API calls to filter balance accounts, calculate net amounts, or trigger refunds. The components handle all of this automatically. Additionally, the components provide greater flexibility for data customization. You can enrich the transaction view with your own custom fields, icons, links, and buttons, allowing the UI to align with your specific business needs.\ This page provides guidance on: * The available transaction components, which include the **Transaction Overview** component and the **Transaction Details** component. * A standard user flow that these components cover. * Functionalities such as data exporting, insights, and processing refunds. The guidance and features available may differ based on the library version in use. We recommend using the latest library version to take advantage of the newest features and improvements. Ensure you select a version in the next section before starting your integration. ## Transaction components Use Platform Experience components to build interactive dashboards for your users. ## Requirements Before you begin, take into account the following requirements,limitations, and preparations. | Requirement | Description | | -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Integration type** | You must have the Adyen for Platforms integration. | | **API credentials** | You must have a [Balance Platform API key](/platforms/manage-access/api-credentials-web-service?tab=create-ws_1) (for example, **ws\[\_123456]@BalancePlatform.****\[YourBalancePlatform]**) to access the [Session authentication API](https://docs.adyen.com/api-explorer/sessionauthentication/latest/overview). Ensure that you have asked your Adyen contact to assign the following role to your API credential:- **Transactions Overview Component: View** - **Transactions Overview Component: Manage Refunds** (required to process refunds through the components) | | **Limitations** | **Document export limits:**- Export functionality is currently limited to the CSV file format only. - The maximum number of rows per transaction export is 100. | | **Setup steps** | Before you begin:- Verify that the component is available in the [languages](#supported-languages) that apply to your situation. - Check our [Component libraries](/platforms/components-overview) page for additional information on the supported countries/regions and browser versions. | ### Component Description ## Transactions Overview component The **Transactions Overview** component shows a list of transactions processed for a specific balance account within a specified time period. Each transaction record includes details such as the date and time, payment method, transaction type, net amount, and gross amount. Additionally, the component allows for custom data integration, such as your own fields, icons, links, and buttons. For example, you can rename a column to match your branding or rearrange columns to change the display order. This component organizes transactions into two tabs: * **Transactions**: shows account balances, which display the account balance (available funds) and the reserved balance (funds currently held in reserve). Key features include: * **Transaction list**: a detailed list of transactions, which can be [filtered](#available-filters). * **Transaction details**: users can select a record to open the [**Transaction Details** ](#transaction-details-component)component, which provides granular information about that specific transaction. * **CSV export**: an export button allows users to generate a CSV file containing the first 100 transactions that match the applied filters. Users retain control over the specific transaction fields included in the exported file. * **Insights**: shows an analytical summary of transaction data for a specific balance account and time period. This data helps with bookkeeping, reconciliation, and financial analysis. This includes: * **Period Result**: the net total for the specified period and currency, representing the difference between the total incoming and total outgoing funds. * **Total Incoming**: the total amount of funds credited to the balance for all transactions processed during the specified period, grouped by transaction types, such as payments and transfers. * **Total Outgoing**: the total amount of funds debited from the balance for all transactions processed during the specified period, grouped by transaction types, such as chargebacks and refunds. The following illustrate each tab of the Transactions Overview component. ### Tab: Transactions [](/user/pages/filters/pe-components-dashboards/transactions/1-10-0/component-description/transactions-overview-desktop.png) ### Tab: Insights [](/user/pages/filters/pe-components-dashboards/transactions/1-10-0/component-description/transactions-insights-desktop.png) The **Transactions Overview** component enables users to complete the following tasks: * View a list of transactions for a balance account. * View and export filtered transaction data as a CSV file for reconciliation and external analysis. Users can [filter](#available-filters) for transaction type, currency (for multi-currency accounts), PSP reference, and the time period specific to the balance account. * View the available balance of the balance account, which shows the account balance and the reserved balance. * View the total incoming and outgoing funds for a balance account. The total values update automatically when the user modifies the [filters](#available-filters). For example, users can filter to see the total booked incoming and outgoing funds that were processed during the past month. By default, the **Transactions Overview** component includes the [**Transaction Details** ](#transaction-details-component)component, which provides more details about a specific transaction. ### Available filters The following sections show the available filters and their values for the **Transactions Overview** component. ** #### Balance account Users with multiple balance accounts can switch between them using the **Balance Account** filter. This is available in both the **Transactions** and **Insights** tabs. ** #### Time period The **Time period** filter specifies the date and time range for displaying transaction results. The specified time is determined by the time zone of the selected balance account. This is available in both the **Transactions** and **Insights** tabs. | Filter value | Description | | ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Last 7 days** | Includes transactions from the previous six days and from today until the current time. For example, if today is a Tuesday and the time is 8:00 PM, transactions from the previous Wednesday midnight until this Tuesday 8:00 PM are included. | | **This week** | Includes transactions for the current week, starting from Monday midnight until the present moment. | | **Last week** | Includes transactions from Monday midnight to Sunday 11:59:59 PM of the previous week. | | **Last 30 days** | Includes transactions from the previous 29 days and from today until the current time. | | **Last 180 days** | The default setting. Includes transactions from the previous 179 days from today until the current time. | | **This month** | Includes transactions for the current month, starting from the first day of the month until today's date. | | **Last month** | Includes transactions from the previous month, starting from the first day of the month until the end of the month at 11:59:59 PM. | | **Year to date** | Includes transactions from the first day of the current year up until today's date. | | **Custom** | Allows setting a custom time period. | ** #### Type The **Type** filter specifies which transaction types to show in the overview. The table below lists the available transaction types in the component along with their corresponding values returned in the [Transfers API](https://docs.adyen.com/api-explorer/transfers/latest/overview). This is only available in the **Transactions** tab. | Filter value | Value in the Transfers API | | | -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | - | | **ATM** | `atmWithdrawal`, `atmWithdrawalReversal`. | | | **Correction** | `manualCorrection`, `depositCorrection`, `leftover`, `balanceAdjustment`, `balanceRollover`, `installmentReversal`, `captureReversal`, `refundReversal`. | | | **Payment** | `payment`, `capture`, `installment`. | | | **Refund** | `refund` | | | **Chargeback** | `chargeback`, `secondChargeback`, `chargebackReversal`. | | | **Transfer** | `bankTransfer`, `internalTransfer`, `bankDirectDebit`. | | | **Other** | Includes all other transaction types. | | ** #### Currency For multi-currency accounts, users can select their preferred currency for transactions overview. This is available in both the **Transactions** and **Insights** tabs. ** #### PSP reference The **PSP reference** filter enables users to find a transaction by specifying the exact PSP reference (equivalent to the internal Payment PSP reference), provided the transaction also matches the criteria of any other filters applied. This is only available in the **Transactions** tab. ## Transaction Details component The **Transaction Details** component provides detailed information about a transaction, including its unique reference ID, the original amount, and any associated fees. For payment transactions, this component indicates whether a specific payment has been refunded. Additionally, it enables users to [refund payments](#refunds) to their shoppers. The component also allows for custom data integration, such as your own fields, icons, links, and buttons. This component organizes the details of the transaction into three tabs: * **Summary**: when available, shows the breakdown of the transaction, including net and gross amounts, applicable fees, and deductions. This view explicitly details the original amount processed and the net amount received by the user. * **Details**: shows information about the transaction useful for tracking purposes, such as transaction references, including the unique reference ID. For payment transactions, this tab includes associated refund information. All custom integration data configured for the component is also displayed here. * **Timeline**: when available, shows the complete payment processing history and status changes for the transaction. By default, the **Transaction Details** component is embedded in the **Transactions Overview** component and is shown as a modal window on the overview page. You can also choose to show the **Transaction Details** component on a separate page during the [initialization of the components](#initialize-components). The following tabs illustrate how the component appears on various screen sizes. ### Tab: Mobile [](/user/pages/filters/pe-components-dashboards/transactions/1-10-0/component-description/transactions-details-mobile.png) ### Tab: Desktop [](/user/pages/filters/pe-components-dashboards/transactions/1-10-0/component-description/transactions-details-desktop.png) ### Refund User Flow ## Processing refunds through components The refund feature requires the **Transactions Overview Component: Manage Refunds** role to be assigned to your API credential and included in the session request. Users can refund payments to their shoppers through the transaction components. When a user initiates a refund, the components automatically call Adyen's API to process the refund request. This means that no additional actions are needed on your part as a platform. The transaction components support both full and partial refunds depending on the [payment method](/payment-methods). For partial refunds, users can issue multiple smaller refunds through the components, as long as the total amount of these refunds does not exceed the original payment amount. The user flow for processing a refund through the components is as follows: 1. In the payment details, the user selects the **Refund payment** button. 2. In the **Refund payment** modal window, the user specifies a reason for the refund and the refund amount. 3. The user confirms their refund request. 4. After the refund request is processed, users can view the refund status message and label in the payment details. The following tabs illustrate the user flow when processing a partial refund for a specific payment transaction: ### Tab: Payment details [](/user/pages/filters/pe-components-dashboards/transactions/1-10-0/refund-user-flow/payment-details.png) ### Tab: Refund details [](/user/pages/filters/pe-components-dashboards/transactions/1-10-0/refund-user-flow/refund-details.svg) ### Tab: Refund sent [](/user/pages/filters/pe-components-dashboards/transactions/1-10-0/refund-user-flow/refund-sent.svg) ### Tab: Refund status [](/user/pages/filters/pe-components-dashboards/transactions/1-10-0/refund-user-flow/refund-status.png) After the refund has been issued and processed, users can view the refund transaction in their overview. Each refund transaction is linked to the corresponding payment transaction, making it easy for users to find relevant references and navigate between transaction records. ## How it works The integration of components involves both server-side and client-side processes. You can find more details on the [component libraries](#see-also) page. ### Integration steps Follow these steps to integrate the component(s): 1. [Create an authentication session from your server](#create-token) 2. [Install component library in your front end](#install-library) 3. [Initialize components](#initialize-components) 4. [Optional: Localize components](#localize-components) 5. [Optional: Customize component appearance](#customize-appearance) 6. [Optional: Customize component data](#customize-data) ### Create A Session ## 1. Create an authentication session from your server To ensure secure communication between components and Adyen server, you must configure your server for authentication and create a session token. To create the token: 1. From your server, make a POST [/sessions](https://docs.adyen.com/api-explorer/sessionauthentication/latest/post/sessions) request specifying the following parameters: To make this API request, your API key must have the **Transactions Overview Component: View** role in your Customer Area. For more information, refer to the [Requirements](#requirements) section. | Parameter | Required | Description | | ----------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | [allowOrigin](https://docs.adyen.com/api-explorer/sessionauthentication/latest/post/sessions#request-allowOrigin) |  | The URL where the component will appear. Must follow the format of `https://www.yourcompany.com` or `https://*.yourcompany.com`, where `yourcompany.com` is the actual web address of your platform. On live, only the HTTPS protocol is supported. | | [policy](https://docs.adyen.com/api-explorer/sessionauthentication/latest/post/sessions#request-policy) |  | An object that contains:- [resources](https://docs.adyen.com/api-explorer/sessionauthentication/latest/post/sessions#request-policy-resources): An object that contains: * `accountHolderId`: The unique identifier of the account holder that is linked to the balance account shown in the component. * [type](https://docs.adyen.com/api-explorer/sessionauthentication/latest/post/sessions#request-policy-resources-type): The type of resource. Set this to **accountHolder**. - [roles](https://docs.adyen.com/api-explorer/sessionauthentication/latest/post/sessions#request-policy-roles): The role required to use the component. Set this to **Transactions Overview Component: View**. To enable users to process refunds through the components, include the **Transactions Overview Component: Manage Refunds** role in your request. | | [product](https://docs.adyen.com/api-explorer/sessionauthentication/latest/post/sessions#request-product) |  | The type of product the component belongs to. Set this to **platform**. | Here is an example request for creating a session token. **Create a session token** ```bash curl https://test.adyen.com/authe/api/v1/sessions \ -H 'content-type: application/json' \ -H 'x-api-key: ADYEN_BALANCE_PLATFORM_API_KEY' \ -d '{ "allowOrigin":"YOUR_DOMAIN", "product":"platform", "policy": { "resources": [ { "accountHolderId": "AH00000000000000000000001", "type": "accountHolder" } ], "roles": [ "Transactions Overview Component: View", "Transactions Overview Component: Manage Refunds" ] } }' ``` 2. Note the API response. Later, when [initializing the components](#initialize-components), you need to create and call a function that passes the entire session object from the response to your front end. **Session token created** ```json { "id": "EC1234-1234-1234-1234", "token": "xxxxx.yyyyy.zzzzzz" } ``` ### Install Component Library ## 2. Install component library in your front end Use the Adyen Web npm package, or embed the Adyen Platform Experience script and stylesheet into your HTML file: ### Tab: npm (recommended) Install the **Adyen Platform Experience** library in your front-end application as follows: 1. Install the npm package. ```bash npm install @adyen/adyen-platform-experience-web ``` 2. Import the library, the components, and the style sheet. ```bash import { AdyenPlatformExperience, component_name } from '@adyen/adyen-platform-experience-web'; import "@adyen/adyen-platform-experience-web/adyen-platform-experience-web.css"; ``` ### Tab: Embed script and stylesheet Use the `integrity` attribute so browsers can verify that the script and stylesheet have not been changed unexpectedly. The value of the `integrity` attribute is the [Subresource Integrity (SRI) hash](https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity) which Adyen provides for each version of the Adyen Web JavaScript and CSS files. Get the SRI hashes from the [release notes](/release-notes/platforms-and-financial-products) for the Platform Experience components, under **Updating to this version**. **embed-script-stylesheet.html** ```html ``` ### Initialize Components ## 3. Initialize components To initialize the components: 1. Gather the following information to be passed when initializing the library and its components. 1. Gather these parameters to initialize the library. | Parameter | Required | Description | | --------------------------------- | ------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `availableTranslations`Deprecated | | **Deprecated.** This field is no longer needed because locales are now dynamically loaded on demand via CDN. Setting this field will trigger a deprecation warning. An array containing the names of the imported locale files used for localizing the components. For example, `[es_ES, nl_NL, fr_FR]`. | | `environment` | | Specifies the environment for the component integration. The default value is **test**. Set the parameter to **live** when you are ready to go live. | | `locale` | | Specifies the locale code, which determines the desired language of the components. This code must correspond to a [supported language](#supported-languages). For example, use **es-ES** for Spanish. | | `onSessionCreate` |  | The callback function that retrieves an authentication session token and refreshes the current session. | 2. Gather these parameters to initialize each component. Select the tab for the component you want to use: ### Tab: Transactions Overview component | Parameter | Required | Description | | --------------------- | ------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `allowLimitSelection` | | Determines whether the user can change the number of transactions shown per page. Default value: **true**. | | `core` |  | The instance of the library. | | `dataCustomization` | | An object that contains both the `list` and `details` objects, which include [customization specifications](#customize-data) for dashboard fields, allowing for additional data integration from your database. | | `onRecordSelection` | | If defined, the event allows obtaining the transaction ID when the user selects a specific transaction from the overview. You can use the obtained ID value to show the **Transaction Details** component in a different location within your portal's UI, outside the **Transactions Overview** component. | | `preferredLimit` | | The number of transactions shown per page. Default value: **10**. | ### Tab: Transaction Details component | Parameter | Required | Description | | ------------------- | ------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `core` |  | The instance of the library. | | `dataCustomization` | | An object that contains the `details` object, which include [customization specifications](#customize-data) for dashboard fields, allowing for additional data integration from your database. | | `id` |  | The unique identifier of the transaction. | 2. Create a DOM element on your portal's UI page where you want the component to be rendered. Assign the element a unique and descriptive ID. This unique ID is important to avoid any misconfigurations when integrating multiple components into your portal's UI. By default, the **Transaction Details** component is shown as a modal window within the **Transactions Overview** component. In this scenario, you only need to create a DOM element for the **Transactions Overview** component. If you want to use the **Transaction Details** component on its own, you need to create a separate DOM element for it. If you are using JavaScript frameworks such as Vue or React, make sure that you use references instead of selectors and that you do not re-render the DOM element. Select the tab for the component you want to use: ### Tab: Transactions Overview component **Create DOM element** ```html
``` ### Tab: Transaction Details component **Create DOM element** ```html ``` 3. Add a function that [calls your API](#create-token) to retrieve and refresh an authentication session token. The following code is the same for both transaction components. **Add function to retrieve and refresh an authentication session token** ```bash async function handleSessionCreate() { const response = await fetch('YOUR_IMPLEMENTATION_OF_CREATE_SESSION_ENDPOINT'); return response.json(); } ``` 4. Initialize the component and mount it to the container you created. Be sure to include the function for retrieving and refreshing the session token that you added in the previous step. To implement the **Transaction Details** component as a modal window within the **Transactions Overview** component, use the following code examples. In this implementation, when a user selects a specific transaction from the overview page, the transaction ID is automatically passed to the **Transaction Details** component, and the modal window opens. Select the tab for the component you want to use: ### Tab: Transactions Overview component **Initialize library and create component** ```javascript import { AdyenPlatformExperience, TransactionsOverview } from '@adyen/adyen-platform-experience-web'; import "@adyen/adyen-platform-experience-web/adyen-platform-experience-web.css"; const core = await AdyenPlatformExperience({ onSessionCreate: handleSessionCreate, }); const transactionsOverview = new TransactionsOverview({ core }); transactionsOverview.mount('#transactions-overview-container'); ``` ### Tab: Transaction Details component **Initialize library and create component** ```javascript import { AdyenPlatformExperience, TransactionDetails } from '@adyen/adyen-platform-experience-web'; import "@adyen/adyen-platform-experience-web/adyen-platform-experience-web.css"; const core = await AdyenPlatformExperience({ onSessionCreate: handleSessionCreate, }); const transactionDetails = new TransactionDetails({ core, id: 'ABCDEFG1234567890' }); transactionDetails.mount('#transaction-details-container'); ``` 5. (Optional) To use the **Transaction Details** component outside of the **Transactions Overview** component: 1. Define the `onRecordSelection` callback. **Define onRecordSelection callback** ```javascript const transactionsOverview = new TransactionsOverview({ core, onRecordSelection: ({ id }) => { // Use selected transaction id. } }); ``` 2. Initialize the **Transaction Details** component using the `id` from the object argument as shown below. **Link to the selected record** ```javascript const transactionDetails = new TransactionDetails({ core, id: '