---
title: 'Per-account partner fees, micro-deposits, and amount-based fee timing on virtual accounts'
description: 'Pin a partner fee to each virtual account, collect deposits of any size (including $0.01 micro-deposits), and a new rule for when BlindPay fees are charged: below $100 on your monthly invoice, $100 and above at transaction time.'
date: 2026-08-16
category: New Feature
categoryType: feature
isChangelog: true
---

Virtual accounts get three upgrades: partner fees can now be set per account instead of one setting for the whole instance, deposits of any size are processed (micro-deposits included), and BlindPay fees are charged on your invoice or at transaction time depending on the deposit amount.

<!--more-->

## TL;DR

- New `partner_fee_id` field on virtual account create and update: pin a partner fee to one account, overriding the instance-wide default
- Every deposit now creates a payin, including $0.01 account-verification micro-deposits; at least $0.01 always reaches the linked wallet
- BlindPay fees on deposits below $100.00 accrue to your monthly invoice (`billing_fee_amount`); deposits of $100.00 and above are charged at transaction time (`transaction_fee_amount`)

## Partner fees per virtual account

Until now, virtual accounts supported a single partner fee for the entire instance: one fee configuration flagged for virtual accounts applied to every account's deposits. You can now pin a fee to each account individually.

Pass `partner_fee_id` when creating a virtual account, or set it later with the update endpoint:

```bash
curl --request POST \
  --url https://api.blindpay.com/v1/instances/in_000000000000/customers/re_000000000000/virtual-accounts \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
    "banking_partner": "cfsb",
    "token": "USDC",
    "blockchain_wallet_id": "bw_000000000000",
    "partner_fee_id": "pf_000000000000"
  }'
```

How the two levels interact:

- A fee pinned to an account **overrides the instance-wide default** for that account's deposits.
- Accounts without a pin keep using the instance-wide default (the fee configuration created with `virtual_account_set: true`), so existing setups keep working unchanged.
- Updating an account with `partner_fee_id: null` clears the pin and falls back to the default.
- Deleting a fee configuration automatically unpins it from any accounts referencing it; those accounts revert to the default.

The dashboard's virtual account create dialog and edit pane both gained a partner fee selector.

## Micro-deposits are now collected

Deposits below $5.00 into a virtual account used to be ignored. Every deposit of any size now creates a payin, including the $0.01 account-verification micro-deposits sent by services like Plaid and Square, and always delivers at least $0.01 of stablecoin to the linked wallet.

Because fees can exceed a small deposit, partner fee collection is now partial rather than all-or-nothing: the fee collects as much as the deposit can bear while preserving the $0.01 delivery floor. A $5.00 fee on a $5.00 deposit collects $4.99; a micro-deposit collects nothing.

## When BlindPay fees are charged

BlindPay fees on virtual account deposits now follow an amount-based rule:

| Deposit amount | When the BlindPay fee is charged | Field on the payin |
| --- | --- | --- |
| Below $100.00 | End of the billing cycle, on your monthly invoice | `billing_fee_amount` |
| $100.00 or more | At the time of the transaction, deducted from the delivered amount | `transaction_fee_amount` |

This keeps small deposits from being consumed by fees at transaction time while charging larger deposits immediately. Instances configured for end-of-month billing keep accruing every fee to `billing_fee_amount`, regardless of amount.

## What you need to do

Nothing is required. Existing virtual accounts keep their behavior: the instance-wide partner fee still applies to accounts without a pin, and fee totals are unchanged, only the timing of when small-deposit fees are charged moves to the monthly invoice. If you reconcile payins, read both `billing_fee_amount` and `transaction_fee_amount` rather than assuming one of them.

To adopt per-account fees, create additional fee configurations and pass `partner_fee_id` on virtual account create or update.

## Learn more

- [Virtual accounts guide](/docs/virtual-accounts): fee rules, account types, and statuses
- [Partner fees guide](/docs/learn/partner-fees): defaults vs. per-account pins for virtual accounts, and quotes
- [Create a virtual account](/docs/virtual-accounts-create): full request reference
