Transfer Mechanisms

Transfer mechanisms control how funds are moved to merchants at the payment provider level. While Transfer Methods (AUTOMATIC, CUSTOM, EXTERNAL, DISABLED) control when transfers occur, transfer mechanisms determine the underlying payment flow used to execute those transfers.

Violet supports two transfer mechanisms:

Standard Transfers

Standard transfers use Stripe's separate charges and transfers modelarrow-up-right, where payment capture and merchant transfers are distinct operations.

How It Works:

  • Violet captures the payment from the shopper using your platform's Stripe account.

  • Stripe deducts its processing fees and adds the remaining funds to your platform's available balance.

  • A separate transfer operation is then initiated via Stripe's /v1/transfers API to move funds from your platform account to the merchant's connected account.

  • The charge and transfer are decoupled, meaning you control the timing and amounts transferred independently.

Key Characteristics:

  • Flexible timing: Transfers can occur immediately after capture, on a schedule, or triggered manually via API.

  • Independent operations: The charge and transfer are separate API calls, allowing for custom logic between them.

  • Multi-recipient support: A single charge can be split across multiple transfers to different connected accounts (useful for multi-merchant orders).

  • Merchant of record flexibility: Either the platform or connected account can appear as the merchant of record using the on_behalf_of parameter.

  • Cross-border support: Supports transfers between US, UK, EEA, Canada, and Switzerland (with 0.25% fee, waived within UK-EEA).

Application / Use Case:

  • Suitable for most marketplace and platform use cases.

  • Ideal when you need flexibility in transfer timing (immediate, batched, or custom).

  • Works with all transfer methods (AUTOMATIC, CUSTOM, EXTERNAL).

  • Best for platforms that need fine-grained control over when merchants receive funds.

  • Required when a single order needs to be split across multiple merchants.

Destination Payments

Destination payments use Stripe's destination charge modelarrow-up-right, where payment capture and merchant transfer occur atomically in a single operation.

How It Works:

  • Violet creates a Payment Intent with transfer_data.destination, specifying the merchant's connected account as the destination.

  • When the payment is captured, the full charge amount is immediately transferred from the platform to the destination account.

  • The application_fee_amount (your platform's commission) is then transferred back to the platform automatically.

  • This is a single coordinated transaction—no separate transfer API call is needed.

Key Characteristics:

  • Atomic operation: Payment capture and merchant transfer happen together—no separate transfer step required. This prevents timing mismatches between charging customers and paying merchants.

  • Platform as merchant of record: By default, your platform name appears on customer statements, providing a consistent brand experience across all merchants. (Use on_behalf_of to change the settlement merchant if needed.)

  • Automatic Application Fee objects: Stripe creates Application Feearrow-up-right objects automatically, simplifying commission tracking and platform revenue reconciliation. These appear in Stripe's reporting tools.

  • Simplified fund flow: Funds flow directly to the connected merchant account as part of the payment capture process—no need to manage transfer timing.

  • Cross-border considerations: If your platform and a connected account aren't in the same region, you must specify the connected account as the settlement merchant using on_behalf_of.

Application / Use Case:

  • Ideal for platform-centric marketplaces where the platform is the primary business entity customers interact with (similar to Airbnb or Lyft models).

  • Useful when you want automatic, immediate payouts to connected accounts without managing separate transfer operations.

  • Best suited for platforms that want explicit application fee tracking through Stripe's built-in reporting.

  • Recommended when you need the guarantee that payment capture and merchant fund distribution happen together.

  • Note: Destination charges work best for single-merchant transactions. For multi-merchant orders, standard transfers provide more flexibility.

circle-exclamation
circle-check

Choosing the Right Transfer Mechanism

Consideration
Standard Transfers
Destination Payments

Default

Yes

No

Merchant of Record

Can be platform or connected account

Platform is always merchant of record

Transfer Timing Control

Full control (immediate, batched, or custom)

Automatic upon capture

Stripe Fee Tracking

Manual reconciliation

Automatic Application Fee objects

Operation Type

Separate charge and transfer

Atomic single operation

Complexity

More flexible, slightly more complex

Simpler, more automated

Scheduled Transfers

Optional

Required

Geographic Reach

Limited to Stripe's supported transfer countries

Expanded reach via platform-originated charges

Multi-Merchant Orders

Supported (split across transfers)

Single merchant per charge recommended

When to Use Standard Transfers

Choose standard transfers when:

  • You need maximum flexibility over transfer timing

  • You want to implement custom conditions before transferring funds

  • Your merchants should appear as the merchant of record on customer statements

  • You're using CUSTOM or EXTERNAL transfer methods with manual control

When to Use Destination Payments

Choose destination payments when:

  • Your platform should appear on all customer statements (consistent branding)

  • You want simplified accounting with automatic Application Fee tracking

  • You need atomic guarantees that capture and transfer happen together

  • Your business model is similar to Airbnb, Lyft, or other platform-centric marketplaces

  • You need to support merchants in regions outside Stripe's standard transfer countries (when combined with scheduled transfers, destination payments can reach more countries)

Impact on Payout Account Onboarding

Your transfer mechanism configuration directly affects which merchants can receive STRIPE payout accounts versus EXTERNAL payout accounts during onboarding. This is because different transfer mechanisms have different country support requirements.

How Country Support Is Determined

Transfer Mechanism
Country Support Check
Technical Details

Standard Transfers

Stripe's supported transfer countries list

Uses the supported_transfer_countries from Stripe's CountrySpec API for your platform account's country

Destination Payments

Stripe's destination charge support

Checks if "stripe" is in the supported_payment_methods for the merchant's country

Onboarding Outcomes

When a merchant connects to your app:

  1. If their country supports your transfer mechanism → A STRIPE payout account is created (Express or Standard based on your configuration)

  2. If their country does NOT support your transfer mechanism → An EXTERNAL payout account is created automatically

circle-exclamation

Example: Country Support Differences

Consider a merchant from Country X:

  • With Standard Transfers: If Country X is in Stripe's supported transfer countries list, they get a STRIPE account

  • With Destination Payments: If Country X doesn't support Stripe destination charges (even if it supports standard transfers), they get an EXTERNAL account

This means switching your transfer mechanism could change which of your merchants require EXTERNAL accounts.

For more details on payout account types and the onboarding flow, see Prism Payout Accounts.

Configuration

Transfer mechanism settings can be configured at two levels:

  • App Level: The default transfer mechanism for all merchants connected to your app

  • Merchant Level: Override the app-level setting for specific merchants with different requirements

circle-info

Ready to configure transfer mechanisms? Transfer mechanism settings are managed by the Violet team. To learn more or configure a transfer mechanism for your app or specific merchants, please reach out to Violetenvelope.

Last updated

Was this helpful?