# Payouts-Java-SDK
**Repository Path**: mirrors_paypal/Payouts-Java-SDK
## Basic Information
- **Project Name**: Payouts-Java-SDK
- **Description**: Java SDK for Payouts RESTful APIs
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2020-08-18
- **Last Updated**: 2026-05-30
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# PayPal Payouts Java SDK v2

__Welcome to PayPal Java SDK.__ This repository contains PayPal's Java SDK for Payouts and samples for [v1/payments/payouts](https://developer.paypal.com/docs/api/payments.payouts-batch/v1/) APIs.
This is a part of the next major PayPal SDK. It includes a simplified interface to only provide simple model objects and blueprints for HTTP calls. This repo currently contains functionality for PayPal Payouts APIs which includes [Payouts](https://developer.paypal.com/docs/api/payments.payouts-batch/v1/).
Please refer to the [PayPal Payouts Integration Guide](https://developer.paypal.com/docs/payouts/) for more information. Also refer to [Setup your SDK](https://developer.paypal.com/docs/payouts/reference/setup-sdk/) for additional information about setting up the SDK's.
## Prerequisites
Java JDK 8 or higher
An environment which supports TLS 1.2 (see the TLS-update site for more information)
## Usage
### Binaries
It is not necessary to fork this repository for using the PayPal SDK. Please take a look at [PayPal Payouts SDK](https://developer.paypal.com/docs/payouts/reference/setup-sdk/#install-the-sdk) for configuring and working with SDK without forking this code.
For contributing to this repository or using the samples you can fork this repository.
### Setting up credentials
Get client ID and client secret by going to https://developer.paypal.com/developer/applications and generating a REST API app. Get Client ID and Secret from there.
```java
package com.paypal;
import com.paypal.core.PayPalEnvironment;
import com.paypal.core.PayPalHttpClient;
public class Credentials {
static String clientId = "CLIENT-ID";
static String secret = "CLIENT-SECRET";
// Creating a sandbox environment
private static PayPalEnvironment environment = new PayPalEnvironment.Sandbox(clientId, secret);
// Creating a client for the environment
static PayPalHttpClient client = new PayPalHttpClient(environment);
}
```
## Examples
### Creating a Payouts
This will create a Payout and print batch_id for the created Payout.
```java
package com.paypal;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import com.paypal.http.HttpResponse;
import com.paypal.http.exceptions.HttpException;
import com.paypal.payouts.*;
public class CreatePayoutExample {
public static void main(String[] args) {
// Construct a request object and set desired parameters
// Here, CreatePayoutRequest() creates a POST request to /v1/payments/payouts
List items = IntStream
.range(1, 6)
.mapToObj(index -> new PayoutItem()
.senderItemId("Test_txn_" + index)
.note("Your 1$ Payout!")
.receiver("payout-sdk-" + index + "@paypal.com")
.amount(new Currency()
.currency("USD")
.value("1.00")))
.collect(Collectors.toList());
CreatePayoutRequest request = new CreatePayoutRequest()
.senderBatchHeader(new SenderBatchHeader()
.senderBatchId("Test_sdk_" + RandomStringUtils.randomAlphanumeric(7))
.emailMessage("SDK payouts test txn")
.emailSubject("This is a test transaction from SDK")
.note("Enjoy your Payout!!")
.recipientType("EMAIL"))
.items(items);
try {
// Call API with your client and get a response for your call
PayoutsPostRequest httpRequest = new PayoutsPostRequest().requestBody(request);
HttpResponse response = Credentials.client.execute(httpRequest);
// If call returns body in response, you can get the de-serialized version by
// calling result() on the response
CreatePayoutResponse payouts = response.result();
System.out.println("Payouts Batch ID: " + payouts.batchHeader().payoutBatchId());
payouts.links().forEach(link -> System.out.println(link.rel() + " => " + link.method() + ":" + link.href()));
} catch (IOException ioe) {
if (ioe instanceof HttpException) {
// Something went wrong server-side
HttpException he = (HttpException) ioe;
System.out.println(he.getMessage());
he.headers().forEach(x -> System.out.println(x + " :" + he.headers().header(x)));
} else {
// Something went wrong client-side
}
}
}
}
```
### Handle API Failure
This will create a Payout with validation failure to showcase how to parse the failed response entity. Refer samples for more scenarios
```java
package com.paypal;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import com.paypal.http.HttpResponse;
import com.paypal.http.exceptions.HttpException;
import com.paypal.payouts.*;
public class CreatePayoutExample {
public static void main(String[] args) {
// Construct a request object and set desired parameters
// Here, CreatePayoutRequest() creates a POST request to /v1/payments/payouts
List items = IntStream
.range(1, 6)
.mapToObj(index -> new PayoutItem()
.senderItemId("Test_txn_" + index)
.note("Your 1$ Payout!")
.receiver("payout-sdk-" + index + "@paypal.com")
.amount(new Currency()
.currency("USD")
.value("1.0.0")))
.collect(Collectors.toList());
CreatePayoutRequest request = new CreatePayoutRequest()
.senderBatchHeader(new SenderBatchHeader()
.senderBatchId("Test_sdk_" + RandomStringUtils.randomAlphanumeric(7))
.emailMessage("SDK payouts test txn")
.emailSubject("This is a test transaction from SDK")
.note("Enjoy your Payout!!")
.recipientType("EMAIL"))
.items(items);
try {
// Call API with your client and get a response for your call
PayoutsPostRequest httpRequest = new PayoutsPostRequest().requestBody(request);
Credentials.client.execute(httpRequest);
} catch (HttpException he) {
// Something went wrong server-side
// Parse failure response to get the reason for failure
Encoder encoder = new Encoder();
String error = he.getMessage();
Error payoutError = encoder.deserializeResponse(new ByteArrayInputStream(error.getBytes(StandardCharsets.UTF_8)), Error.class, e.headers());
System.out.println(payoutError.name());
System.out.println(payoutError.details().get(0).field());
System.out.println(payoutError.details().get(0).issue());
he.headers().forEach(x -> System.out.println(x + " :" + he.headers().header(x)));
} catch (IOException ioe) {
// Something went wrong client-side
System.out.println(ioe);
}
}
}
```
### Retrieve a Payouts Batch
This will retrieve a payouts batch
```java
package com.paypal;
import java.io.IOException;
import com.paypal.http.HttpResponse;
import com.paypal.http.exceptions.HttpException;
import com.paypal.payouts.*;
public class GetPayoutsExample {
public static void main(String[] args) {
//Retrieve payouts batch details, a maximum of 1000 items can be fetched in a single call.
//Follow pagination to get all the items(Payouts supports a maximum of 15,000 items in a batch.
PayoutsGetRequest request = new PayoutsGetRequest(batchId)
.page(1)
.pageSize(10)
.totalRequired(true);
try {
// Call API with your client and get a response for your call
HttpResponse response = Credentials.client.execute(request);
// If call returns body in response, you can get the de-serialized version by
// calling result() on the response
PayoutBatch payout = response.result();
System.out.println("Payouts Batch ID: " + payouts.batchHeader().payoutBatchId());
System.out.println("Payouts Batch Status: " + payouts.batchHeader().batchStatus());
payout.links()
.forEach(link -> System.out.println(link.rel() + " => " + link.method() + ":" + link.href()));
} catch (IOException ioe) {
if (ioe instanceof HttpException) {
// Something went wrong server-side
HttpException he = (HttpException) ioe;
System.out.println(he.getMessage());
he.headers().forEach(x -> System.out.println(x + " :" + he.headers().header(x)));
} else {
// Something went wrong client-side
}
}
}
}
```
## Running tests
To run integration tests using your client id and secret, run the `test` gradle command with the `-Pintegration` flag
```sh
$ PAYPAL_CLIENT_ID=your_client_id PAYPAL_CLIENT_SECRET=your_client_secret ./gradlew clean test -Pintegration
```
You may use the client id and secret above for demonstration purposes.
## Samples
You can start off by trying out [Payouts samples](payouts-sdk-sample/src/main/java/com/paypal/RunAll.java).
To try out different samples head to [this link](payouts-sdk-sample/src/main/java/com/paypal).
Note: Update the `PayPalClient.java` with your sandbox client credentials or pass your client credentials as environment variable while executing the samples.
## License
Code released under [SDK LICENSE](LICENSE)