---
title: "Stripe Metadata PRO"
description: "Automatically attach WooCommerce order details to Stripe transfer metadata so vendors can see exactly what each transfer relates to. Includes order ID, items, and amounts in every transfer."
url: "https://docs.splitpayplugin.com/features/stripe-metadata/"
---
## Overview

By default, Stripe transfers appear in a connected account's dashboard as simple monetary amounts with no additional context. The **Stripe Metadata** feature solves this by attaching store-order information directly to each transfer object in Stripe — whether the order originated on WooCommerce or FluentCart. This gives vendors clear visibility into *why* they received a payment and *which order* it relates to.

When enabled, each transfer created by Split Pay will include metadata fields that your vendors can view in their Stripe Dashboard under the transfer details.

Stripe allows up to **20 metadata key-value pairs** per transfer, with keys up to 40 characters and values up to 500 characters. Split Pay stays well within these limits.

## Enabling Stripe metadata

To enable metadata on transfers:

Navigate to **Split Pay → Main** in your WordPress admin (top-level menu, added in 3.7.0).

Scroll to the **Stripe Metadata** section.

Check the **Include order metadata in transfers** checkbox.

![Include Order Details in Stripe Transfer Metadata](../../images/transfer-metadata-checkbox.png)

Include Order Details in Stripe Transfer Metadata

Save your settings.

Once enabled, all future transfers will automatically include the metadata fields described below.

## What metadata is included

Each transfer will contain the following metadata fields:

| Metadata Key | Description | Example Value |
| --- | --- | --- |
| `order_id` | The store order number (WooCommerce or FluentCart) | `1042` |
| `order_total` | The full order total | `149.99` |
| `transfer_amount` | The amount sent to this connected account | `74.99` |
| `currency` | The three-letter currency code | `usd` |
| `items` | Product names and quantities from the order | `Widget Pro x2, Gadget x1` |
| `store_url` | Your store URL (the WordPress site URL of the storefront, regardless of platform) | `https://yourstore.com` |

## Viewing metadata in Stripe

Vendors (connected accounts) can view the attached metadata in their Stripe Dashboard:

Log in to [Stripe Dashboard](https://dashboard.stripe.com).

Navigate to **Balance → Transactions** or search for the specific transfer.

Click on a transfer to view its details.

Scroll down to the **Metadata** section to see the order information.

The metadata is also accessible via the [Stripe API](https://docs.stripe.com/api/transfers/object#transfer_object-metadata), making it easy to build custom reporting or reconciliation tools on top of your transfer data.

## Common use cases

*   **Vendor reconciliation** — Vendors can match each transfer to a specific order without needing access to your store admin (WooCommerce or FluentCart).
*   **Accounting & bookkeeping** — Export transfer data from Stripe (including metadata) for bookkeeping and tax reporting.
*   **Dispute resolution** — Quickly identify which order a transfer relates to when resolving payment disputes.
*   **Custom reporting** — Use the Stripe API to pull transfer metadata and generate custom reports for your marketplace.

Metadata is only attached to **new transfers** created after the feature is enabled. Existing transfers will not be retroactively updated.

## Developer notes

If you need to customize the metadata fields attached to transfers, use the `spp_transfer_metadata` filter. As of v3.7.0+, the filter is platform-agnostic: it receives the metadata array, a platform-neutral `$order` object (a `WC_Order` on Stack A, a FluentCart order on Stack B), and an `$integration` slug (`'woocommerce'` or `'fluentcart'`) so you can branch when needed.

```
add_filter( 'spp_transfer_metadata', function( $metadata, $order, $integration ) {
    if ( 'woocommerce' === $integration ) {
        $metadata['custom_field'] = $order->get_meta( '_my_custom_field' );
    } elseif ( 'fluentcart' === $integration ) {
        // Use FluentCart's order accessor:
        $metadata['custom_field'] = (string) ( $order->get_meta( '_my_custom_field' ) ?? '' );
    }
    return $metadata;
}, 10, 3 );
```

If your existing callbacks were registered with `10, 2` they continue to work — PHP discards the extra `$integration` argument. New callbacks should declare `10, 3` to receive the integration slug.
