> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://ixopay.ferndocs.com/developer-hub/documentation/guides/payments/payouts/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://ixopay.ferndocs.com/_mcp/server. # Payouts Payout transactions allow merchants to transfer funds from their own account to a customer's account. This is useful in situations where merchants need to make payouts to customers, such as refunds or commission payments. > **Availability** > > Please note that payout transactions are only available for certain adapters and must be explicitly enabled by your integration engineer. Make sure to check the [adapters page](https://adapters.ixopay.com) for details on the supported payout functionality for each payment method. Payout transactions are commonly used in the following scenarios: * *Refunds* : Merchants can use payout transactions to refund customers who have paid with a payment method that does not support refunds. In this case, the merchant would initiate a payout transaction to transfer the refund amount to the customer's account. * *Commission payments* : Merchants can use payout transactions to pay commissions to their affiliates or partners. * *Disbursements* : Payout transactions can be used to disburse funds to customers, such as insurance claims or payouts for sharing economy platforms. ## How payout transactions work The [payout transaction](https://documentation.ixopay.com/api/transaction/payout) process is similar to that of a standard transaction, with some important differences. Instead of charging a customer's card, a payout transaction transfers funds from the merchant's account to the customer's account. To initiate a payout transaction, the merchant sends a request to the IXOPAY platform with the transaction details, including the amount to be transferred and the customer's account information. Depending on the adapter, payout transactions can be created using a [Hosted payment page](https://documentation.ixopay.com/docs/guides/getting-started/accept-payments/hosted-payment-pages), or a `transactionToken` from [payment.js](https://documentation.ixopay.com/docs/guides/getting-started/accept-payments/payment.js), or by referencing [saved payment information](https://documentation.ixopay.com/docs/guides/payments/saving) with `referenceUuid`. * curl * Python * PHP * Java ```sh curl --request POST -sL \ --url "https://gateway.ixopay.com/api/v3/transaction/${API_KEY}/payout" \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --header "Authorization: Basic $(echo -n "$USERNAME:$PASSWORD" | base64)" \ --data-raw '{ "merchantTransactionId": "your-unique-identifier", "transactionToken": "$CC_TOKEN", "description": "Purchase description shown on credit card statement.", "amount": "9.99", "currency": "EUR", "successUrl": "https://shop.example.org/checkout/success", "cancelUrl": "https://shop.example.org/checkout/cancelled", "errorUrl": "https://shop.example.org/checkout/error", "callbackUrl": "https://api.example.org/callback" }' ``` ```python import requests import json import base64 import os url = "https://gateway.ixopay.com/api/v3/transaction/{apiKey}/payout".format( apiKey=os.environ["API_KEY"] ) auth = base64.b64encode("%s:%s" % (os.environ["USERNAME"], os.environ["PASSWORD"])) cc_token = os.environ["CC_TOKEN"] payload = json.dumps( { "merchantTransactionId": "your-unique-identifier", "transactionToken": cc_token, "description": "Purchase description shown on credit card statement.", "amount": "9.99", "currency": "EUR", "successUrl": "https://shop.example.org/checkout/success", "cancelUrl": "https://shop.example.org/checkout/cancelled", "errorUrl": "https://shop.example.org/checkout/error", "callbackUrl": "https://api.example.org/callback" } ) headers = { "Content-Type": "application/json", "Accept": "application/json", "Authorization": "Basic {auth}".format(auth=auth), } response = requests.request("POST", url, headers=headers, data=payload) ``` ```php "https://gateway.ixopay.com/api/v3/transaction/$API_KEY/payout", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS => << array( 'Content-Type: application/json', 'Accept: application/json', "Authorization: Basic $auth" ), )); $response = curl_exec($curl); curl_close($curl); ``` ```java String transactionToken = req.getParameter("cctoken"); OkHttpClient client = new OkHttpClient().newBuilder().build(); RequestBody body = RequestBody.create( MediaType.parse("application/json"), "{" + "\"merchantTransactionId\": \"your-unique-identifier\"," + "\"transactionToken\": \"" + transactionToken + "\"," + "\"description\": \"Payout description shown in credit card statement.\"," + "\"amount\": \"9.99\"," + "\"currency\": \"EUR\"," + "\"successUrl\": \"https://shop.example.org/checkout/success\"," + "\"cancelUrl\": \"https://shop.example.org/checkout/cancelled\"," + "\"errorUrl\": \"https://shop.example.org/checkout/error\"," + "\"callbackUrl\": \"https://api.example.org/callback\"" "}" ); String auth = Base64.getEncoder().encodeToString( "%s:%s".format(System.getenv("USERNAME"), System.getenv("PASSWORD"))); Request request = new Request.Builder() .url("https://gateway.ixopay.com/api/v3/transaction/%s/payout" .format(System.getenv("API_KEY"))) .method("POST", body) .addHeader("Content-Type", "application/json") .addHeader("Accept", "application/json") .addHeader("Authorization", "Basic %s".format(auth)) .build(); Response response = client.newCall(request).execute(); ```