Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
15 commits
Select commit Hold shift + click to select a range
fec690e
Changes generated by b02fc62a651494e317c78e5e447b95d846f1952e
gocardless-ci-robot[bot] Oct 30, 2025
5db4c0c
Changes generated by ef5b702b6e25c522c3b56a3ea3bfc54400d0948c
gocardless-ci-robot[bot] Nov 5, 2025
4447a60
Changes generated by 55a4a26d9bed83d42efdb88316b46a9801b2a072
gocardless-ci-robot[bot] Nov 10, 2025
b46c6f4
Changes generated by dae6cd0c39fd9545f4236c1bada19c4f15b35fba
gocardless-ci-robot[bot] Nov 11, 2025
1288b19
Changes generated by 8dec73b9926505c16e148981dec2fc9d075a2cb5
gocardless-ci-robot[bot] Nov 19, 2025
155405b
Changes generated by 2c726233b55859fbea6c6e2b2a43c6ee64c2c914
gocardless-ci-robot[bot] Nov 25, 2025
1979f5e
Changes generated by 0c8509563061f2301a470d9e1f3d4157f38a5aca
gocardless-ci-robot[bot] Dec 12, 2025
f9d885c
Changes generated by 4401323de5ce1e3ddcf5443a224b5c22ad6bd7d4
gocardless-ci-robot[bot] Dec 12, 2025
3f8f871
Changes generated by 84510c4e27710bfe38ae0bc946e007e72653909a
gocardless-ci-robot[bot] Dec 12, 2025
9361c0e
Changes generated by 7d2774c40e36e5d9e5bb3aefefcf06af22ba036c
gocardless-ci-robot[bot] Dec 12, 2025
269a162
Changes generated by baf62ebfa243c1f9e8409017fa9bbe0b52afd9ea
gocardless-ci-robot[bot] Dec 17, 2025
3d0ac8e
Changes generated by d5c8d6e740ed3a0d532b4abfc73a309adbd8ee7a
gocardless-ci-robot[bot] Dec 18, 2025
41ba140
Changes generated by b320c1f395f766550436433c9a69c47d1e1b5168
gocardless-ci-robot[bot] Dec 30, 2025
77c5983
Changes generated by 1bc756013b8a5b08af35b9131c1691c8a633b779
gocardless-ci-robot[bot] Jan 12, 2026
79ad987
Changes generated by fc7b6ff7b6d4af06967c290bbbd2e1c25719d848
gocardless-ci-robot[bot] Jan 12, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,14 @@ With Maven:
<dependency>
<groupId>com.gocardless</groupId>
<artifactId>gocardless-pro</artifactId>
<version>7.4.0</version>
<version>7.5.0</version>
</dependency>
```

With Gradle:

```
implementation 'com.gocardless:gocardless-pro:7.4.0'
implementation 'com.gocardless:gocardless-pro:7.5.0'
```

## Initializing the client
Expand Down
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ plugins {
sourceCompatibility = 1.8
targetCompatibility = 1.8
group = 'com.gocardless'
version = '7.4.0'
version = '7.5.0'

apply plugin: 'ch.raffael.pegdown-doclet'

Expand Down
27 changes: 27 additions & 0 deletions src/main/java/com/gocardless/GoCardlessClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ public class GoCardlessClient {
private final HttpClient httpClient;
private final BalanceService balances;
private final BankAccountDetailService bankAccountDetails;
private final BankAccountHolderVerificationService bankAccountHolderVerifications;
private final BankAuthorisationService bankAuthorisations;
private final BankDetailsLookupService bankDetailsLookups;
private final BillingRequestService billingRequests;
Expand Down Expand Up @@ -43,6 +44,8 @@ public class GoCardlessClient {
private final PayerAuthorisationService payerAuthorisations;
private final PayerThemeService payerThemes;
private final PaymentService payments;
private final PaymentAccountService paymentAccounts;
private final PaymentAccountTransactionService paymentAccountTransactions;
private final PayoutService payouts;
private final PayoutItemService payoutItems;
private final RedirectFlowService redirectFlows;
Expand Down Expand Up @@ -177,6 +180,7 @@ private GoCardlessClient(HttpClient httpClient) {
this.httpClient = httpClient;
this.balances = new BalanceService(httpClient);
this.bankAccountDetails = new BankAccountDetailService(httpClient);
this.bankAccountHolderVerifications = new BankAccountHolderVerificationService(httpClient);
this.bankAuthorisations = new BankAuthorisationService(httpClient);
this.bankDetailsLookups = new BankDetailsLookupService(httpClient);
this.billingRequests = new BillingRequestService(httpClient);
Expand Down Expand Up @@ -204,6 +208,8 @@ private GoCardlessClient(HttpClient httpClient) {
this.payerAuthorisations = new PayerAuthorisationService(httpClient);
this.payerThemes = new PayerThemeService(httpClient);
this.payments = new PaymentService(httpClient);
this.paymentAccounts = new PaymentAccountService(httpClient);
this.paymentAccountTransactions = new PaymentAccountTransactionService(httpClient);
this.payouts = new PayoutService(httpClient);
this.payoutItems = new PayoutItemService(httpClient);
this.redirectFlows = new RedirectFlowService(httpClient);
Expand Down Expand Up @@ -231,6 +237,13 @@ public BankAccountDetailService bankAccountDetails() {
return bankAccountDetails;
}

/**
* A service class for working with bank account holder verification resources.
*/
public BankAccountHolderVerificationService bankAccountHolderVerifications() {
return bankAccountHolderVerifications;
}

/**
* A service class for working with bank authorisation resources.
*/
Expand Down Expand Up @@ -420,6 +433,20 @@ public PaymentService payments() {
return payments;
}

/**
* A service class for working with payment account resources.
*/
public PaymentAccountService paymentAccounts() {
return paymentAccounts;
}

/**
* A service class for working with payment account transaction resources.
*/
public PaymentAccountTransactionService paymentAccountTransactions() {
return paymentAccountTransactions;
}

/**
* A service class for working with payout resources.
*/
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/com/gocardless/http/HttpClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ public class HttpClient {
private static final String DISALLOWED_USER_AGENT_CHARACTERS =
"[^\\w!#$%&'\\*\\+\\-\\.\\^`\\|~]";
private static final String USER_AGENT =
String.format("gocardless-pro-java/7.4.0 java/%s %s/%s %s/%s",
String.format("gocardless-pro-java/7.5.0 java/%s %s/%s %s/%s",
cleanUserAgentToken(System.getProperty("java.vm.specification.version")),
cleanUserAgentToken(System.getProperty("java.vm.name")),
cleanUserAgentToken(System.getProperty("java.version")),
Expand All @@ -49,7 +49,7 @@ public class HttpClient {
builder.put("GoCardless-Version", "2015-07-06");
builder.put("Accept", "application/json");
builder.put("GoCardless-Client-Library", "gocardless-pro-java");
builder.put("GoCardless-Client-Version", "7.4.0");
builder.put("GoCardless-Client-Version", "7.5.0");
HEADERS = builder.build();
}
private final OkHttpClient rawClient;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
package com.gocardless.resources;

import com.google.gson.annotations.SerializedName;

/**
* Represents a bank account holder verification resource returned from the API.
*
* Create a bank account holder verification for a bank account.
*/
public class BankAccountHolderVerification {
private BankAccountHolderVerification() {
// blank to prevent instantiation
}

private String actualAccountName;
private String id;
private Result result;
private Status status;
private Type type;

/**
* The actual account name returned by the recipient's bank, populated only in the case of a
* partial match.
*/
public String getActualAccountName() {
return actualAccountName;
}

/**
* The unique identifier for the bank account holder verification resource, e.g. "BAHV123".
*/
public String getId() {
return id;
}

/**
* Result of the verification, could be one of
* <ul>
* <li>`full_match`: The verification has confirmed that the account name exactly matches the
* details provided.</li>
* <li>`partial_match`: The verification has confirmed that the account name is similar but does
* not match to the details provided.</li>
* <li>`no_match`: The verification concludes the provided name does not match the account
* details.</li>
* <li>`unable_to_match`: The verification could not be performed due to recipient bank issues
* or technical issues</li>
* </ul>
*/
public Result getResult() {
return result;
}

/**
* The status of the bank account holder verification.
* <ul>
* <li>`pending`: We have triggered the verification, but the result has not come back yet.</li>
* <li>`completed`: The verification is complete and is ready to be used.</li>
* </ul>
*
*/
public Status getStatus() {
return status;
}

/**
* Type of the verification that has been performed eg. [Confirmation of
* Payee](https://www.wearepay.uk/what-we-do/overlay-services/confirmation-of-payee/)
*/
public Type getType() {
return type;
}

public enum Result {
@SerializedName("full_match")
FULL_MATCH, @SerializedName("partial_match")
PARTIAL_MATCH, @SerializedName("no_match")
NO_MATCH, @SerializedName("unable_to_match")
UNABLE_TO_MATCH, @SerializedName("unknown")
UNKNOWN
}

public enum Status {
@SerializedName("pending")
PENDING, @SerializedName("completed")
COMPLETED, @SerializedName("unknown")
UNKNOWN
}

public enum Type {
@SerializedName("confirmation_of_payee")
CONFIRMATION_OF_PAYEE, @SerializedName("unknown")
UNKNOWN
}
}
11 changes: 6 additions & 5 deletions src/main/java/com/gocardless/resources/BillingRequest.java
Original file line number Diff line number Diff line change
Expand Up @@ -478,7 +478,7 @@ public String getPaymentReference() {

/**
* On failure, automatically retry payments using [intelligent
* retries](#success-intelligent-retries). Default is `false`.
* retries](/success-plus/overview). Default is `false`.
* <p class="notice">
* <strong>Important</strong>: To be able to use intelligent retries, Success+ needs to be
* enabled in [GoCardless dashboard](https://manage.gocardless.com/success-plus).
Expand Down Expand Up @@ -1386,9 +1386,10 @@ private CustomerBankAccount() {
private Map<String, Object> metadata;

/**
* Name of the account holder, as known by the bank. This field will be transliterated,
* upcased and truncated to 18 characters. This field is required unless the request
* includes a [customer bank account
* Name of the account holder, as known by the bank. The full name provided when the
* customer is created is stored and is available via the API, but is transliterated,
* upcased, and truncated to 18 characters in bank submissions. This field is required
* unless the request includes a [customer bank account
* token](#javascript-flow-customer-bank-account-tokens).
*/
public String getAccountHolderName() {
Expand Down Expand Up @@ -1756,7 +1757,7 @@ public String getPaymentReference() {

/**
* On failure, automatically retry payments using [intelligent
* retries](#success-intelligent-retries). Default is `false`.
* retries](/success-plus/overview). Default is `false`.
* <p class="notice">
* <strong>Important</strong>: To be able to use intelligent retries, Success+ needs to be
* enabled in [GoCardless dashboard](https://manage.gocardless.com/success-plus).
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -680,7 +680,7 @@ public String getPaymentReference() {

/**
* On failure, automatically retry payments using [intelligent
* retries](#success-intelligent-retries). Default is `false`.
* retries](/success-plus/overview). Default is `false`.
* <p class="notice">
* <strong>Important</strong>: To be able to use intelligent retries, Success+ needs to
* be enabled in [GoCardless dashboard](https://manage.gocardless.com/success-plus).
Expand Down Expand Up @@ -1597,9 +1597,10 @@ private CustomerBankAccount() {
private Map<String, Object> metadata;

/**
* Name of the account holder, as known by the bank. This field will be
* transliterated, upcased and truncated to 18 characters. This field is required
* unless the request includes a [customer bank account
* Name of the account holder, as known by the bank. The full name provided when the
* customer is created is stored and is available via the API, but is
* transliterated, upcased, and truncated to 18 characters in bank submissions. This
* field is required unless the request includes a [customer bank account
* token](#javascript-flow-customer-bank-account-tokens).
*/
public String getAccountHolderName() {
Expand Down Expand Up @@ -1970,7 +1971,7 @@ public String getPaymentReference() {

/**
* On failure, automatically retry payments using [intelligent
* retries](#success-intelligent-retries). Default is `false`.
* retries](/success-plus/overview). Default is `false`.
* <p class="notice">
* <strong>Important</strong>: To be able to use intelligent retries, Success+ needs to
* be enabled in [GoCardless dashboard](https://manage.gocardless.com/success-plus).
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,9 @@ private CustomerBankAccount() {
private Map<String, Object> metadata;

/**
* Name of the account holder, as known by the bank. This field will be transliterated, upcased
* and truncated to 18 characters. This field is required unless the request includes a
* Name of the account holder, as known by the bank. The full name provided when the customer is
* created is stored and is available via the API, but is transliterated, upcased, and truncated
* to 18 characters in bank submissions. This field is required unless the request includes a
* [customer bank account token](#javascript-flow-customer-bank-account-tokens).
*/
public String getAccountHolderName() {
Expand Down
9 changes: 9 additions & 0 deletions src/main/java/com/gocardless/resources/Event.java
Original file line number Diff line number Diff line change
Expand Up @@ -352,6 +352,7 @@ private Links() {
private String newCustomerBankAccount;
private String newMandate;
private String organisation;
private String outboundPayment;
private String parentEvent;
private String payerAuthorisation;
private String payment;
Expand Down Expand Up @@ -461,6 +462,14 @@ public String getOrganisation() {
return organisation;
}

/**
* If `resource_type` is `outbound_payments`, this is the ID of the outbound_payment which
* has been updated.
*/
public String getOutboundPayment() {
return outboundPayment;
}

/**
* If this event was caused by another, this is the ID of the cause. For example, if a
* mandate is cancelled it automatically cancels all pending payments associated with it; in
Expand Down
13 changes: 7 additions & 6 deletions src/main/java/com/gocardless/resources/OutboundPayment.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,13 @@
* GoCardless will notify you via a [webhook](#appendix-webhooks) when the status of the outbound
* payment [changes](#event-types-outbound-payment).
*
* <p class="restricted-notice">
* <strong>Restricted</strong>: Outbound Payments are currently in Early Access and available only
* to a limited list of organisations. If you are interested in using this feature, please stay
* tuned for our public launch announcement. We are actively testing and refining our API to ensure
* it meets your needs and provides the best experience.
* </p>
* ####Rate limiting
*
* Two rate limits apply to the Outbound Payments APIs: - All POST Outbound Payment endpoints
* (create, withdraw, approve, cancel and etc.) share a single rate-limit group of 300 requests per
* minute. As initiating a payment typically requires two API calls (one to create the payment and
* one to approve it), this allows you to add approximately 150 outbound payments per minute. - All
* remaining Outbound Payment endpoints are limited to 500 requests per minute.
*/
public class OutboundPayment {
private OutboundPayment() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -164,9 +164,11 @@ private BankAccount() {
private Map<String, Object> metadata;

/**
* Name of the account holder, as known by the bank. This field will be transliterated,
* upcased and truncated to 18 characters. This field is required unless the request
* includes a [customer bank account token](#javascript-flow-customer-bank-account-tokens).
* Name of the account holder, as known by the bank. The full name provided when the
* customer is created is stored and is available via the API, but is transliterated,
* upcased, and truncated to 18 characters in bank submissions. This field is required
* unless the request includes a [customer bank account
* token](#javascript-flow-customer-bank-account-tokens).
*/
public String getAccountHolderName() {
return accountHolderName;
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/com/gocardless/resources/Payment.java
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ public String getReference() {

/**
* On failure, automatically retry the payment using [intelligent
* retries](#success-intelligent-retries). Default is `false`.
* retries](/success-plus/overview). Default is `false`.
* <p class="notice">
* <strong>Important</strong>: To be able to use intelligent retries, Success+ needs to be
* enabled in [GoCardless dashboard](https://manage.gocardless.com/success-plus).
Expand Down
Loading