Key features
The key features of the split payments marketplace include:- Split payments: Define how the total payment amount is distributed among different recipients.
- Flexible configuration: Supports absolute-based splits.
- Integration with providers: Splits can be executed by payment providers that support this functionality.
- Detailed handling of fees: The system allows for fine-tuning of how transaction fees and chargebacks are managed.
- Onboarding transfer: Allows the transfer of onboardings between different recipients.
1. Onboarding
Yuno’s onboarding model is crafted to assist marketplaces in seamlessly connecting and managing their submerchants across multiple payment providers. Central to this system is the recipient object, which represents each individual submerchant within the marketplace ecosystem.- Each marketplace owner is represented in Yuno as an organization.
- Within an organization, one or more accounts can be created, each configured with its own set of connections to payment providers (e.g., Stripe, Adyen, dLocal).
- For every account, the marketplace can register one or more recipients — these are the submerchants to be onboarded.
- Each recipient is then linked individually to one or more connections, depending on which payment processors they will use.
- A single, unified onboarding process.
- Independent status tracking per provider.
- Easy scaling of submerchant operations across providers.
Onboarding flows
Yuno offers two onboarding flows for submerchants, providing flexibility based on the submerchant’s current status with payment providers.-
Pre-onboarded accounts: If a submerchant has already completed the onboarding process with a specific provider (e.g., through an external dashboard or platform), the marketplace can supply the corresponding
recipient_idduring creation. In this scenario, no further onboarding is required, and the status will be immediately set toSUCCEEDED(onboardings.type=PREVIOUSLY_ONBOARDED). -
Dynamic onboarding: If no credentials are provided, Yuno will initiate the onboarding process for the chosen provider (
onboardings.type=ONE_STEP_ONBOARDINGorTWO_STEP_ONBOARDING). This process may include:- Form submission or redirection to a hosted onboarding page.
- Uploading legal or financial documentation.
- Completing KYC/KYB validation steps.
| Status | Description |
|---|---|
CREATED | Initial state after creation; onboarding process not yet started. |
PENDING | Awaiting provider review after data submission. |
SUCCEEDED | The recipient is fully onboarded and active. |
DECLINED | The onboarding was rejected by the provider and cannot be retried. |
BLOCKED | The provider has explicitly blocked the onboarding due to compliance issues. |
CANCELED | The onboarding process was voluntarily canceled before completion. |
REJECTED | The onboarding failed due to incorrect data or failed validations. |
ERROR | A technical error occurred during the onboarding flow. |
Workflow
The onboarding workflow follows a structured process that ensures submerchants are properly integrated into the marketplace ecosystem. The diagram below illustrates the complete flow from initial setup to payment processing.
- Organization & Account Setup: The marketplace owner creates an organization in Yuno and configures accounts with payment provider connections.
-
Recipient Creation: For each submerchant, the marketplace creates a recipient using the Create Recipients API endpoint, specifying either:
provider_recipient_idfor pre-onboarded submerchants- Provider connection details for new onboarding
-
Onboarding Execution:
- Pre-onboarded: Status immediately becomes
SUCCEEDED - New onboarding: Yuno initiates provider-specific flow with status progression from
CREATED→PENDING→SUCCEEDED
- Pre-onboarded: Status immediately becomes
-
Payment Creation: Once recipients are successfully onboarded (
SUCCEEDEDstatus), the marketplace can create payments with thesplit_marketplaceobject. - Split Processing: The payment provider executes the split according to the defined distribution, transferring funds to each recipient’s designated share.
2. Payment split integration
In this section, we explore how thesplit_marketplace object is used to divide a payment among multiple recipients. This object is an array where each entry specifies a recipient and their corresponding share of the payment.
In this step, reference recipients created in Step 1 (Onboarding).For
type = PURCHASE or MARKETPLACE, include the recipient_id of that recipient.For PAYMENTFEE, VAT and COMMISSION, recipient_id is optional.| Field | Type | Description | Mandatory | Example Value |
|---|---|---|---|---|
recipient_id | string | The unique identifier for the recipient within theUse the ID of a recipient created in Step 1 (Onboarding) when type is PURCHASE or MARKETPLACE. | Conditional | rec_test123 |
provider_recipient_id | string | The recipient’s ID as provided by the payment provider, if applicable. | Conditional | prov_rec_abc |
| Note: | You must provide either recipient_id or provider_recipient_id.For marketplace owners (type=COMMISSION), provider_recipient_id is optional if not required by the provider. | |||
type* | enum | The transaction detail item type. Options include PURCHASE, PAYMENTFEE, VAT, COMMISSION, MARKETPLACE.recipient_id is mandatory for PURCHASE and MARKETPLACE. | Conditional | PURCHASE |
| Note: | Propagation considerations
| |||
merchant_reference | string | An identifier for the payment transaction. This is optional. If not specified, the main payment’s merchant reference will be used for all split transactions. (MAX 255; MIN 3 characters). | No | AAB01-432245 |
amount* | struct | Specifies the amount for the split. | Yes | |
value* | number | The monetary value of the split (e.g., 7500 for 75.00). | Yes | 7500 |
currency* | enum | The currency in which the payment is made (ISO 4217, 3 characters). | Yes | COP |
liability | struct | Information about the recipient’s liability for fees and chargebacks, if applicable. | No | |
processing_fee | enum | Specifies who is responsible for the transaction fee: MERCHANT, RECIPIENT, SHARED. | No | MERCHANT |
chargebacks | boolean | Indicates if the recipient is liable for chargebacks (true if they are responsible). | No | false |
Example using provider recipients directly
Example using Yuno recipients
3. Onboarding transfer
The goal of this flow is to allow the transfer of onboardings between recipients in a controlled and reversible way. The process has several stages. First, the initial recipient is created with its onboarding (a prior step). Later, when a transfer is required, follow the steps to create the new recipient, use the transfer service, and, if needed, reverse the operation.- Recipient and onboarding (before any transfer): Create recipient, then create onboarding.
This step happens in advance when a new recipient is created and its onboarding is assigned. It is not part of the transfer itself.
- Create the new recipient and onboarding: Use the create recipient and create onboarding endpoints to set up the recipient and onboarding that will receive the transfer.
-
Transfer the onboarding: Use transfer onboarding and include:
recipient_id: the target recipient IDonboarding_id: the onboarding to transfer
-
Reverse the transfer (optional): Use reverse onboarding to revert the previous transfer, providing the same
recipient_idandonboarding_id.
onboarding object includes a history element that stores the complete traceability of the onboarding. This history includes not only updates to the object but also events related to transfers between recipients, ensuring full lifecycle visibility.
4. Standalone Transfers
Merchants often need to send funds to recipients (sellers, vendors, contractors) independently of a payment lifecycle, directly from their organization balance. This is known as a Standalone Transfer or Forward Transfer. This feature allows you to:- Distribute sales proceeds to sellers in a Marketplace.
- Pay contractors after completed jobs (Gig Economy).
- Manage revenue sharing for subscriptions or commission payments for affiliates.
- Execute bulk payouts to multiple recipients.
Transfer Statuses
A standalone transfer flow goes through multiple states depending on the provider’s response and any subsequent reversals:| Status | Description | Terminal? |
|---|---|---|
CREATED | Transfer flow created, not yet sent to provider. | No |
PENDING | Sent to provider, awaiting confirmation. | No |
SUCCEEDED | Forward transfer completed successfully. | No |
DECLINED | Provider declined the transfer. | Yes |
ERROR | Provider error during processing. | Yes |
REVERSED | Reverse transaction completed successfully. | Yes |
Transactions and Reversals
In the Standalone Transfer Flow, forward and reverse operations are treated as identical independent transactions to maintain an explicit audit trail. This means:- Forward Transfer (
SPLIT_TRANSFER): You create a transfer moving funds from your balance to the recipient’s connection. - Reverse Transfer (
SPLIT_TRANSFER_REVERSE): You can fully or partially reverse theSPLIT_TRANSFERto return the funds to your balance. The original forward transfer must be inSUCCEEDEDstatus for a reverse to take place.
Idempotency
Both the creation and reversal of standalone transfers require an Idempotency Key via theX-Idempotency-Key header. This allows you to safely retry requests without accidentally duplicating fund distribution. These keys are retained for 24 hours. Duplicate requests using the same combination of account_id and idempotency key will return the original transfer object.
Validations
In this section, we outline the necessary validations to ensure successful split payments.- The total of all splits must match the overall payment amount.
- For each split, an object must be sent for every participant, ensuring the sum of amounts equals the total payment amount.
- In scenarios where a direct recipient ID is not needed for the marketplace owner (e.g., with Adyen), the
typefield can serve as a flag (e.g.,COMMISSION) to denote the marketplace owner’s share, making theprovider_recipient_idoptional for that specific split. - Either
recipient_idorprovider_recipient_idmust be included for the split, but not both. - If any required fields are missing or invalid, the request will result in an error.
- If using multiple payment providers for split payments, we recommend utilizing the recipients object, as it allows defining more than one provider for each recipient.
API endpoints involved
This section lists the API endpoints involved in managing split payments.- Create recipients: POST:
https://api-sandbox.y.uno/v1/recipients - Create onboarding: POST:
https://api-sandbox.y.uno/v1/recipients/{recipient_id}/onboardings - Continue onboarding: POST:
https://api-sandbox.y.uno/v1/recipients/{recipient_id}/onboardings/{onboarding_id}/continue - Create payment: POST:
https://api-sandbox.y.uno/v1/payments - Capture authorization: POST:
https://api-sandbox.y.uno/v1/payments/{id}/transactions/{transaction_id}/capture - Refund payment: POST:
https://api-sandbox.y.uno/v1/payments/{id}/transactions/{transaction_id}/refund - Cancel or refund a payment: POST:
https://api-sandbox.y.uno/v1/payments/{id}/cancel-or-refund - Cancel or refund a payment with transaction: POST:
https://api-sandbox.y.uno/v1/payments/{id}/transactions/{transaction_id}/cancel-or-refund - Transfer onboarding: POST:
https://api-sandbox.y.uno/v1/recipients/{recipient_id}/onboardings/{onboarding_id}/transfer - Reverse onboarding transfer: POST:
https://api-sandbox.y.uno/v1/recipients/{recipient_id}/onboardings/{onboarding_id}/reverse-transfer - Create standalone transfer: POST:
https://api-sandbox.y.uno/v1/split-marketplace/transfers - Get standalone transfer: GET:
https://api-sandbox.y.uno/v1/split-marketplace/transfers/{transfer_id} - Reverse standalone transfer: POST:
https://api-sandbox.y.uno/v1/split-marketplace/transfers/{transfer_id}/reverse