Bulk Send enables one-time batch crypto transfers to multiple recipient addresses. It is suitable for payroll payouts, rebate/reward distributions, partner settlements, and revenue sharing for e-commerce/advertising/content platforms. You only need to submit a request containing multiple bulk send items. Cobo will validate each item (address format checks and compliance verification such as KYA) and then decide whether to proceed with on-chain transfers based on the execution mode.
After receiving a Bulk Send request, Cobo first validates all addresses in the request (including format validation and compliance checks such as KYA). execution_mode determines what happens in two situations: when any item fails validation, and — for Strict batches only — when the on-chain transfer step completes only partially (a partially completed sweep). execution_mode does not guarantee that every item succeeds once validation passes, and it does not provide transaction-level atomicity beyond these two situations. Always check each item’s own status and validation_status instead of assuming a single outcome for the whole batch.
Any item fails validation (for example, KYA rejected)
The batch status becomes Failed and every item is marked NotExecuted
Replace the problematic address(es) and resubmit the entire Bulk Send (must include all items)
Strict
The on-chain transfer step (sweep) completes only partially
The batch status becomes Failed
Inspect each item’s status individually before deciding whether and how to resubmit
Partial
One or more items fail validation
The validation failure is isolated: failed items are marked NotExecuted with validation_status: ValidationFailed; all validated items continue to on-chain transfer
Query failed items, replace addresses, and resend only the failed items
execution_mode governs only the failure paths described above. It does not guarantee that a Partial batch’s validated items will all succeed on-chain, or that a Strict batch is atomic beyond these paths. Always inspect each item’s status and validation_status individually, and check the batch status (PartiallyCompleted or Failed) before deciding whether to resend.
Any scenario where partial success is unacceptable
Use Partial (high throughput: partial failures allowed, retry later) — recommended whenever a single item’s validation failure must not block the rest of a valid batch:
Global payroll payouts (large volume; a few bad addresses should not block the whole batch)
Rebates/rewards airdrops (mixed address quality)
Tips/revenue distribution for content platforms; merchant payout distribution for e-commerce/ads platforms (retry is acceptable)
Impact summary:
Strict improves financial consistency by failing the whole batch on any validation failure (marking every item NotExecuted) or a partially completed sweep (batch status Failed), but increases operational overhead: a validation failure forces a full resubmission, while a partially completed sweep requires you to inspect each item’s status individually before deciding what to resubmit.
Partial isolates validation failures to the affected items so the rest of the batch proceeds, which scales better and is more automation-friendly, but requires a retry workflow for the failed items.
For Bulk Send on Ethereum, Cobo uses smart contracts to perform batch transfers. For other chains, Cobo uses regular transactions instead. In both cases, Cobo sends a callback message to your registered callback endpoint for each operation so that you can inspect the details and approve or deny execution. The exact mechanism may also vary based on your organization’s configuration — contact Cobo support for details. To learn how to set up and register a callback endpoint, see Introduction to Callbacks.
Since the contract addresses are fixed for each token, it is recommended to verify the contract addresses and function call information in your callback handler to ensure the callback completes correctly.
Trigger the resend workflow only when the status enters PartiallyCompleted or Failed. During Validating / Transfering, you may only display or monitor progress.
Implement webhook signature verification and idempotency handling (the same event may be replayed).
Under Strict, if any item fails validation, the batch fails and every item is marked NotExecuted.
Under Strict, if the on-chain transfer step completes only partially, the batch status becomes Failed.
For the validation-failure path, resubmission must include all items. For a partially completed sweep, inspect each item’s status individually before deciding what to resubmit — do not assume every item needs resubmission.
Steps (validation-failure path):
Query items and identify those with validation_status: ValidationFailed.
Replace the addresses for those items (or fix other parameters causing failures).
Resubmit a new Bulk Send containing all items.
For a partially completed sweep, query each item’s status individually and use that to decide which items (if any) to resubmit — do not default to resubmitting the full batch.
Always include business-traceable identifiers in description (e.g., batch_id + user_id/employee_id + period) for auditing, reconciliation, diagnosing failures, and address replacement.
Use different resend strategies for Strict vs Partial:
Strict: for a validation failure, retry must include all items; for a partially completed sweep, inspect each item’s status individually before deciding what to resubmit
Partial: retry only failed items (avoid duplicate payouts)
Webhook idempotency: use bulk_send_id + status + updated_timestamp as an idempotency key to avoid duplicated resend triggers.
Failure classification:
validation_status=ValidationFailed:prioritize replacing the address
status=Failed/NotExecuted: also recommended to replace the address (per your rule), and retain the failure reason for risk control and user messaging
Assistant
Responses are generated using AI and may contain mistakes.