Creating a Card Payout
With card payouts, you can pay out funds from your shop balance to the payment card specified in the request. Payouts are executed through Visa Direct for Visa cards and Mastercard Send for Mastercard cards.
Send the target card to PayU as a card token. You receive the token from PayU after the cardholder tokenizes the card with the Secure Form.
Entities approved to process card data on their own side can also send the card data in plain text.
The card payout service is available only for shops that meet the verification criteria. To start the verification process, contact your PayU sales representative or use the .
Card Payout Using Card Token
curl -X POST https://secure.payu.com/api/v2_1/payouts \
-H "Content-Type: application/json" \
-H "Authorization: Bearer 3e5cac39-7e38-4139-8fd6-30adc06a61bd" \
-d '{
"shopId":"n7Cd7y1U",
"payout": {
"extPayoutId":"externalId12345",
"amount":"1000",
"description":"Some payout"
},
"payee": {
"extCustomerId": "Customer1",
"accountCreationDate": "2025-03-27T00:00:00.000Z",
"phoneNumber": "48 225108001",
"email": "email@email.com"
},
"customerAddress": {
"name":"Stefan Jaracz"
},
// highlight-start
"cardToken": {
"value":"TOKC_2IHRST6HKSST3H62K2GS8pElI862"
}
// highlight-end
}'
The request must contain the payee object with extCustomerId, accountCreationDate and email (phoneNumber is optional), and the customerAddress object with the payee's name.
The validation process for input data when performing a payout to a specified payment card is different from that of a standard payout. For details about the parameters, see the Create a Payout section in our API Reference.
You can use the same card token as for an earlier payment or generate a new one. To obtain a new token, guide the cardholder through tokenization with type=MULTI. The cardholder saves the card and pays with it, and you receive a multi-use token that you can use to pay out funds from the shop balance.
For security reasons, the identity of the cardholder must be verified. Before you order a payout to a card token, the token must be verified, for example, in a payment with strong authentication.
To strongly authenticate the cardholder when creating a new order, include the following object in the request:
"threeDsAuthentication": {
"challengeRequested": "MANDATE"
}
Tokens with strong authentication (ECI code 5 in the response) can be used for payouts. The authentication level is indicated by the cardEciCode parameter, which you receive after retrieving transaction data.
A previously authenticated token may still require re-authentication. In such cases, PayU declines the payout and returns the following error:
| Description | |||
|---|---|---|---|
403 Forbidden | 8364 | BUSINESS_ERROR | PAYOUT_TOKEN_INSUFFICIENT_AUTHENTICATION_LEVEL |
In this situation, we recommend creating a new order using the token that requires strong authentication and setting the threeDsAuthentication.challengeRequested parameter to MANDATE.
After completing the re-authentication process, you must handle the response that returns the redirectUri parameter.
In situations where a payment card does not support strong authentication or for any other reason the authentication cannot be performed, the merchant is responsible for verifying the payment card through an alternative method. One such method could involve charging the card for a random amount and requesting the customer to provide this specific value for verification. To activate this solution, contact PayU through your sales representative or use our .
Card Payout Using Card Data
This integration is available only for entities that meet the PCI DSS requirements and are approved to process card data on their own side. It also requires additional configuration, so contact your PayU sales representative before you start the integration.
To create a payout with card data, include the card object in the payout request.
curl -X POST https://secure.payu.com/api/v2_1/payouts \
-H "Content-Type: application/json" \
-H "Authorization: Bearer 3e5cac39-7e38-4139-8fd6-30adc06a61bd" \
-d '{
"shopId":"n7Cd7y1U",
"payout": {
"extPayoutId":"externalId12345",
"amount":"1000",
"description":"Some payout"
},
"payee": {
"extCustomerId": "Customer1",
"accountCreationDate": "2025-03-27T00:00:00.000Z",
"phoneNumber": "48 225108001",
"email": "email@email.com"
},
"customerAddress": {
"name":"Stefan Jaracz"
},
// highlight-start
"card": {
"number":"4444333322221111",
"expirationMonth":"11",
"expirationYear":"2029"
}
// highlight-end
}'
The validation process for input data when performing a payout to a specified payment card differs significantly from that of a standard payout. For details about the parameters, see the Create a Payout section in our API Reference.
Testing Card Payouts
In the Sandbox environment, you can test card payouts with the cards listed below. The Payout Status column shows the result of a payout to each card.
| Expiration Date | |||
|---|---|---|---|
4655413107713609 | 12/2030 | Visa | REALIZED |
4302193177728334 | 12/2030 | Visa | CANCELLED |
5575278649907280 | 12/2030 | Mastercard | REALIZED |
5436518288281326 | 12/2030 | Mastercard | CANCELLED |