Skip to navigation

v1.0.23

This release includes breaking changes. It adds clients for the intelligent boarding API (beta) and marks the legacy boarding methods as deprecated. See October 19, 2026 for more information.

Intelligent boarding clients (beta)

PayabliApiClient adds the businesses(), people(), paypoints(), paymentMethods(), boardingTemplates(), and applications() clients. The async and raw clients have them too. Their methods return envelope types, such as BusinessDetailEnvelope.

These endpoints only accept OAuth. Set your OAuth clientId and clientSecret on the builder. See OAuth authentication and Manage API credentials.

PayabliApiClient client = new PayabliApiClientBuilder()
.clientId("CLIENT_ID")
.clientSecret("CLIENT_SECRET")
.build();
BusinessDetailEnvelope business = client.businesses().getBusiness("BUSINESS_REFERENCE");

Legacy boarding methods are deprecated

Legacy boarding will be sunset in Q2 2027. Every method on boarding() and templates() now has a deprecation warning in its documentation. export().exportApplications was already deprecated. The methods don’t have the @Deprecated annotation, so the compiler doesn’t warn you.

UnprocessableEntityError.body() now returns Object

The new applications endpoints return a different error body for HTTP 422, so UnprocessableEntityError.body() now returns Object instead of PayabliErrorBody. Code that reads its fields, such as after moneyOut().authorizeOut, captureOut, or payout, no longer compiles.

// Before
catch (UnprocessableEntityError e) { String text = e.body().getResponseText(); }
// After
catch (UnprocessableEntityError e) { Object body = e.body(); }

Case management bank account services use new types

The BankAccountServices builder’s moneyIn and moneyOut now take List<CaseManagementMoneyInService> and List<CaseManagementMoneyOutService>, and the matching methods return them. The new types have the same constants as MoneyInService and MoneyOutService.

// Before
BankAccountServices.builder().moneyIn(Arrays.asList(MoneyInService.ACH)).build();
// After
BankAccountServices.builder().moneyIn(Arrays.asList(CaseManagementMoneyInService.ACH)).build();

v1.0.22

This release adds methods to get the next check number and cancel ghost cards, a check number on reissued payouts, invoice data on subscription updates, a 1099 flag on vendors, every payout that paid a bill, and card-present device details. See October 19, 2026 for more information.

New methods

  • moneyOut().getNextCheckNumber(long paypointId, String accountId) returns NextCheckNumberResponse, whose getCheckNumber() returns String.
  • ghostCard().deleteGhostCard(String cardToken) returns DeleteGhostCardResponse. Its getResponseData() returns Optional<DeleteGhostCardResponseData>, which has getDeleteType() and getCardToken().

The async and raw clients have the same methods.

NextCheckNumberResponse next = client.moneyOut().getNextCheckNumber(285L, "ACCOUNT_ID");
DeleteGhostCardResponse deleted = client.ghostCard().deleteGhostCard("CARD_TOKEN");

Request changes

  • ReissueOutRequest adds checkNumber(String) to its builder, and getCheckNumber() returns Optional<String>.

  • RequestUpdateSchedule, the request for subscription().updateSubscription, adds invoiceData(BillData) to its builder. To remove the subscription’s invoice data, pass Nullable.ofNull() from io.github.payabli.api.core:

    client.subscription().updateSubscription(396, RequestUpdateSchedule.builder()
    .invoiceData(Nullable.<BillData>ofNull())
    .build());
  • VendorData adds issue1099(Boolean) to its builder, and getIssue1099() returns Optional<Boolean>.

Vendor 1099 flag

VendorQueryRecord, VendorDataResponse, TransferOutDetailVendor, and PayoutSubscriptionVendor add the required getIssue1099() (boolean). AssociatedVendor, VCardGetResponseAssociatedVendor, VendorOutData, and GetMethodResponseResponseDataVendorsItem add getIssue1099() (Optional<Boolean>).

Payouts that paid a bill

BillResponseData and BillQueryRecord2 add getTransactions() (Optional<List<BillTransactionReference>>). Each BillTransactionReference has getIdOut() (long) and getPaymentId() (Optional<String>).

Card-present device details

  • TransactionQueryRecords and TransactionQueryRecordsCustomer add getDeviceEntryMode() (Optional<String>), getEmvAuthData() (Optional<EmvAuthData>, with getRequestEmvData() and getResponseEmvData()), and getDeviceData() (Optional<QueryDeviceData>).
  • DeviceQueryRecord adds the required getOperationalStatus() (DeviceQueryRecordOperationalStatus, with the constants ONLINE, BUSY, and OFFLINE), plus getAppVersion() and getOsVersion() (Optional<String>).

The new required fields are new builder stages, so existing builder() calls for VendorQueryRecord, VendorDataResponse, TransferOutDetailVendor, PayoutSubscriptionVendor, and DeviceQueryRecord must set them.