# Process payments on a full account After your sub-entity has passed onboarding checks and has payment capabilities enabled, you can start processing payments on their behalf. The following payment methods are available in the United Kingdom (UK) and European Economic Area (EEA) if you're on the `Full` account type: - Visa - Mastercard - [Apple Pay](https://www.checkout.com/docs/payments/payment-methods/apple-pay.md) - [Cartes Bancaires](https://www.checkout.com/docs/payments/payment-methods/cartes-bancaires.md) - [Google Pay](https://www.checkout.com/docs/payments/payment-methods/google-pay.md) --- ## Request a payment for a single sub-entity If your customers are buying from only one sub-entity at a time, you can request a payment for a single sub-entity. If you want to charge a commission from the sub-entity for facilitating the transaction on your platform, there are three ways to apply commission: - Fixed commission amount in [minor currency units](https://www.checkout.com/docs/payments/accept-payments/format-the-amount-value.md) - Variable commission, as a percentage of the payment - Compound commission which is a fixed commission, with an additional variable commission as a percentage of the payment amount If you do not need to use Checkout.com to charge a commission, then omit the commission from your `amount_allocations` object. You can [transfer funds](https://www.checkout.com/docs/platforms/manage-sub-entity-balances/transfer-sub-entity-funds.md) from your sub-entities at a later stage. Call the [Request a payment or payout](https://api-reference.checkout.com/tag/Payments/#operation/requestAPaymentOrPayout) endpoint. In the request body, provide the following: - `source` – The source of payment. - `amount` - `currency` - `description` - `processing_channel_id` - `amount_allocations.id` – The sub-entity ID to link the payment with the sub-entity - `amount_allocations.amount` – The amount to be credited to your sub-entity's currency account, in [minor currency unit](https://www.checkout.com/docs/payments/accept-payments/format-the-amount-value.md). - `amount_allocations.commission.amount` – Fixed amount of commission in [minor currency unit](https://www.checkout.com/docs/payments/accept-payments/format-the-amount-value.md), if applicable - `amount_allocation.commission.percentage` – The percentage of commission, if applicable In the following example, the request charges a fixed commission of 2 USD: > **Information** > > Your base URL's `{prefix}` value is unique to your account and environment. To learn how to retrieve your base URLs for the sandbox and production environments, see [API endpoints](https://www.checkout.com/docs/developer-resources/api/api-endpoints.md). **Production** `POST` `https://{prefix}.api.checkout.com/payments` **Sandbox** `POST` `https://{prefix}.api.sandbox.checkout.com/payments` ```json { "source": { "type": "token", "token": "tok_4gzeau5o2uqubbk6fufs3m7p54" }, "amount": 1000, "currency": "USD", "reference": "ORD-5023-4E89", "description": "Purchase basket", "processing_channel_id": "pc_hpswyyx23geezflc2ocz3exn4y", "amount_allocations": [ { "id": "ent_125673kjsdhfksjdhf", "amount": 1000, "commission": { "amount": 200 } } ] } ``` --- ## Captures and refunds for a single sub-entity payment To manage the funds flow between you and your sub-entity, include the `amount_allocations` object in the capture and refund requests. If you do not include it, we apply the following default logic. For captures, the amount is credited to the sub-entity's currency account balance and the commission credited to your platform. For refunds, the amount is debited from the sub-entity’s currency account balance and the commission debited from your platform. If you include the `amount_allocations` object in the refund request, it debits funds from the sub-entity specified. If you include a `commission` in the object, it debits this amount from your platform’s balance. The split information included in an authorization request is overwritten if split information is also supplied in any subsequent requests. For example, if split information is submitted in both the authorization and a capture request, the information in the capture request determines how the funds are split. ### Full capture and refund with a single sub-entity For full captures and refunds without the `amount_allocations` object, we always apply the `amount_allocations` object provided in the original authorization request, including the commission. ### Partial capture and refund with a single sub-entity For partial captures without the `amount_allocations` object, we apply the new amount specified in the partial capture to the sub-entity ID specified in the original request. The `amount` and `commission` of the original request are not considered. For example: 1. You request an authorization for 100 USD on behalf of your sub-entity, and provide their `id` in the `amount_allocations` object. 2. You submit a partial capture for 50 USD, and omit the `amount_allocations` object from your request. 3. 50 USD is captured to your platform's account. The `id` and `amount` fields in the `amount_allocations` object are automatically set to the sub-entity ID and capture amount, respectively. For partial refunds without the `amount_allocations` object, we apply the new amount specified in the partial refund to the sub-entity ID specified in the original capture request. We will always ignore the `amount` and `commission` of the original request. For example: 1. You request an authorization for 100 USD on behalf of your sub-entity, and provide their `id` in the `amount_allocations` object. 2. You request a capture for 100 USD with the same `amount_allocations` object as in the authorization. 3. You submit a partial refund for 50 USD, and omit the `amount_allocations` object from your request. 4. 50 USD isa debited from your platform's account. The id and amount fields in the `amount_allocations` object are automatically set to the sub-entity ID and refund amount, respectively. --- ## Request a split payment for multiple sub-entities > **Information** > > This is only available to marketplaces. When a customer buys items from multiple sub-entities on your platform, request a single payment from the customer and then split that amount appropriately across different sub-entities. You may also want to take a commission from each sub-entity for facilitating the transaction on your platform. For example, consider that a customer makes a purchase of 100 USD and the payment is split as: - Sub-entity A: 30 USD for a shirt - Sub-entity B: 50 USD for trainers - Sub-entity C: 20 USD for socks If you charge a commission, it is applied to each split, and cannot exceed the split amount. To request a split payment, call the [Request a payment or payout](https://api-reference.checkout.com/tag/Payments/#operation/requestAPaymentOrPayout) endpoint. In the request body, provide the following: - `source` – The source of payment. - `amount` - `currency` - `description` - `processing_channel_id` - `amount_allocations.id` – The sub-entity ID to link the payment with the sub-entity. - `amount_allocations.amount` – The split amount to be credited to your sub-entity's currency account, in [minor currency unit](https://www.checkout.com/docs/payments/accept-payments/format-the-amount-value.md). The sum of all split amounts must be equal to the `amount` value. - `amount_allocations.commission.amount` – Fixed amount of commission in [minor currency unit](https://www.checkout.com/docs/payments/accept-payments/format-the-amount-value.md), if applicable. - `amount_allocation.commission.percentage` – The percentage of commission, if applicable ### Request example In the following example request, we show three ways you can split the payment and specify commission for your platform: - Fixed commission amount – Charge the sub-entity a fixed commission amount of 2 USD. This sub-entity would receive 28 USD, and you would receive 2 USD in your currency account. - Variable commission – Charge the sub-entity a fee of 1.5%. This sub-entity would have 1.5% of 50 USD deducted, so would receive 49.25 USD. You would receive 0.75 USD in your currency account. - Compound commission – Charge the sub-entity a fee of 1.5%, plus a fixed fee of 2 USD. This sub-entity would have 1.5% of 20 USD deducted, plus another 2 USD deducted, so would receive 17.70 USD. You would receive 2.30 USD in your currency account. > **Information** > > Your base URL's `{prefix}` value is unique to your account and environment. To learn how to retrieve your base URLs for the sandbox and production environments, see [API endpoints](https://www.checkout.com/docs/developer-resources/api/api-endpoints.md). **Production** `POST` `https://{prefix}.api.checkout.com/payments` **Sandbox** `POST` `https://{prefix}.api.sandbox.checkout.com/payments` ```json { "source": { "type": "token", "token": "tok_4gzeau5o2uqubbk6fufs3m7p54" }, "amount": 10000, "currency": "USD", "reference": "ORD-5023-4E89", "description": "Multi-seller basket", "processing_channel_id": "pc_hpswyyx23geezflc2ocz3exn4y", "amount_allocations": [ { "id": "ent_pj6fv2w2wchfedchjjyobb4bni", "amount": 3000, "reference": "SALE-7627-8389", "commission": { "amount": 200 } }, { "id": "ent_kjx3tob2sxtl44wb7q7alwdu2m", "amount": 5000, "reference": "SALE-1729-3782", "commission": { "percentage": 1.5 } }, { "id": "ent_kklowryxmczwyoqe4z7yvcbwvy", "amount": 2000, "reference": "SALE-2127-9735", "commission": { "amount": 200, "percentage": 1.5 } } ] } ``` If successful, the payment is automatically associated with the correct sub-entity. The sub-entity's funds are held in their currency account. Your commissions are held in your currency account. We charge you, the platform, all of the fees for processing payments. **Possible error codes** This is a list of error codes specifically related to split payments. | Name | Description | | --- | --- | | `amount_allocations_id_duplicated` | Multiple sub-entities with the same ID. | | `amount_allocations_required` | The processing channel used in this payment request has the business model of payment facilitator or marketplace, but the `amount_allocations` object has not been provided. | | `refund_amount_exceeds_captured_amount` | Not within allowed range of the capture amount. | | `refund_amount_mismatch` | Not within allowed range of the payment action. | | `sub_entities_count_invalid` | Only one sub-entity ID can be requested in a Payment Facilitator business model. | | `sub_entities_max_count_exceeded` | Count exceeds maximum of 10 sub-entities in a list. | | `sub_entity_amount_invalid` | Field out of range, input is a decimal value, or amount is less than commission. | | `sub_entity_amount_required` | Empty amount in sub-entity. | | `sub_entities_capture_balances_not_found` | The payment in this refund request does not support refund splits. Try again without the `amount_allocations` object. | | `sub_entity_commission_amount_invalid` | Not within allowed range of the payment action, or input is a decimal value. | | `sub_entity_commission_percentage_invalid` | Not within allowed range (0%-100%), or value is too long. | | `sub_entity_id_cannot_be_entity_id` | The `amount_allocations` object only accepts sub-entity IDs, not client entity IDs. | | `sub_entity_id_invalid` | Format of the sub-entity ID in the sub-entity or sub-entities list is invalid. | | `sub_entity_id_required` | The `id` is missing from one or more items in the `amount_allocations` array. | | `sub_entity_not_found` | No sub-entity with the given ID was found in the sub-entities list. | | `sub_entity_reference_length_invalid` | Reference exceeds maximum length of 50 characters. | --- ## Captures and refunds for a multiple sub-entity payment To capture or refund a payment that has been split between multiple sub-entities, provide the split information in the request. You can request refunds for multiple sub-entities within a single capture or refund request. When you include the `amount_allocations` object in the refund request, funds are debited from the sub-entity specified. If you include a `commission` in the object, funds are debited from your platform’s balance. ### Full refund or capture without split The refund request applies the original split and debits the amount specified in the commission from your balance by default. You can include split instructions in your refund request to overwrite this. For example, consider the customer requests a full refund of all the items purchased in the 100 USD transaction. With default logic, this will be: - Sub-entity A: 28 USD, Platform: 2 USD - Sub-entity B: 49.25 USD, Platform: 0.75 USD - Sub-entity C: 17.70 USD, Platform: 2.30 USD ### Request example ```json { "source": { "type": "token", "token": "tok_4gzeau5o2uqubbk6fufs3m7p54" }, "amount": 10000, "currency": "GBP", "reference": "ORD-5023-4E89", "description": "Multi-seller basket", "processing_channel_id": "pc_hpswyyx23geezflc2ocz3exn4y", "amount_allocations": [ { "id": "ent_pj6fv2w2wchfedchjjyobb4bni", "amount": 3000, "reference": "SALE-7627-8389", "commission": { "amount": 200 } }, { "id": "ent_kjx3tob2sxtl44wb7q7alwdu2m", "amount": 5000, "reference": "SALE-1729-3782", "commission": { "percentage": 1.5 } }, { "id": "ent_kklowryxmczwyoqe4z7yvcbwvy", "amount": 2000, "reference": "SALE-2127-9735", "commission": { "amount": 200, "percentage": 1.5 } } ] } ``` To change how the refund is debited between you and the sub-entities, include a new split instruction. ### Request example The following example shows an `amount_allocations` object that specifies no commission. This funds the entire refund split amounts from the sub-entities’ balances. ```json { "id": "pay_kwrzpz644g6uxmdkpe5u6ruecm", "amount_allocations": [ { "id": "ent_pj6fv2w2wchfedchjjyobb4bni", "amount": 3000 }, { "id": "ent_kjx3tob2sxtl44wb7q7alwdu2m", "amount": 5000, "commission": { "amount": 0 } }, { "id": "ent_kklowryxmczwyoqe4z7yvcbwvy", "amount": 2000 } ] } ``` ### Partial refund or capture with split To partially refund a split payment, you must always include the `amount_allocations` object. This specifies which sub-entity or sub-entities the refund is related to. The refund is applied in the same way as explained in the [Full refund with new split](#Full_refund_or_capture_with_new_split) example. The amount specified in the commission will be debited from your account balance, and the remaining amount from the sub-entity balance. --- ## Incremental authorization Incremental authorization is not supported by the `amount_allocations` object. While it's possible to extend a split payment's authorization validity period, any increase to the amount is ignored when the payment is captured.