> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://docs.mangopay.com/api-reference/refunds/list-refunds-payin/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.mangopay.com/_mcp/server. # List Refunds for a PayIn GET https://api.sandbox.mangopay.com/v2.01/{ClientId}/payins/{PayInId}/refunds List Refunds for a PayIn Reference: https://docs.mangopay.com/api-reference/refunds/list-refunds-payin ## 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. - `PayInId` (string, required) — The unique identifier of the pay-in. ### Query parameters - `Status` (string, optional) — **Allowed values:** `CREATED`, `SUCCEEDED`, `FAILED` The status of the transaction. You can filter on multiple values by separating them with a comma. - `ResultCode` (string, optional) — The code indicating the result of the operation. You can filter on multiple values by separating them with a comma. - `BeforeDate` (integer, optional) — The date before which the transaction was created (based on the transaction's `CreationDate` parameter). You can filter on a specific time range by using both the `AfterDate` and `BeforeDate` query parameters. - `AfterDate` (integer, optional) — The date after which the transaction was created (based on the transaction's `CreationDate` parameter). You can filter on a specific time range by using both the `AfterDate` and `BeforeDate` query parameters. ## Response ### 200 Success - `Array (Refunds)` (list of ListRefundsForAPayInResponseArrayRefundsItems, optional) — The list of refunds created by the platform. ## Types ### ListRefundsForAPayInResponseArrayRefundsItems - `Object (Refund)` (PayInRefundResponse, optional) ### PayInRefundResponse - `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. - `AuthorId` (string, optional) — The unique identifier of the user at the source of the initial 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. - `DebitedFunds` (PayInRefundResponseDebitedFunds, optional) — **Default value:** The amount and currency values of the `DebitedFunds` of the initial transaction. Required if the `Fees` property is sent. Information about the debited funds. The refund `DebitedFunds.Amount`: - Takes by default the amount and currency of the initial transaction. - Must be set manually to perform a partial refund. - Cannot exceed the initial transaction `CreditedFunds.Amount` when set manually. This also applies to the sum of debited funds when making multiple partial refunds. - `CreditedFunds` (PayInRefundResponseCreditedFunds, optional) — Information about the credited funds (`CreditedFunds` = `DebitedFunds` - `Fees`). - `Fees` (PayInRefundResponseFees, optional) — **Default value:** The currency and amount (preceded by a minus sign) of the `Fees` of the initial transaction. Required if the `DebitedFunds` property is sent. Information about the fees. The refund `Fees.Amount`: - Must be preceded by a minus sign (-) to refund the fees, otherwise a positive value takes more fees. - Takes by default (when not set) the `Fees.Amount` of the initial transaction (preceded by a minus sign). - Cannot exceed the initial transaction `Fees.Amount`. This alsoapplies to the sum of amounts when making multiple partial refunds. - `Status` (string, optional) — **Returned values:** `CREATED`, `SUCCEEDED`, `FAILED` The status of the transaction. - `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. - `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. - `InitialTransactionId` (string, optional) — The unique identifier of the initial transaction being refunded. - `InitialTransactionType` (string, optional) — **Returned values:** `PAYIN`, `TRANSFER`, `PAYOUT` The type of the initial transaction being refunded. - `InitialTransactionNature` (string, optional) — **Returned values:** `REGULAR`, `REPUDIATION`, `REFUND`, `SETTLEMENT` The nature of the initial transaction being refunded, 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 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 the credit from a repudiation following a lost dispute. - `DebitedWalletId` (string, optional) — The unique identifier of the debited wallet. - `CreditedWalletId` (string, optional) — The unique identifier of the credited wallet. - `RefundReason` (PayInRefundResponseRefundReason, optional) — Information about the reasons for the refund. - `StatementDescriptor` (string, optional) — Max. length: 10 characters; only alphanumeric and spaces Custom description to appear on the user's bank statement along with the platform name. On refunds, the `StatementDescriptor` is only available when refunding SEPA and BACS [direct debit pay-ins](/api-reference/direct-debit-payins/create-direct-debit-payin) (no other payment methods nor transfers). Different banks may show more or less information. See the Customizing bank statement references article for details. ### PayInRefundResponseDebitedFunds **Default value:** The amount and currency values of the `DebitedFunds` of the initial transaction. Required if the `Fees` property is sent. Information about the debited funds. The refund `DebitedFunds.Amount`: - Takes by default the amount and currency of the initial transaction. - Must be set manually to perform a partial refund. - Cannot exceed the initial transaction `CreditedFunds.Amount` when set manually. This also applies to the sum of debited funds when making multiple partial refunds. - `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`. ### PayInRefundResponseCreditedFunds 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`. ### PayInRefundResponseFees **Default value:** The currency and amount (preceded by a minus sign) of the `Fees` of the initial transaction. Required if the `DebitedFunds` property is sent. Information about the fees. The refund `Fees.Amount`: - Must be preceded by a minus sign (-) to refund the fees, otherwise a positive value takes more fees. - Takes by default (when not set) the `Fees.Amount` of the initial transaction (preceded by a minus sign). - Cannot exceed the initial transaction `Fees.Amount`. This alsoapplies to the sum of amounts when making multiple partial refunds. - `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`. ### PayInRefundResponseRefundReason Information about the reasons for the refund. - `RefundReasonMessage` (string, optional) — Message explaining the reason for the refusal. - `RefundReasonType` (string, optional) — **Returned values:** `INITIALIZED_BY_CLIENT`, `BANKACCOUNT_INCORRECT`, `OWNER_DO_NOT_MATCH_BANKACCOUNT`, `BANKACCOUNT_HAS_BEEN_CLOSED`, `WITHDRAWAL_IMPOSSIBLE_ON_SAVINGS_ACCOUNTS`, `OTHER` The type of reason for the refund. ## Examples **Response** ```json [ { "AuthorId": "user_m_01JHSSTVRDN5SN9T14SRC6SA9A", "CreationDate": 1737388152, "CreditedFunds": { "Amount": 3000, "Currency": "EUR" }, "CreditedUserId": null, "CreditedWalletId": null, "DebitedFunds": { "Amount": 2500, "Currency": "EUR" }, "DebitedWalletId": "wlt_m_01JHSSTYGT28P1F5KJ82QZ0K65", "ExecutionDate": 1737388152, "Fees": { "Amount": -500, "Currency": "EUR" }, "Id": "wt_498263ef-5a87-4ef9-a2ab-995748fc478a", "InitialTransactionId": "wt_bbcb7335-d513-49f6-a86b-502de501d675", "InitialTransactionNature": "REGULAR", "InitialTransactionType": "PAYIN", "Nature": "REFUND", "ResultCode": "000000", "ResultMessage": "Success", "Status": "SUCCEEDED", "Tag": "Partial refund with fees refunded", "Type": "PAYOUT" }, { "AuthorId": "user_m_01JHSSTVRDN5SN9T14SRC6SA9A", "CreationDate": 1737388152, "CreditedFunds": { "Amount": 2000, "Currency": "EUR" }, "CreditedUserId": null, "CreditedWalletId": null, "DebitedFunds": { "Amount": 2500, "Currency": "EUR" }, "DebitedWalletId": "wlt_m_01JHSSTYGT28P1F5KJ82QZ0K65", "ExecutionDate": 1737388152, "Fees": { "Amount": 500, "Currency": "EUR" }, "Id": "wt_498263ef-5a87-4ef9-a2ab-995748fc478a", "InitialTransactionId": "wt_bbcb7335-d513-49f6-a86b-502de501d675", "InitialTransactionNature": "REGULAR", "InitialTransactionType": "PAYIN", "Nature": "REFUND", "ResultCode": "000000", "ResultMessage": "Success", "Status": "SUCCEEDED", "Tag": "Partial refund with more fees taken", "Type": "PAYOUT" } ] ``` **SDK Code** ```python from pprint import pprint import mangopay mangopay.client_id='your-client-id' mangopay.apikey='your-api-key' from mangopay.resources import NaturalUser, PayInRefund, DirectDebitDirectPayIn natural_user = NaturalUser.get('213753890') natural_user_wallet_id = '213754077' payin = DirectDebitDirectPayIn.get('214230862') payin_refund = PayInRefund( id = payin.id, author = natural_user, payin = payin ) payin_refunds = DirectDebitDirectPayIn.get_refunds(self = payin_refund) for payin_refund in payin_refunds: pprint(vars(payin_refund)) ``` ```javascript const mangopayInstance = require('mangopay4-nodejs-sdk') const mangopay = new mangopayInstance({ clientId: 'your-client-id', clientApiKey: 'your-api-key', }) let myPayIn = { Id: '192870720', } const listRefunds = async (payInId) => { return await mangopay.PayIns.getRefunds(payInId) .then((response) => { console.info(response) return response }) .catch((err) => { console.log(err) return false }) } listRefunds(myPayIn.Id) ``` ```java import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.mangopay.MangoPayApi; import com.mangopay.entities.Refund; import java.util.List; public class ListPayInRefunds { 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 payInId = "payin_m_01J28XNRJXNQKEQ3GK3WBVQK8B"; List refunds = mangopay.getPayInApi().getRefunds(payInId); for (Refund refund : refunds) { Gson prettyPrint = new GsonBuilder().setPrettyPrinting().create(); String prettyJson = prettyPrint.toJson(refund); System.out.println(prettyJson); } } } ``` ```csharp using MangoPay.SDK; using MangoPay.SDK.Entities; 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 payInId = "payin_m_01J3ZJ2SC199VC64SFTTZ71VPC"; var viewPayInRefunds = await api.Refunds.GetRefundsForPayInAsync(payInId, new Pagination(1, 100), null); string prettyPrint = JsonConvert.SerializeObject(viewPayInRefunds, Formatting.Indented); Console.WriteLine(prettyPrint); } } ``` ```php Config->ClientId = 'your-client-id'; $api->Config->ClientPassword = 'your-api-key'; $api->Config->TemporaryFolder = 'tmp/'; try { $payinId = '163093582'; $response = $api->PayIns->GetRefunds($payinId); print_r($response); } catch(MGPResponseException $e) { print_r($e); } catch(MGPException $e) { print_r($e); } ``` ```ruby 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 def listPayInRefunds(payInId) begin response = MangoPay::PayIn.refunds(payInId) puts response return response rescue MangoPay::ResponseError => error puts "Failed to fetch refunds: #{error.message}" puts "Error details: #{error.details}" return false end end myPayIn = { Id: '192870720' } listPayInRefunds(myPayIn[:Id]) ```