Scheduled Transfers
Scheduled transfers give channels granular control over when merchant payouts are executed. Instead of transferring funds immediately after payment capture, you can configure Violet to hold distributions until specific conditions are met—such as order fulfillment—and batch multiple transfers together on a schedule.
Why Use Scheduled Transfers?
The Problem with Immediate Transfers
In a traditional AUTOMATIC transfer setup, funds are transferred to merchants immediately after payment capture. While this provides fast payouts, it creates challenges for certain business models:
Fulfillment Risk: Merchants receive payment before shipping, increasing exposure if orders are cancelled or not fulfilled
High Transaction Volume: Each order generates a separate transfer, leading to numerous small transactions
Chargeback Exposure: Funds are already with the merchant when disputes arise
Operational Complexity: Difficult to reconcile when transfers happen at unpredictable times
How Scheduled Transfers Help
Scheduled transfers address these challenges by introducing two powerful configuration options:
Fulfillment Requirements: Only transfer funds for orders that have been shipped or delivered
Batched Transfers: Aggregate multiple orders into a single transfer on a schedule
Configuration Options
Scheduled transfer settings are part of your app's payment configuration. Contact your Violet representative to enable these features.
Scheduled transfer settings can be configured at two levels:
App Level: Settings apply to all merchants connected to your app by default
Merchant Level: Override app-level settings for specific merchants who require different transfer schedules
This flexibility allows you to set sensible defaults at the app level while accommodating merchants with unique business requirements or risk profiles.
Transfer Schedule Settings
require_fulfillment
require_fulfillmentControls whether bag fulfillment status is required before transfers are executed.
false (default)
Transfers execute immediately after payment capture, regardless of fulfillment status
true
Transfers only execute for bags in SHIPPED or DELIVERED status
When to use require_fulfillment: true:
You want to ensure merchants are paid only after orders ship
Your business model involves dropshipping or print-on-demand where fulfillment timing varies
You want to reduce financial risk from unfulfilled orders
Merchants have historically had fulfillment issues
time_interval_seconds
time_interval_secondsSets the time interval in seconds after which a distribution is eligible to be transferred.
0 (default)
Transfers execute immediately (no batching)
86400
Distribution eligible for transfer after 1 day (24 hours)
604800
Distribution eligible for transfer after 7 days (7 days)
Custom value
Any interval in seconds
When to use batched transfers:
You want to reduce the number of individual transfer transactions
You want to ensure distributions are held for a certain amount of time before being paid out
Merchants prefer receiving consolidated payouts
You're processing high volumes of small orders
How It Works
Architecture Overview
When scheduled transfers are enabled, Violet uses a queued distribution system:
Eligibility Criteria
A queued distribution becomes eligible for transfer when ALL of the following are true:
Fulfillment Check (if
require_fulfillment: true):Bag status is
SHIPPEDorDELIVERED
Time Interval Check (if
time_interval_seconds > 0):This amount of time has passed since the distribution was created
Standard Checks:
Merchant has a valid, active payout account
No holds or restrictions on the merchant account
Processing Schedule
Queued distributions are processed by a nightly job that runs at 11:00 PM UTC daily. The job:
Finds all eligible queued distributions
Groups distributions by merchant
Creates a single transfer per merchant (batching all eligible distributions)
Updates distribution and transfer statuses
Sends
TRANSFER_SENTwebhook events
Use Cases
Use Case 1: Dropshipping Marketplace
Scenario: A marketplace connects shoppers with dropship merchants who fulfill orders from third-party suppliers. Fulfillment times vary from 2-14 days.
Challenge: With immediate transfers, merchants receive payment before confirming they can fulfill the order. If a supplier is out of stock, the merchant has already been paid.
Solution:
Result: Merchants receive payment only after marking orders as shipped, ensuring they've confirmed fulfillment capability before receiving funds.
Use Case 2: High-Volume, Low-Value Orders
Scenario: A social commerce platform processes thousands of small orders daily, averaging $15-25 per order.
Challenge: Each order generates a separate transfer, creating thousands of micro-transactions. This increases payment processing overhead and makes reconciliation difficult.
Solution:
Result: Merchants receive a single daily transfer aggregating all their orders from the past 24 hours, reducing transaction volume by 90%+ and simplifying reconciliation.
Use Case 3: Risk-Conscious Marketplace
Scenario: A marketplace has experienced chargebacks and disputes when merchants fail to fulfill orders or ship counterfeit goods.
Challenge: By the time a dispute is raised, funds have already been transferred to the merchant, making recovery difficult.
Solution:
Result:
Funds are held until orders are confirmed shipped
Weekly batching provides a 7-day buffer for issues to surface
More time to identify and address problems before merchant payout
Use Case 4: Predictable Payout Schedules
Scenario: A B2B marketplace wants to offer merchants predictable "payday" schedules rather than sporadic transfers.
Challenge: Merchants prefer knowing exactly when to expect payments for cash flow planning.
Solution:
Result: Merchants receive weekly payouts on a predictable schedule, improving their ability to manage cash flow and plan expenses.
Combining with Transfer Methods
Scheduled transfers work with different transfer methods:
AUTOMATIC
Distributions are queued and processed by the nightly job based on your schedule settings
CUSTOM
Distributions are queued; you can trigger transfers via API or let the nightly job process them
EXTERNAL
Not applicable—transfers handled outside Violet
DISABLED
Not applicable—no distributions created
Monitoring Queued Distributions
Dashboard Visibility
Merchants can view their pending (queued) distributions in the Merchant Dashboard. The distributions will show:
Status:
PENDING(waiting for transfer)Associated order and bag information
Expected payout timing based on your configuration
API Access
Use the Search Distributions API to query queued distributions:
Webhook Events
When scheduled transfers are processed, you'll receive standard transfer webhook events:
TRANSFER_SENT: Transfer successfully created and sent to merchantTRANSFER_FAILED: Transfer failed (includes error details)
Best Practices
Setting Appropriate Intervals
Business Type
Recommended time_interval_seconds
High-volume, small orders
86400 (daily)
Standard e-commerce
0 or 86400
B2B with large orders
604800 (weekly)
Dropship/POD
0 with require_fulfillment: true
Communicating with Merchants
When enabling scheduled transfers, communicate clearly with merchants about:
When they can expect to receive payouts
How fulfillment status affects their payouts (if applicable)
Where to view pending distributions in the dashboard
Handling Edge Cases
Partial Fulfillment: If a bag is partially fulfilled, transfers are only created for the fulfilled portion when require_fulfillment is enabled.
Refunds: Refund distributions are processed separately and follow standard refund timing, not the scheduled transfer settings.
Manual Overrides: You can still trigger transfers manually via the API for urgent situations, bypassing the scheduled processing.
FAQ
Q: What happens to distributions if a merchant doesn't fulfill an order?
A: With require_fulfillment: true, distributions remain in PENDING status indefinitely until the bag is marked as SHIPPED or DELIVERED. Consider implementing processes to handle long-unfulfilled orders.
Q: Can I have different schedules for different merchants?
A: Yes! Transfer schedule settings can be configured at both the app level (applying to all merchants by default) and at the merchant level (overriding app defaults for specific merchants). This allows you to set standard defaults while customizing schedules for merchants with unique requirements. Reach out to Violet to configure merchant-specific transfer schedules.
Q: What time zone does the nightly job use?
A: The processing job runs at 11:00 PM UTC daily. Plan your merchant communications accordingly based on their local time zones.
Q: Can I trigger a transfer manually before the scheduled time?
A: Yes, you can use the Transfer Funds API to manually trigger transfers for specific orders or bags at any time.
Q: How do I enable scheduled transfers for my app?
A: Transfer schedule settings are managed by the Violet team. Reach out to Violet to discuss your requirements and configure scheduled transfer settings for your app or specific merchants.
Last updated
Was this helpful?