# Network cost passthrough Learn how to pass network costs from a platform to your connected accounts. Network cost passthrough (IC++) is a capability for platforms to pass network costs through to their connected accounts. This allows you to offer IC+ pricing to your connected accounts instead of charging a blended rate for all card payments. Stripe first charges network costs to your platform account. Within a few hours, we help you recover these costs from the connected account’s balance and add them to the platform’s balance, to ensure that the platform is fully compensated for the network costs. This includes all network cost adjustments related to network costs, including non-transactional scheme fees, refunds, and disputes. You can’t pass through Stripe fees (such as Radar or card account updater fees) to your connected accounts using network cost passthrough. It only handles the network costs. To enable IC++, reach out to your account team. ## Demo [Watch on YouTube](https://www.youtube.com/watch?v=NWFHehWXIY0) ## Manage network cost passthrough status for your connected accounts When your platform controls pricing and the connected account is the [merchant of record](https://docs.stripe.com/connect/merchant-of-record.md), you can enable network cost passthrough via the API or the Stripe Dashboard. ### Enable network cost passthrough #### API To enable network cost passthrough, you must schedule a new Pricing Config Scheme object with the `network_costs` type using the [Pricing Config Scheme Create API](https://docs.stripe.com/api/pricing-config-scheme/create.md?api-version=preview): ```curl curl https://api.stripe.com/v1/pricing_configs/network_costs/schemes \ -u "<>:" \ -H "Stripe-Account: {{CONNECTEDACCOUNT_ID}}" \ -d enabled=true ``` ```json { "id": "pcsch_1RtBMrPGj7LS2ZC4NtVvHirY", "object": "pricing_config_scheme", "enabled": true, "ends_at": null, "livemode": true, "pricing_config": "network_costs", "starts_at": 1754502193 } ``` This immediately sets the account for network cost passthrough, allowing Stripe to begin passing through network costs to the connected account. If you enable network cost passthrough on an account in the middle of the month, network costs get recovered from the connected account from the time of enablement, not the entire month. Optionally, to enable network cost passthrough at a future date, you can pass the timestamp in the [starts_at](https://docs.stripe.com/api/pricing-config-scheme/create.md?api-version=preview#create_pricing_config_scheme-starts_at) parameter. This determines the time that network costs begin to pass through to the connected account. You can only create one scheduled scheme at a time for each connected account. If you attempt to create a new scheme while you already have one scheduled, it results in a `400` error. Schemes are immutable, meaning you need to delete and re-create scheduled schemes to make any changes. You can find current and scheduled schemes in the `Pricing Config` object using the `current_scheme` and `next_scheme` parameters. ```curl curl -G https://api.stripe.com/v1/pricing_configs/network_costs \ -u "<>:" \ -H "Stripe-Account: {{CONNECTEDACCOUNT_ID}}" \ -d "expand[]=current_scheme" \ -d "expand[]=next_scheme" ``` ```json { "id": "network_costs", "object": "pricing_config", "current_scheme": { "id": "pcsch_1RtBSlPGj7LS2ZC4P6VEQe8l", "object": "pricing_config_scheme", "enabled": false, "ends_at": 1754614254, "livemode": true, "pricing_config": "network_costs", "starts_at": 1754502559 }, "livemode": true, "next_scheme": { "id": "pcsch_1RtBhkPGj7LS2ZC4U7LWEvLX", "object": "pricing_config_scheme", "enabled": true, "ends_at": null, "livemode": true, "pricing_config": "network_costs", "starts_at": 1754614254 } } ``` #### Dashboard You can set network cost passthrough for a connected account from [its details page](https://docs.stripe.com/connect/dashboard/review-actionable-accounts.md#review-action) in your Dashboard by following these steps: 1. Scroll to the **Monetization** section and click **Network costs**. 1. Click the overflow menu (⋯) and select **Customize Pricing**. 1. Turn on **Pass through network costs**. 1. Click **Save** and then **Confirm**. ### Disable network cost passthrough #### API You can disable network cost passthrough for accounts by creating a new `network_costs` Pricing Scheme and setting it to [enabled](https://docs.stripe.com/api/pricing-config-scheme/create.md?api-version=preview#create_pricing_config_scheme-enabled) = false. ```curl curl https://api.stripe.com/v1/pricing_configs/network_costs/schemes \ -u "<>:" \ -H "Stripe-Account: {{CONNECTEDACCOUNT_ID}}" \ -d enabled=false ``` ```json { "id": "pcsch_1RtBSlPGj7LS2ZC4P6VEQe8l", "object": "pricing_config_scheme", "enabled": false, "ends_at": null, "livemode": true, "pricing_config": "network_costs", "starts_at": 1754502559 } ``` After you apply this scheme, Stripe doesn’t charge network costs to the connected account, meaning the account is no longer on network cost passthrough pricing. To delete a scheduled scheme, use the [DELETE](https://docs.stripe.com/api/pricing-config-scheme/delete.md?api-version=preview) endpoint: ```curl curl -X DELETE https://api.stripe.com/v1/pricing_configs/network_costs/schemes/pcsch_1RtBWbPGj7LS2ZC4q5lrEuNG \ -u "<>:" \ -H "Stripe-Account: {{CONNECTEDACCOUNT_ID}}" ``` ```json { "id": "pcsch_1RtBWbPGj7LS2ZC4q5lrEuNG", "object": "pricing_config_scheme", "deleted": true } ``` You can’t delete a scheme that has a `starts_at` date that’s in the past. If you attempt to do so, Stripe returns a `400` error that prompts you to schedule a new scheme. #### Dashboard You can unset network cost passthrough for a connected account from [its details page](https://docs.stripe.com/connect/dashboard/review-actionable-accounts.md#review-action) in your Dashboard by following these steps: 1. Scroll to the **Monetization** section and click **Network costs**. 1. Click the overflow menu (⋯) and select **Customize Pricing**. 1. Turn off **Pass through network costs**. 1. Click **Save** and then **Confirm**. ### View the network cost passthrough status for an account #### API The Pricing Config Scheme `current_at` endpoint [returns the pricing scheme](https://docs.stripe.com/api/pricing-config-scheme/retrieve.md?api-version=preview) that you applied at a specific timestamp: ```curl curl -G https://api.stripe.com/v1/pricing_configs/network_costs/schemes/current_at \ -u "<>:" \ -H "Stripe-Account: {{CONNECTEDACCOUNT_ID}}" \ -d current_at=1754502879 ``` ```json { "id": "pcsch_1RtBSlPGj7LS2ZC4P6VEQe8l", "object": "pricing_config_scheme", "enabled": true, "ends_at": 1754503791, "livemode": true, "pricing_config": "network_costs", "starts_at": 1754502879 } ``` If you call this endpoint with an `current_at` date before the account’s creation date, Stripe returns a `400` error. #### Dashboard You can view the network cost passthrough status of a connected account on [its details page](https://docs.stripe.com/connect/dashboard/review-actionable-accounts.md#review-action) in your Dashboard. Scroll to the **Monetization** section and click **Network costs**, then check the status of the **Network costs passthrough** pricing scheme. ## Adjust the application fee for your connected accounts Connected accounts on blended pricing typically incur higher application fees to cover the underlying network cost, and connected accounts that pay for their own network costs typically pay lower application fees. You can update your pricing logic for application fees in one of two ways: 1. **Update your internal pricing engine**: If you maintain the logic of how much to charge in application fees for each charge and connected account, you need to add the conditional logic in your internal engine to lower the application fees and set the contracted price for a connected account that also pays their own network costs. 1. **Update your pricing in the platform pricing tool**: If you use the [platform pricing tool](https://docs.stripe.com/connect/platform-pricing-tools.md) to execute your pricing strategy, you must incorporate differentiated pricing for network cost passthrough-enabled user card payments. Typically the pricing for connected accounts on blended pricing and IC+ pricing is identical in every aspect except for card payments; for network cost passthrough-enabled accounts, the application fee for card payments is lower because they’re paying network costs on top of your application fee. If you use the platform pricing tool, you can customize pricing for individual connected accounts or for groups of connected accounts. We recommend that you handle network cost passthrough pricing with a dedicated rule, not a condition on another rule. Restrict the dedicated rule to accounts with IC++ enabled by applying the condition `Network cost passthrough` + `One of` + `Enabled`. That prevents you from collecting incorrect application fees when an account’s IC++ status changes. ### Customize pricing for individual connected accounts on IC++ You can [override the pricing scheme for a specific connected account](https://docs.stripe.com/connect/platform-pricing-tools/pricing-schemes.md#override-a-specific-account) by adding a pricing rule with the condition **Payment method** > **One of** > **Cards**. Have the rule define the fee as the rate negotiated with the account (for example, the *X* bps from an IC+*X* bps contract). ### Customize pricing for a group of connected accounts on IC++ Follow these steps: 1. Create a [pricing group](https://docs.stripe.com/connect/platform-pricing-tools/pricing-groups.md) for your IC++ connected accounts that you want to pay the same IC++ price. 1. Copy the pricing scheme that you use for blended rate accounts. 1. [Create a pricing rule](https://docs.stripe.com/connect/platform-pricing-tools/pricing-schemes.md#create-pricing-scheme) with the condition **Payment method** > **One of** > **Cards**. Have the rule define the fee as the rate negotiated with the connected accounts (for example, the *X* bps from an IC+*X* bps contract). 1. [Assign the connected account group to the new pricing scheme](https://docs.stripe.com/connect/platform-pricing-tools/pricing-groups.md#assign-groups-to-a-pricing-scheme). 1. [Add your IC++ connected accounts to the group](https://docs.stripe.com/connect/platform-pricing-tools/pricing-groups.md#add-accounts-to-groups). ## Provide network cost reports to your connected accounts All network cost transfers from a connected account to your platform account appear in the Activity and Payout reports as `PLATFORM_FEE_TRANSFER`. Entries for these network costs have a `balance_transaction_reporting_category` of `platform_fee_transfer`. (Transfers prior to March 2026 have the category `charge` or `transfer`.) You can help your connected accounts understand their network costs by sharing the following detailed network cost reports with them: - **IC+ plan-level report**: This report helps connected accounts understand the monthly network costs across all their charges. It provides interchange plan names and an aggregated scheme fee total. This is similar to what other payment service providers offer. This report shows data at the calendar month level. - **IC+ transaction-level report**: This report helps connected accounts understand transaction costs at an individual transaction-level. It provides information about which charges led to higher network costs and how refunds and disputes impact network costs. This report shows data at the calendar month level. You can get the reports for a connected account in several ways: - Reporting API - Sigma or Stripe Data Pipeline (SDP) - Network cost passthrough embedded component - Stripe Dashboard (for connected accounts with Dashboard access) The [report schema](https://docs.stripe.com/connect/network-cost-passthrough-platforms.md#network-cost-report-schema) is the same, regardless of how you access the report. ### Reports in the Reporting API #### Plan-level reports You can choose which reports to offer your connected accounts. Use the Reporting API to [run these reports](https://docs.stripe.com/api/reporting/report_run/create.md) for each connected account for each calendar month. Learn more about [running a report from the API](https://docs.stripe.com/reports/api.md). ```curl curl https://api.stripe.com/v1/reporting/report_runs \ -u "<>:" \ -H "Stripe-Account: {{CONNECTEDACCOUNT_ID}}" \ -d "report_type=connect_card_payments_fees.plan_level.1" \ -d "parameters[interval_start]=1680000000" \ -d "parameters[interval_end]=1680100000" ``` ```json { "id": "frr_1RmMIdPHHHwdjQjw3kOoBamc", "object": "reporting.report_run", "created": 1752875919, "error": null, "livemode": true, "parameters": { "interval_end": 1680100000, "interval_start": 1680000000 }, "report_type": "connect_card_payments_fees.plan_level.1", "result": { "id": "file_1RmM67PHHHwdjQjwvvCB2JwD", "object": "file", "created": 1752875143, "expires_at": 1784411143, "filename": "frr_1RmM5wPHHHwdjQjwgfvy9rXJ.csv", "links": { "object": "list", "data": [], "has_more": false, "url": "/v1/file_links?file=file_1RmM67PHHHwdjQjwvvCB2JwD" }, "purpose": "finance_report_run", "size": 464, "title": "FinanceReportRun frr_1RmM5wPHHHwdjQjwgfvy9rXJ", "type": "csv", "url": "https://files.stripe.com/v1/files/file_1RmM67PHHHwdjQjwvvCB2JwD/contents" }, "status": "succeeded", "succeeded_at": 1752875919 } ``` The IC+ plan-level and transaction-level reports can take several minutes to execute. If the status in the response from the above API call is pending, we recommend adding an Event Listener for the `reporting.report_run.succeeded` event. After you receive the event for the report run that you created, make sure that you compare it with the ID (for example, `frr_...`) associated with your report run. Learn more about the [recommended integration pattern for automated reporting](https://docs.stripe.com/reports/api.md#integration-pattern). Here’s an example of what the `reporting.report_run.succeeded` event might look like: ```json { "id": "evt_1RtCRKPHHHwdjQjwfRPzuvep", "object": "event", "account": "acct_1234", "api_version": "2025-07-30.preview; network_costs_private_preview=v1", "context": "acct_1234", "created": 1754506314, "data": { "object": { "id": "frr_1RmMIdPHHHwdjQjw3kOoBamc", "object": "reporting.report_run", "created": 1754503324, "error": null, "livemode": true, "parameters": { "interval_end": 1751328000, "interval_start": 1748736000 }, "report_type": "connect_card_payments_fees.plan_level.1", "result": { "id": "file_1RtCRKPHHHwdjQjwDeGKimBi", "object": "file", "created": 1754506314, "expires_at": 1786042314, "filename": "frr_1RtBf6PHHHwdjQjwgr4SWj6Q.csv", "links": { "object": "list", "data": [], "has_more": false, "url": "/v1/file_links?file=file_1RtCRKPHHHwdjQjwDeGKimBi" }, "purpose": "finance_report_run", "size": 748, "title": "FinanceReportRun frr_1RtBf6PHHHwdjQjwgr4SWj6Q", "type": "csv", "url": "https://files.stripe.com/v1/files/file_1RtCRKPHHHwdjQjwDeGKimBi/contents" }, "status": "succeeded", "succeeded_at": 1754506314 } }, "livemode": true, "pending_webhooks": 1, "request": { "id": null, "idempotency_key": null }, "type": "reporting.report_run.succeeded" } ``` Then, you can [retrieve](https://docs.stripe.com/reports/api.md#report-runs) the report for the connected account using `result.url`: #### curl ```bash curl https://files.stripe.com/v1/files/file_1RtCRKPHHHwdjQjwDeGKimBi/contents \ -u <>: ``` ```json { "platform_id": "acct_1GcldzAppfGnVJgH", "connected_account_id": "acct_1PzmZGPHHHwdjQjw", "connected_account_name": null, "plan_name": "All scheme fees", "network_cost_category": "card_scheme", "total_amount": "0.005991", "fee_currency": "usd", "livemode": true }, { "platform_id": "acct_1GcldzAppfGnVJgH", "connected_account_id": "acct_1PzmZGPHHHwdjQjw", "connected_account_name": null, "plan_name": "CPS Services", "network_cost_category": "interchange", "total_amount": "0.025750", "fee_currency": "usd", "livemode": true }, { "platform_id": "acct_1GcldzAppfGnVJgH", "connected_account_id": "acct_1PzmZGPHHHwdjQjw", "connected_account_name": null, "plan_name": "Visa Traditional - Product 1", "network_cost_category": "interchange", "total_amount": "0.016175", "fee_currency": "usd", "livemode": true } ``` #### Transaction-level reports You can [generate the IC+ transaction-level report](https://docs.stripe.com/api/reporting/report_run/create.md) for a connected account for a specific month. Learn more about [running a report from the API](https://docs.stripe.com/reports/api.md). ```curl curl https://api.stripe.com/v1/reporting/report_runs \ -u "<>:" \ -H "Stripe-Account: {{CONNECTEDACCOUNT_ID}}" \ -d "report_type=connect_card_payments_fees.transaction_level.1" \ -d "parameters[interval_start]=1680000000" \ -d "parameters[interval_end]=1680100000" ``` ```json { "id": "frr_1RmMK3PHHHwdjQjw0pJ2Nsga", "object": "reporting.report_run", "created": 1752876007, "error": null, "livemode": true, "parameters": { "interval_end": 1680100000, "interval_start": 1680000000 }, "report_type": "connect_card_payments_fees.transaction_level.1", "result": { "id": "file_1RmM8wPHHHwdjQjwkHoUYySJ", "object": "file", "created": 1752875318, "expires_at": 1784411318, "filename": "frr_1RmM8sPHHHwdjQjwHgTQ3dlv.csv", "links": { "object": "list", "data": [], "has_more": false, "url": "/v1/file_links?file=file_1RmM8wPHHHwdjQjwkHoUYySJ" }, "purpose": "finance_report_run", "size": 6307, "title": "FinanceReportRun frr_1RmM8sPHHHwdjQjwHgTQ3dlv", "type": "csv", "url": "https://files.stripe.com/v1/files/file_1RmM8wPHHHwdjQjwkHoUYySJ/contents" }, "status": "succeeded", "succeeded_at": 1752876007 } ``` We recommend that you listen for the `reporting.report_run.succeeded` event. Then, you can [retrieve](https://docs.stripe.com/reports/api.md#report-runs) the report for the connected account using `result.url`: #### curl ```bash curl https://files.stripe.com/v1/files/file_1RmM8wPHHHwdjQjwkHoUYySJ/contents \ -u <>: ``` ```json { "platform_id": "acct_1GcldzAppfGnVJgH", "connected_account_id": "acct_1PzmZGPHHHwdjQjw", "connected_account_name": null, "transfer_id": "tr_1RWQcfPHHHwdjQjwZtsZqox6", "transfer_created": "2025-06-04T23:21:32.000Z", "balance_transaction_id": "txn_1RWQckPHHHwdjQjwRZSrO0tE", "balance_transaction_created": "2025-06-04T23:21:32.000Z", "automatic_payout_id": "po_1RXu75PHHHwdjQjwNGy9TPIx", "fee_incurred_at": "2025-06-02T16:48:13.000Z", "charge_id": "ch_3RTq8hPHHHwdjQjw1qxQ9aBj", "captured_amount": null, "captured_currency": null, "refund_id": "re_3RTq8hPHHHwdjQjw1QQUI2VO", "dispute_id": null, "card_brand": "MasterCard", "bin": "545660", "issuing_bank": "SUTTON BANK", "card_funding": "prepaid", "card_country": "US", "card_present": false, "fee_category": "network_cost", "card_scheme_fee": "0.000203", "interchange_fee": "0.000000", "non_transactional_card_scheme_fee": "0.000000", "discount_fee": "0.000000", "platform_application_fee": "0.000000", "total_amount": "0.000203", "fee_currency": "usd", "livemode": true }, { "platform_id": "acct_1GcldzAppfGnVJgH", "connected_account_id": "acct_1PzmZGPHHHwdjQjw", "connected_account_name": null, "transfer_id": "tr_1RWMxzPHHHwdjQjwOH8PHSiq", "transfer_created": "2025-06-04T19:27:15.000Z", "balance_transaction_id": "txn_1RWMxzPHHHwdjQjwwZu9lZMg", "balance_transaction_created": "2025-06-04T19:27:15.000Z", "automatic_payout_id": "po_1RXu75PHHHwdjQjwNGy9TPIx", "fee_incurred_at": "2025-06-02T16:49:15.000Z", "charge_id": "ch_3RTq8hPHHHwdjQjw1qxQ9aBj", "captured_amount": null, "captured_currency": null, "refund_id": "re_3RTq8hPHHHwdjQjw1QQUI2VO", "dispute_id": null, "card_brand": "MasterCard", "bin": "545660", "issuing_bank": "SUTTON BANK", "card_funding": "prepaid", "card_country": "US", "card_present": false, "fee_category": "network_cost", "card_scheme_fee": "0.000218", "interchange_fee": "0.000000", "non_transactional_card_scheme_fee": "0.000000", "discount_fee": "0.000000", "platform_application_fee": "0.000000", "total_amount": "0.000218", "fee_currency": "usd", "livemode": true } ``` ### Reports through Sigma or Stripe Data Pipeline (SDP) You can access this report data in [Sigma](https://docs.stripe.com/stripe-data/sigma.md) and [Stripe Data Pipeline](https://docs.stripe.com/stripe-data/data-pipeline.md) to run custom analyses and integrate network cost data into your existing workflows. Use the `connect_card_payments_fees_plan_level` and `connect_card_payments_fees_transaction_level` tables. In Stripe Data Pipeline, new platforms typically see data within 72 hours. Run this query to return the first 10 rows from the `connect_card_payments_fees_plan_level` table: ``` SELECT * FROM connect_card_payments_fees_plan_level LIMIT 10 ``` ### Reports through the network cost passthrough embedded component You can embed the [network cost passthrough embedded component](https://docs.stripe.com/connect/supported-embedded-components/network-cost-passthrough-report.md) in your application to have Stripe call the Reporting API for your connected accounts on your behalf. ### Reports in a connected account’s Stripe Dashboard If your connected account has access to the Stripe Dashboard, they can follow these steps to download their network cost reports: 1. Navigate to the **Reporting** -> **Reports** page. 1. Click **Network cost passthrough**. 1. Select the month in the dropdown. 1. Select the report to download. ## Network cost report Schema The following table outlines the key columns and their descriptions for understanding the IC+ plan-level and transaction-level reports. | Column name | Description | | ------------------------ | ----------------------------------------------------------------------------------------------------------------- | | `connected_account_id` | ID of the connected account. (For example, `acct_1234`) | | `connected_account_name` | Human-readable name of the connected account. | | `network_cost_category` | Category of network costs. `interchange`, `card_scheme`, `discount`, or `non_transactional_card_scheme`. | | `plan_name` | Name of network cost plan. (For example, `Volume Fee - POS Mastercard Debit/Prepaid`) | | `fee_incurred_month` | Start of the calendar month during which the fee was incurred. Measured in seconds since the Unix epoch. | | `variable_rate` | Variable rate applicable for the fee plan. | | `variable_volume_amount` | The total amount on which the `variable_rate` was applied. | | `fixed_rate` | Fixed fee amount applicable for the fee plan. | | `count` | The number of times `fixed_rate` was incurred. | | `fee_amount` | Total fee amount incurred, calculated as (`variable_rate` * `variable_volume_amount`) + (`fixed_rate` * `count`). | | `fee_currency` | Currency of `fee_amount`, `variable_volume_amount`, and `fixed_rate`. | | `billing_amount` | Total amount billed to the connected account. | | `billing_currency` | Currency of the `billing_amount`. | | `platform_id` | ID of the platform account. (For example, `acct_1234`) | The following table outlines the key columns and their descriptions related to the billing transactions associated with network cost recovery. Understand these columns to help clarify the financial interactions between connected accounts and the platform. | Column name | Description | | ----------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `connected_account_id` | ID of the connected account. (For example, `acct_1234`) | | `connected_account_name` | Human-readable name of the connected account. | | `transfer_id` | ID of the transfer or payment object that credited or debited the network costs on the connected account’s balance. (For example, `tr_1234` or `py_1234`) | | `platform_transfer_id` | ID of the transfer or payment object that credited or debited the network costs on the platform account’s balance. This maps to the `charge_id` or `transfer_id` of the corresponding row in the platform’s itemized Activity report. Activity report entries for these network costs have a `balance_transaction_reporting_category` of `platform_fee_transfer`. (Transactions prior to March 2026 have the category `charge` or `transfer`.) | | `transfer_created` | Time at which the transfer was created. Measured in seconds since the Unix epoch. | | `balance_transaction_id` | ID of the balance transaction that performed the change in the connected account’s balance. (For example, `bt_1234`) | | `balance_transaction_created` | Time at which the balance transaction was created. Measured in seconds since the Unix epoch. | | `automatic_payout_id` | ID of the automatic payout that contained the balance transaction. | | `fee_incurred` | Time at which the trigger of the fee (such as an authorization, charge, refund, or dispute) occurred. Measured in seconds since the Unix epoch. This matches the `activity_at` of the corresponding row in the platform’s itemized Activity report. | | `charge_id` | ID of the charge that this fee is associated with. (For example, `ch_1234` or `py_1234`) | | `source_transaction_id` | ID of the original charge that this fee is associated with. For direct charges, `source_transaction_id` is the same as `charge_id`. For destination charges, it’s the ID of the underlying charge settling on the platform account. (For example, `ch_1234`) | | `refund_id` | ID of the refund that this fee is associated with. | | `dispute_id` | ID of the dispute that this fee is associated with. | | `captured_amount` | Amount captured by the charge. Non-zero only on rows with `fee_category`=`platform_fee`. | | `captured_currency` | Currency of the `captured_amount`. | | `card_brand` | Brand of the card that this fee was incurred for. (For example, `Visa` or `MasterCard`) | | `bin` | BIN number of the card that this fee was incurred for. | | `issuing_bank` | The bank that issued the card that this fee was incurred for. | | `card_funding` | The funding type of the card that this fee was incurred for. (For example, `debit`, `credit`, or `prepaid`) | | `card_country` | The ISO country code for the country that the card was issued in. (For example, `US`) | | `card_present` | Boolean indicating whether the card was physically present at purchase. | | `fee_category` | `network_cost` or `platform_fee`. | | `card_scheme_fee` | Scheme fee amount incurred. | | `interchange_or_discount_fee` | Interchange or discount fee amount incurred. | | `non_transactional_card_scheme_fee` | Non-transactional scheme fee amount incurred. | | `platform_application_fee` | Platform application fee incurred, currency specified by `billing_currency`. | | `fee_currency` | Currency of the `card_scheme_fee`, `interchange_or_discount_fee`, and `non_transactional_card_scheme_fee`. | | `billing_amount` | Total amount of fees billed to the connected account. | | `billing_currency` | Currency of the `billing_amount` and `platform_application_fee`. | | `platform_id` | ID of the platform account. (For example, `acct_1234`) | ## Reconciling with the Platform’s Activity Reports The platform’s Activity reports include both the network costs they paid and the network costs they recouped from their connected accounts. The recouped costs have a `balance_transaction_reporting_category` of `platform_fee_transfer` and show the ID of the associated connected account. The amount recouped from a connected account can be greater than the fees charged for its transactions, due to unattributed, non-transactional scheme fees (such as Visa’s FANF or Mastercard’s MLF). The platform proportionally recoups those fees from connected accounts that use IC++, but the Activity report doesn’t include them in the network costs charged to the platform. To reconcile the Activity reports with the IC+ reports, match Activity report rows that have a `balance_transaction_reporting_category` of `platform_fee_transfer` with IC+ transactional report rows as follows: - **Charges**: Match the `charge_id` on the Activity report with the `platform_transfer_id` on the IC+ transactional report. - **Refunds and adjustments of network costs**: Match the `transfer_id` on the Activity report with the `platform_transfer_id` on the IC+ transactional report. - **All transactions**: Match the `activity_at` on the platform’s itemized Activity report with the `fee_incurred` on the IC+ transactional report.