> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://docs.mangopay.com/api-reference/dispute-settlement/create-settlement-transfer/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.mangopay.com/_mcp/server. # Create a Settlement Transfer POST https://api.sandbox.mangopay.com/v2.01/{ClientId}/repudiations/{RepudiationId}/settlementtransfer Content-Type: application/json Create a Settlement Transfer Reference: https://docs.mangopay.com/api-reference/dispute-settlement/create-settlement-transfer ## Authentication - `Authorization` header (bearer token, required) — Bearer authentication of the form `Bearer `, where token is your auth token. If your platform is using a [proxy](/guides/sca/proxy-management) to take SCA-triggering action on behalf of users, you also need to integrate [mTLS authentication](/guides/sca/platform) and use the `api-mtls` base URL. ## Servers - `https://api.sandbox.mangopay.com` (Sandbox, default) - `https://api.mangopay.com` (Production) - `https://api-mtls.sandbox.mangopay.com` (mTLS Sandbox) - `https://api-mtls.mangopay.com` (mTLS Production) ## Request ### Path parameters - `ClientId` (string, required) — Platform's API account identifier, associated with the API key. - `RepudiationId` (string, required) — The unique identifier of the repudiation. ### Body (application/json) This endpoint expects a CreateASettlementTransferRequest. - `AuthorId` (string, required) — The unique identifier of the user at the source of the transaction. - `DebitedFunds` (CreateASettlementTransferRequestDebitedFunds, required) — Information about the debited funds. Please note that: - The `Currency` must be identical to that of the initial transaction. - The `Amount` cannot exceed the initial's transaction minus the fees. - `Fees` (CreateASettlementTransferRequestFees, required) — Information about the fees. Please note that: - The `Currency` must be identical to that of the initial transaction. - The `Amount` cannot exceed the initial's transaction. ## Response ### 200 Success - `Id` (string, optional) — Max length: 128 characters (see [data formats](/api-reference/overview/data-formats) for details) The unique identifier of the object. - `Tag` (string, optional) — Max. length: 255 characters Custom data that you can add to this object, such as unique identifiers in your system. To store multiple values, you can serialize them into a single string, for example a JSON object: `"{\"id_1\":AB123,\"id_2\":DE456}"`. - `CreationDate` (integer, optional) — Unix timestamp (UTC) of the date and time the object was created. - `ResultCode` (string, optional) — The code indicating the result of the operation. This information is mostly used to handle errors or for filtering purposes. - `ResultMessage` (string, optional) — The explanation of the result code. - `DebitedFunds` (SettlementTransferResponseDebitedFunds, optional) — Information about the debited funds. Please note that: - The `Currency` must be identical to that of the initial transaction. - The `Amount` cannot exceed the initial's transaction minus the fees. - `Fees` (SettlementTransferResponseFees, optional) — Information about the fees. Please note that: - The `Currency` must be identical to that of the initial transaction. - The `Amount` cannot exceed the initial's transaction. - `AuthorId` (string, optional) — The unique identifier of the user at the source of the transaction. - `CreditedUserId` (string, optional) — **Default value:** The unique identifier of the owner of the credited wallet. The unique identifier of the user whose wallet is credited. - `CreditedFunds` (SettlementTransferResponseCreditedFunds, optional) — Information about the credited funds (`CreditedFunds` = `DebitedFunds` - `Fees`). - `Status` (string, optional) — **Returned values:** `CREATED`, `SUCCEEDED`, `FAILED` The status of the transaction. - `ExecutionDate` (integer, optional) — Unix timestamp (UTC) of the date and time the status changed to `SUCCEEDED`, indicating that the transaction occurred. The statuses `CREATED` and `FAILED` return an `ExecutionDate` of `null`. - `Type` (string, optional) — **Returned values:** `PAYIN`, `TRANSFER`, `CONVERSION`, `PAYOUT` The type of the transaction. - `Nature` (string, optional) — **Returned values:** `REGULAR`, `REPUDIATION`, `REFUND`, `SETTLEMENT` The nature of the transaction, providing more information about the context in which the transaction occurred: - `REGULAR` – Relative to most of the transactions (pay-ins, payouts, and transfers) in a usual workflow. - `REPUDIATION` – Automatic withdrawal of funds from the platform's repudiation wallet as part of the dispute process (when the user has requested a chargeback). - `REFUND` – Reimbursement of a transaction to the user (pay-in refund), to a wallet (transfer refund), or of a payout (payout refund, only initiated by Mangopay). - `SETTLEMENT` – Transfer made to the repudiation wallet by the platform to settle a lost dispute. - `CreditedWalletId` (string, optional) — The unique identifier of the credited wallet. - `DebitedWalletId` (string, optional) — The unique identifier of the debited wallet. - `RepudiationId` (string, optional) — The unique identifier of the repudiation. ## Errors ### 400 Bad Request Error Bad Request - `Message` (string, optional) — Description of the error. - `Type` (string, optional) — The category of the error. - `Id` (string, optional) — Unique identifier of the error instance, useful when contacting Mangopay for support. - `Date` (double, optional) — Unix timestamp (UTC) of the date and time the error was triggered. - `errors` (map from string to string, optional, nullable) — Object containing one or more field-level errors. ## Types ### CreateASettlementTransferRequestDebitedFunds Information about the debited funds. Please note that: - The `Currency` must be identical to that of the initial transaction. - The `Amount` cannot exceed the initial's transaction minus the fees. - `Currency` (string, required) — **Allowed values:** The three-letter ISO 4217 code (EUR, GBP, etc.) of a supported currency (depends on feature, contract, and activation settings). The currency of the amount. - `Amount` (integer, required) — The amount of the currency in its minor unit. For example, EUR 12.60 would be represented as `1260` whereas JPY 12 would be represented as just `12`. ### CreateASettlementTransferRequestFees Information about the fees. Please note that: - The `Currency` must be identical to that of the initial transaction. - The `Amount` cannot exceed the initial's transaction. - `Currency` (string, required) — **Allowed values:** The three-letter ISO 4217 code (EUR, GBP, etc.) of a supported currency (depends on feature, contract, and activation settings). The currency of the amount. - `Amount` (integer, required) — The amount of the currency in its minor unit. For example, EUR 12.60 would be represented as `1260` whereas JPY 12 would be represented as just `12`. ### SettlementTransferResponseDebitedFunds Information about the debited funds. Please note that: - The `Currency` must be identical to that of the initial transaction. - The `Amount` cannot exceed the initial's transaction minus the fees. - `Currency` (string, optional) — **Allowed values:** The three-letter ISO 4217 code (EUR, GBP, etc.) of a supported currency (depends on feature, contract, and activation settings). The currency of the amount. - `Amount` (integer, optional) — The amount of the currency in its minor unit. For example, EUR 12.60 would be represented as `1260` whereas JPY 12 would be represented as just `12`. ### SettlementTransferResponseFees Information about the fees. Please note that: - The `Currency` must be identical to that of the initial transaction. - The `Amount` cannot exceed the initial's transaction. - `Currency` (string, optional) — **Allowed values:** The three-letter ISO 4217 code (EUR, GBP, etc.) of a supported currency (depends on feature, contract, and activation settings). The currency of the amount. - `Amount` (integer, optional) — The amount of the currency in its minor unit. For example, EUR 12.60 would be represented as `1260` whereas JPY 12 would be represented as just `12`. ### SettlementTransferResponseCreditedFunds Information about the credited funds (`CreditedFunds` = `DebitedFunds` - `Fees`). - `Currency` (string, optional) — **Allowed values:** The three-letter ISO 4217 code (EUR, GBP, etc.) of a supported currency (depends on feature, contract, and activation settings). The currency of the amount. - `Amount` (integer, optional) — The amount of the currency in its minor unit. For example, EUR 12.60 would be represented as `1260` whereas JPY 12 would be represented as just `12`. ## Examples ### 200 **Request** ```json { "body": { "AuthorId": "146476890", "DebitedFunds": { "Amount": 12, "Currency": "EUR" }, "Fees": { "Amount": 12, "Currency": "EUR" } } } ``` **Response** ```json { "Id": "159220385", "Tag": null, "CreationDate": 1672677972, "ResultCode": "000000", "ResultMessage": "Success", "DebitedFunds": { "Currency": "EUR", "Amount": 999 }, "Fees": { "Currency": "EUR", "Amount": 0 }, "AuthorId": "146476890", "CreditedUserId": null, "CreditedFunds": { "Currency": "EUR", "Amount": 999 }, "Status": "SUCCEEDED", "ExecutionDate": 1672677972, "Type": "TRANSFER", "Nature": "SETTLEMENT", "CreditedWalletId": "CREDIT_EUR", "DebitedWalletId": "148968396", "RepudiationId": "159196330" } ``` **SDK Code** ```python 200 from pprint import pprint import mangopay mangopay.client_id='your-client-id' mangopay.apikey='your-api-key' from mangopay.api import APIRequest handler = APIRequest(sandbox=True) from mangopay.resources import NaturalUser, Repudiation, SettlementTransfer from mangopay.utils import Money natural_user = NaturalUser.get('user_m_01HQK25M6KVHKDV0S36JY9NRKR') repudiation = Repudiation.get('repud_m_01HQT8ZRDVYBVT7T8240AWZD3D') settlement_transfer = SettlementTransfer( author = natural_user, credited_user_id = natural_user.id, debited_funds = Money(amount=4000, currency='GBP'), fees = Money(amount=0, currency='GBP'), repudiation = repudiation ) ``` ```javascript 200 const mangopayInstance = require('mangopay4-nodejs-sdk') const mangopay = new mangopayInstance({ clientId: 'your-client-id', clientApiKey: 'your-api-key', }) let myDispute = { Id: '192775714', RepudiationId: '192775715', } let mySettlementTransfer = { AuthorId: '180749339', DebitedFunds: { Currency: 'EUR', Amount: '1000', }, Fees: { Currency: 'EUR', Amount: 0, }, } const createSettlementTransfer = async (settlementTransfer, repudiationId) => { return await mangopay.Disputes.createSettlementTransfer( settlementTransfer, repudiationId ) .then((response) => { console.info(response) return response }) .catch((err) => { console.log(err) return false }) } createSettlementTransfer(mySettlementTransfer, myDispute.RepudiationId) ``` ```java 200 import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.mangopay.MangoPayApi; import com.mangopay.core.Money; import com.mangopay.core.enumerations.CurrencyIso; import com.mangopay.entities.SettlementTransfer; import com.mangopay.entities.Transfer; public class CreateSettlementTransfer { public static void main(String[] args) throws Exception { MangoPayApi mangopay = new MangoPayApi(); mangopay.getConfig().setClientId("your-client-id"); mangopay.getConfig().setClientPassword("your-api-key"); var userId = "user_m_01HQK25M6KVHKDV0S36JY9NRKR"; var repudiationId = "repud_m_01J2KVEDBG9ABZZAWRXFHAJ97H"; SettlementTransfer settlementTransfer = new SettlementTransfer(); settlementTransfer.setAuthorId(userId); settlementTransfer.setDebitedFunds(new Money(CurrencyIso.EUR, 200)); settlementTransfer.setFees(new Money(CurrencyIso.EUR, 0)); settlementTransfer.setTag("Created using the Mangopay Java SDK"); Transfer createSettlement = mangopay.getDisputeApi().createSettlementTransfer(settlementTransfer, repudiationId); Gson prettyPrint = new GsonBuilder().setPrettyPrinting().create(); String prettyJson = prettyPrint.toJson(createSettlement); System.out.println(prettyJson); } } ``` ```csharp 200 using MangoPay.SDK; using MangoPay.SDK.Core.Enumerations; using MangoPay.SDK.Entities; using MangoPay.SDK.Entities.POST; using Newtonsoft.Json; class Program { static async Task Main(string[] args) { MangoPayApi api = new MangoPayApi(); api.Config.ClientId = "your-client-id"; api.Config.ClientPassword = "your-api-key"; var repudiationId = "repud_m_01J354MZ35CNMZZMCENS3ERPQ3"; var repudiation = await api.Disputes.GetRepudiationAsync(repudiationId); SettlementTransferPostDTO settlementTransfer = new SettlementTransferPostDTO( repudiation.AuthorId, new Money { Currency = CurrencyIso.EUR, Amount = 1 }, new Money { Currency = CurrencyIso.EUR, Amount = 0 } ); var createSettelementTransfer = await api.Disputes.CreateSettlementTransferAsync(settlementTransfer, repudiationId); string prettyPrint = JsonConvert.SerializeObject(createSettelementTransfer, Formatting.Indented); Console.WriteLine(prettyPrint); } } ``` ```php 200 Config->ClientId = 'your-client-id'; $api->Config->ClientPassword = 'your-api-key'; $api->Config->TemporaryFolder = 'tmp/'; try { $repudiationId = '199385843'; $repudiation = $api->Disputes->GetRepudiation($repudiationId); $settlementTransfer = new \MangoPay\SettlementTransfer(); $settlementTransfer->AuthorId = $repudiation->AuthorId; $settlementTransfer->DebitedFunds = new \MangoPay\Money(); $settlementTransfer->DebitedFunds->Amount = 500; $settlementTransfer->DebitedFunds->Currency = "EUR"; $settlementTransfer->Fees = new \MangoPay\Money(); $settlementTransfer->Fees->Amount = 0; $settlementTransfer->Fees->Currency = "EUR"; $response = $api->Disputes->CreateSettlementTransfer($settlementTransfer, $repudiationId); print_r($response); } catch(MGPResponseException $e) { print_r($e); } catch(MGPException $e) { print_r($e); } ``` ```ruby 200 require 'mangopay' MangoPay.configure do |client| client.preproduction = true client.client_id = 'your-client-id' client.client_apiKey = 'your-api-key' client.log_file = File.join(Dir.pwd, 'mangopay.log') end myRepudiation = { Id: '194618172' } mySettlementTransfer = { Type: 'TRANSFER', Nature: 'SETTLEMENT', AuthorId: '194579896', DebitedFunds: { Currency: 'EUR', Amount: 10000 }, Fees: { Currency: 'EUR', Amount: 9000 } } createSettlementTransfer(myRepudiation[:Id], mySettlementTransfer) ``` ### Failed **Request** ```json { "body": { "AuthorId": "146476890", "DebitedFunds": { "Amount": 12, "Currency": "EUR" }, "Fees": { "Amount": 12, "Currency": "EUR" } } } ``` **Response** ```json { "Id": "159220127", "Tag": null, "CreationDate": 1672677824, "ResultCode": "003010", "ResultMessage": "The total DebitedFunds settled cannot exceed the initial transaction DebitedFunds available for settlement", "DebitedFunds": { "Currency": "EUR", "Amount": 1000 }, "Fees": { "Currency": "EUR", "Amount": 1 }, "AuthorId": "146476890", "CreditedUserId": null, "CreditedFunds": { "Currency": "EUR", "Amount": 999 }, "Status": "FAILED", "ExecutionDate": null, "Type": "TRANSFER", "Nature": "SETTLEMENT", "CreditedWalletId": "CREDIT_EUR", "DebitedWalletId": "148968396", "RepudiationId": "159196330" } ``` **SDK Code** ```python Failed from pprint import pprint import mangopay mangopay.client_id='your-client-id' mangopay.apikey='your-api-key' from mangopay.api import APIRequest handler = APIRequest(sandbox=True) from mangopay.resources import NaturalUser, Repudiation, SettlementTransfer from mangopay.utils import Money natural_user = NaturalUser.get('user_m_01HQK25M6KVHKDV0S36JY9NRKR') repudiation = Repudiation.get('repud_m_01HQT8ZRDVYBVT7T8240AWZD3D') settlement_transfer = SettlementTransfer( author = natural_user, credited_user_id = natural_user.id, debited_funds = Money(amount=4000, currency='GBP'), fees = Money(amount=0, currency='GBP'), repudiation = repudiation ) ``` ```javascript Failed const mangopayInstance = require('mangopay4-nodejs-sdk') const mangopay = new mangopayInstance({ clientId: 'your-client-id', clientApiKey: 'your-api-key', }) let myDispute = { Id: '192775714', RepudiationId: '192775715', } let mySettlementTransfer = { AuthorId: '180749339', DebitedFunds: { Currency: 'EUR', Amount: '1000', }, Fees: { Currency: 'EUR', Amount: 0, }, } const createSettlementTransfer = async (settlementTransfer, repudiationId) => { return await mangopay.Disputes.createSettlementTransfer( settlementTransfer, repudiationId ) .then((response) => { console.info(response) return response }) .catch((err) => { console.log(err) return false }) } createSettlementTransfer(mySettlementTransfer, myDispute.RepudiationId) ``` ```java Failed import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.mangopay.MangoPayApi; import com.mangopay.core.Money; import com.mangopay.core.enumerations.CurrencyIso; import com.mangopay.entities.SettlementTransfer; import com.mangopay.entities.Transfer; public class CreateSettlementTransfer { public static void main(String[] args) throws Exception { MangoPayApi mangopay = new MangoPayApi(); mangopay.getConfig().setClientId("your-client-id"); mangopay.getConfig().setClientPassword("your-api-key"); var userId = "user_m_01HQK25M6KVHKDV0S36JY9NRKR"; var repudiationId = "repud_m_01J2KVEDBG9ABZZAWRXFHAJ97H"; SettlementTransfer settlementTransfer = new SettlementTransfer(); settlementTransfer.setAuthorId(userId); settlementTransfer.setDebitedFunds(new Money(CurrencyIso.EUR, 200)); settlementTransfer.setFees(new Money(CurrencyIso.EUR, 0)); settlementTransfer.setTag("Created using the Mangopay Java SDK"); Transfer createSettlement = mangopay.getDisputeApi().createSettlementTransfer(settlementTransfer, repudiationId); Gson prettyPrint = new GsonBuilder().setPrettyPrinting().create(); String prettyJson = prettyPrint.toJson(createSettlement); System.out.println(prettyJson); } } ``` ```csharp Failed using MangoPay.SDK; using MangoPay.SDK.Core.Enumerations; using MangoPay.SDK.Entities; using MangoPay.SDK.Entities.POST; using Newtonsoft.Json; class Program { static async Task Main(string[] args) { MangoPayApi api = new MangoPayApi(); api.Config.ClientId = "your-client-id"; api.Config.ClientPassword = "your-api-key"; var repudiationId = "repud_m_01J354MZ35CNMZZMCENS3ERPQ3"; var repudiation = await api.Disputes.GetRepudiationAsync(repudiationId); SettlementTransferPostDTO settlementTransfer = new SettlementTransferPostDTO( repudiation.AuthorId, new Money { Currency = CurrencyIso.EUR, Amount = 1 }, new Money { Currency = CurrencyIso.EUR, Amount = 0 } ); var createSettelementTransfer = await api.Disputes.CreateSettlementTransferAsync(settlementTransfer, repudiationId); string prettyPrint = JsonConvert.SerializeObject(createSettelementTransfer, Formatting.Indented); Console.WriteLine(prettyPrint); } } ``` ```php Failed Config->ClientId = 'your-client-id'; $api->Config->ClientPassword = 'your-api-key'; $api->Config->TemporaryFolder = 'tmp/'; try { $repudiationId = '199385843'; $repudiation = $api->Disputes->GetRepudiation($repudiationId); $settlementTransfer = new \MangoPay\SettlementTransfer(); $settlementTransfer->AuthorId = $repudiation->AuthorId; $settlementTransfer->DebitedFunds = new \MangoPay\Money(); $settlementTransfer->DebitedFunds->Amount = 500; $settlementTransfer->DebitedFunds->Currency = "EUR"; $settlementTransfer->Fees = new \MangoPay\Money(); $settlementTransfer->Fees->Amount = 0; $settlementTransfer->Fees->Currency = "EUR"; $response = $api->Disputes->CreateSettlementTransfer($settlementTransfer, $repudiationId); print_r($response); } catch(MGPResponseException $e) { print_r($e); } catch(MGPException $e) { print_r($e); } ``` ```ruby Failed require 'mangopay' MangoPay.configure do |client| client.preproduction = true client.client_id = 'your-client-id' client.client_apiKey = 'your-api-key' client.log_file = File.join(Dir.pwd, 'mangopay.log') end myRepudiation = { Id: '194618172' } mySettlementTransfer = { Type: 'TRANSFER', Nature: 'SETTLEMENT', AuthorId: '194579896', DebitedFunds: { Currency: 'EUR', Amount: 10000 }, Fees: { Currency: 'EUR', Amount: 9000 } } createSettlementTransfer(myRepudiation[:Id], mySettlementTransfer) ```