> This is Payabli documentation. For a complete page index, fetch https://docs.payabli.com/llms.txt — append .md to any page URL for lightweight markdown. For section-level indexes, query parameters, and other AI-optimized access methods, see https://docs.payabli.com/ai-agents.md

# PHP SDK changelog

This is the changelog for the Payabli PHP SDK. It includes updates, bug fixes, and new features.

## October 27, 2026

## v1.0.22

This release includes breaking changes. It corrects the organization details types to match the API, renames the ticket amount properties on paypoint credentials, and adds an organizations client for the intelligent boarding API (beta). See [October 20, 2026](/changelog/api-changelog/2026/10/20) and [October 22, 2026](/changelog/api-changelog/2026/10/22) and [October 27, 2026](/changelog/api-changelog/2026/10/27) for more information.

### Basic organization details return a response envelope

`organization->getBasicOrganization` and `organization->getBasicOrganizationById` now return `?GetBasicOrganizationResponse` instead of `?OrganizationQueryRecord`. The organization details are in `$responseData`, alongside `$isSuccess` and `$responseText`.

```php
// Before
$org = $client->organization->getBasicOrganization('my-org');

// After
$basic = $client->organization->getBasicOrganization('my-org');
$org = $basic?->responseData;
```

### Organization details types match the API

`OrganizationQueryRecord` changes these property types:

* `$billingInfo` is now `?InstrumentResponse` instead of `?Instrument`. `InstrumentResponse` has `$achAccount`, `$achRouting`, `$billingAddress`, `$billingCity`, `$billingCountry`, `$billingState`, and `$billingZip` (`?string`).
* `$contacts` is now an array of `ContactsResponse` instead of `Contacts`. `ContactsResponse` has `$contactName`, `$contactEmail`, `$contactTitle`, and `$contactPhone`.
* `$orgLogo` is now `?string`, the logo's URL, instead of `?FileContent`.

It also adds `$orgFavicon` (`?string`), the URL of the organization's favicon. The property names are unchanged, but their JSON names now match the PascalCase names the API returns, such as `OrgId` and `BillingInfo`.

### Ticket amount properties renamed

`PayabliCredentialsPascal` renames `$maxTicket` to `$maxticket` and `$minTicket` to `$minticket` (`?float`), and the constructor keys to match.

```php
// Before
$credentials = new PayabliCredentialsPascal(['maxTicket' => 1000.0, 'minTicket' => 1.0]);

// After
$credentials = new PayabliCredentialsPascal(['maxticket' => 1000.0, 'minticket' => 1.0]);
```

### Organizations client (beta)

`PayabliClient` adds `$organizations`, with `listOrganizations`, `createOrganization`, `getOrganization`, and `updateOrganization`. `createOrganization` takes `CreateOrganizationWithInlineBusiness`, `CreateOrganizationWithBusinessReference`, or `CreateOrganizationAllFields`. The methods return envelope types, such as `PaypointDetailEnvelope`. These endpoints only accept OAuth. See [OAuth authentication](/developers/oauth-authentication).

```php
$detail = $client->organizations->getOrganization('org-reference');
```

### Other changes

* `MethodsListOut` adds `$rtp` and `$wire` (`?bool`).
* `PaypointSummaryResponse` adds `$externalId` (`?string`).

## October 19, 2026

## v1.0.21

This release adds clients for the intelligent boarding API (beta) and marks the legacy boarding methods as deprecated. See [October 19, 2026](/changelog/api-changelog/2026/10/19) for more information.

### Intelligent boarding clients (beta)

`PayabliClient` adds the `$businesses`, `$people`, `$paypoints`, `$paymentMethods`, `$boardingTemplates`, and `$applications` clients. Their methods return envelope types, such as `BusinessDetailEnvelope`.

These endpoints only accept OAuth. Pass your OAuth `clientId` and `clientSecret` when you create the client. See [OAuth authentication](/developers/oauth-authentication) and [Manage API credentials](/guides/platform-developer-api-credentials-manage).

```php
$client = new PayabliClient(clientId: 'CLIENT_ID', clientSecret: 'CLIENT_SECRET');
$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. The applications export method on `$export` was already deprecated. The methods don't have a `@deprecated` tag, so your IDE doesn't flag them.

### Case management bank account services

The new `CaseManagementMoneyInService` and `CaseManagementMoneyOutService` enumerations list the values for `BankAccountServices`. They have the same values as `MoneyInService` and `MoneyOutService`, so existing code still works.

## v1.0.20

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](/changelog/api-changelog/2026/10/19) for more information.

### New methods

* `$client->moneyOut->getNextCheckNumber(int $paypointId, string $accountId)` returns `?NextCheckNumberResponse`, whose `$checkNumber` is a `string`.
* `$client->ghostCard->deleteGhostCard(string $cardToken)` returns `?DeleteGhostCardResponse`. Its `$responseData` has `$deleteType` and `$cardToken` (`?string`).

```php
$next = $client->moneyOut->getNextCheckNumber(285, 'ACCOUNT_ID');
$deleted = $client->ghostCard->deleteGhostCard('CARD_TOKEN');
```

### Request changes

* `ReissueOutRequest` adds `$checkNumber` (`?string`).
* `RequestUpdateSchedule`, the request for `$client->subscription->updateSubscription`, adds `$invoiceData` (`?BillData`).
* `VendorData` adds `$issue1099` (`?bool`).

### Vendor 1099 flag

`VendorQueryRecord`, `VendorDataResponse`, `TransferOutDetailVendor`, and `PayoutSubscriptionVendor` add the required property `$issue1099` (`bool`). `AssociatedVendor`, `VCardGetResponseAssociatedVendor`, `VendorOutData`, and `GetMethodResponseResponseDataVendorsItem` add `$issue1099` (`?bool`).

### Payouts that paid a bill

`BillResponseData` and `BillQueryRecord2` add `$transactions` (`?array<BillTransactionReference>`). Each `BillTransactionReference` has `$idOut` (`int`) and `$paymentId` (`?string`).

### Card-present device details

* `TransactionQueryRecords` and `TransactionQueryRecordsCustomer` add `$deviceEntryMode` (`?string`), `$emvAuthData` (`?EmvAuthData`, with `$requestEmvData` and `$responseEmvData`), and `$deviceData` (`?QueryDeviceData`).
* `DeviceQueryRecord` adds the required property `$operationalStatus` (`string`), which holds `'online'`, `'busy'`, or `'offline'`. These are the values of the new `DeviceQueryRecordOperationalStatus` enum, so compare against a case's value, such as `DeviceQueryRecordOperationalStatus::Online->value`. It also adds `$appVersion` and `$osVersion` (`?string`).

Code that creates these records without the new required properties, such as tests and mocks, must set them.

## October 14, 2026

## v1.0.19

This release includes breaking changes for code that uses type declarations. The get payout subscription response now uses its own camelCase types. This release also covers v1.0.18, which shipped without a changelog entry. See [October 14, 2026](/changelog/api-changelog/2026/10/14) for more information.

### New types in the get payout subscription response

`PayoutSubscriptionQueryRecord` now uses new types for its vendor, bills, and payment data:

| Property       | Before                  | After                            |
| -------------- | ----------------------- | -------------------------------- |
| `$vendor`      | `?VendorQueryRecord`    | `?PayoutSubscriptionVendor`      |
| `$billData`    | `array<BillPayOutData>` | `array<PayoutSubscriptionBill>`  |
| `$paymentData` | `?QueryPaymentData`     | `?PayoutSubscriptionPaymentData` |

Update any type declarations or `instanceof` checks that name the old types:

```php
// Before
if ($record->vendor instanceof VendorQueryRecord) { /* ... */ }

// After
if ($record->vendor instanceof PayoutSubscriptionVendor) { /* ... */ }
```

### New payment data type in list payout subscriptions

`PayoutSubscriptionQueryRecordPascal::$paymentData` is now a `?PayoutSubscriptionPaymentDataPascal` instead of a `?QueryPaymentData`.

### New fields

`PayoutSubscriptionQueryRecord` and `PayoutSubscriptionQueryRecordPascal` add `$sameDayAch`, `$doNotCreateBills`, `$allowDuplicatedBills`, `$autoConvertSameDayAch`, and `$subscriptionType`. `VendorQueryRecord::$storedMethods` items are now `VendorStoredMethod`, which adds `$isDefault`. `VendorQueryRecord` adds `$vendorPortal` (`?VendorPortalAccess`), and `BillingDataResponse` adds `$country`.

## October 5, 2026

## v1.0.17

This release includes breaking changes. The notification log and stored payment method types now match what the API returns, and OCR results have new amount fields. See [September 22, 2026](/changelog/api-changelog/2026/9/22), [September 29, 2026](/changelog/api-changelog/2026/9/29), [October 1, 2026](/changelog/api-changelog/2026/10/1), [October 2, 2026](/changelog/api-changelog/2026/10/2), and [October 5, 2026](/changelog/api-changelog/2026/10/5) for more information.

### Notification log retry methods return new types

`notificationlogs->retryNotificationLog` now returns `?NotificationRetryResponse`, which has a single `$message` property, instead of `?NotificationLogDetail`. `notificationlogs->bulkRetryNotificationLogs` now returns `string` instead of `void`.

```php
// Before
$log = $client->notificationlogs->retryNotificationLog('UUID'); // ?NotificationLogDetail

// After
$retry = $client->notificationlogs->retryNotificationLog('UUID');
if ($retry instanceof NotificationRetryResponse) {
    echo $retry->message;
}
$bulk = $client->notificationlogs->bulkRetryNotificationLogs(['UUID']);
```

### Notification log types share a new base trait

`NotificationLog` and `NotificationLogDetail` now both use the new `Payabli\Traits\NotificationLogBase` trait. `NotificationLogDetail` no longer uses `Payabli\Traits\NotificationLog`.

* `$responseStatus` is now `string` instead of `?string`. It holds a status message such as `OK`. The HTTP status code is in the new `$responseStatusCode` (`int`).
* On `NotificationLogDetail`, `$responseContent` is now `string` instead of `?string`.
* Both types add `$organizationName`, `$paypointName`, `$requestId`, and `$responseStatusCode`.
* `NotificationLog` adds `$notificationType`, `$organizationLogo`, `$organizationFavIcon`, and `$paypointLogo`.

The constructors now require these keys in `$values`.

### Customer properties on stored payment methods

`GetMethodResponseResponseDataCustomersItem` no longer uses the `Payabli\Traits\PayorDataRequest` trait. `$firstName` and `$lastName` are now `$firstname` and `$lastname`.

#### Removed and added properties

Removed: `$additionalData`, `$billingAddress1`, `$billingAddress2`, `$billingCity`, `$billingCountry`, `$billingEmail`, `$billingPhone`, `$billingState`, `$billingZip`, and `$shippingAddress2`.

Added: `$additionalFields`, `$address`, `$address1`, `$city`, `$country`, `$customerEvents`, `$customerPortal`, `$email`, `$phone`, `$shippingAddress`, `$state`, and `$zip`.

### New response properties

* `AddMethodResponse` adds `$pageIdentifier`, and `AddMethodResponseResponseData` adds `$authCode`, `$avsResponseText`, `$cvvResponseText`, and `$vendorId`.
* `GetMethodResponseResponseData` adds `$walletType`.
* `OcrResultData` adds `$totalAmount` and `$discount` (`?float`).

## September 18, 2026

## v1.0.16

Regenerated the PHP SDK to incorporate latest API documentation improvements. See [September 18, 2026](/changelog/api-changelog/2026/9/18) for more information.

## September 16, 2026

## v1.0.15

Regenerated the PHP SDK to incorporate latest API documentation improvements. See [September 16, 2026](/changelog/api-changelog/2026/9/16) for more information.

## September 10, 2026

## v1.0.14

Regenerated the PHP SDK to incorporate latest API documentation improvements. See [September 10, 2026](/changelog/api-changelog/2026/9/10) for more information.

## September 9, 2026

## v1.0.13

Regenerated the PHP SDK to incorporate latest API documentation improvements. See [September 8, 2026](/changelog/api-changelog/2026/9/8) for more information.

## August 28, 2026

## v1.0.12

### New `businessSummary` field on `PaypointData`

`PaypointData` now includes `businessSummary`, a business description from boarding. See [August 28, 2026](/changelog/api-changelog/2026/8/28) for more information.

## July 28, 2026

## v1.0.10

Regenerated the PHP SDK to incorporate latest API documentation improvements. See [July 28, 2026](/changelog/api-changelog/2026/7/28) for more information.

## July 27, 2026

## v1.0.9

Added OAuth2 client-credentials support. Pass `clientId`/`clientSecret` instead of `apiKey` and the SDK handles the token exchange and refresh automatically:

```php
$client = new PayabliClient(
    clientId: "...",
    clientSecret: "...",
    options: ['baseUrl' => Environments::Sandbox->value]
);
```

The existing `apiKey`-based constructor still works unchanged — no action needed if you're not switching auth methods. See the [PHP SDK guide](/developers/platform-sdk-php-guide) and [Authentication](/developers/authentication) to compare both methods.

## July 20, 2026

## v1.0.6

Changed the `VendorQueryRecord.additionalData` type from `ArrayType(['string' => ['string' => 'mixed']])` to `ArrayType(['string' => 'string'])` to match the API.

## June 30, 2026

## v1.0.2

Regenerated the PHP SDK to incorporate latest API documentation improvements. See [June 30, 2026](/changelog/api-changelog/2026/6/30) for more information.

## June 11, 2026

## v1.0.1

Regenerated the PHP SDK to incorporate latest API documentation improvements. See [June 11, 2026](/changelog/api-changelog/2026/6/11) for more information.

## June 8, 2026

## v1.0.0

As part of an ongoing effort to improve the consistency and usability of our SDKs, we've updated the SDK generation process.
This update introduces breaking changes to the SDK.
All breaking changes affect only method signatures and namespacing, not core record types or properties.
SDK initialization, configuration, business logic, and workflows remain unchanged.
For more information on precise method signatures and example usage, please see the [SDK reference on GitHub](https://github.com/payabli/sdk-php/blob/main/reference.md).

### Type namespace consolidated

All type classes have moved from per-resource `Types/` namespaces into a single `Payabli\Types\` namespace. Every `use` statement for a type class needs updating. `Payabli\<Resource>\Requests\` namespaces are unchanged.

#### Removed per-resource type namespaces

| Old namespace                        | Types moved |
| ------------------------------------ | ----------- |
| `Payabli\MoneyIn\Types\`             | 30 types    |
| `Payabli\QueryTypes\Types\`          | 31 types    |
| `Payabli\MoneyOutTypes\Types\`       | 25 types    |
| `Payabli\TokenStorage\Types\`        | 11 types    |
| `Payabli\PayoutSubscription\Types\`  | 11 types    |
| `Payabli\Ocr\Types\`                 | 10 types    |
| `Payabli\Invoice\Types\`             | 7 types     |
| `Payabli\V2MoneyInTypes\Types\`      | 7 types     |
| `Payabli\User\Types\`                | 6 types     |
| `Payabli\PaymentLink\Types\`         | 6 types     |
| `Payabli\Vendor\Types\`              | 6 types     |
| `Payabli\Notificationlogs\Types\`    | 5 types     |
| `Payabli\Subscription\Types\`        | 5 types     |
| `Payabli\PaymentMethodDomain\Types\` | 5 types     |
| `Payabli\Statistic\Types\`           | 4 types     |
| `Payabli\ChargeBacks\Types\`         | 4 types     |
| `Payabli\Organization\Types\`        | 3 types     |
| `Payabli\GhostCard\Types\`           | 3 types     |
| `Payabli\Boarding\Types\`            | 3 types     |
| `Payabli\Paypoint\Types\`            | 7 types     |
| `Payabli\Management\Types\`          | 2 types     |
| `Payabli\Cloud\Types\`               | 2 types     |
| `Payabli\CheckCapture\Types\`        | 2 types     |
| `Payabli\Bill\Types\`                | 8 types     |
| `Payabli\LineItem\Types\`            | 1 type      |
| `Payabli\Export\Types\`              | 1 type      |

### Guzzle must be added explicitly

The SDK no longer bundles an HTTP client. Add `guzzlehttp/guzzle: ^7.4` to your project's `composer.json` to satisfy the PSR-18 requirement.

### Request wrapper types removed

The following body wrapper types are deleted. Their fields are now direct constructor arguments on the parent request class.

#### Removed types and their replacements

| Removed type                    | Fields now on                   | Method                                         |
| ------------------------------- | ------------------------------- | ---------------------------------------------- |
| `AuthorizePayoutBody`           | `RequestOutAuthorize`           | `moneyOut->authorizeOut`                       |
| `ReissuePayoutBody`             | `ReissueOutRequest`             | `moneyOut->reissueOut`                         |
| `SubscriptionRequestBody`       | `RequestSchedule`               | `subscription->newSubscription`                |
| `PayoutSubscriptionRequestBody` | `RequestPayoutSchedule`         | `payoutSubscription->createPayoutSubscription` |
| `NotificationLogSearchRequest`  | `SearchNotificationLogsRequest` | `notificationlogs->searchNotificationLogs`     |
| `PaymentPageRequestBody`        | `PayLinkDataInvoice`            | `paymentLink->addPayLinkFromInvoice`           |

The `MoneyOutTypesRequestOutAuthorize` type is also renamed to `RequestOutAuthorize` (in `Payabli\MoneyOut\Requests\`).

### Five types moved from `Types\` to `Requests\`

These classes moved from a `Types` namespace to the `Requests` namespace of their resource:

#### Moved types

| Class                                  | Old namespace                      | New namespace                         |
| -------------------------------------- | ---------------------------------- | ------------------------------------- |
| `VendorEnrichRequest`                  | `Payabli\Vendor\Types`             | `Payabli\Vendor\Requests`             |
| `PatchOutPaymentLinkRequest`           | `Payabli\PaymentLink\Types`        | `Payabli\PaymentLink\Requests`        |
| `PaypointMoveRequest`                  | `Payabli\Paypoint\Types`           | `Payabli\Paypoint\Requests`           |
| `CreateApplicationFromPaypointRequest` | `Payabli\Boarding\Types`           | `Payabli\Boarding\Requests`           |
| `UpdatePayoutSubscriptionBody`         | `Payabli\PayoutSubscription\Types` | `Payabli\PayoutSubscription\Requests` |

### New typed enums for method and terms fields

`PayMethodCredit::$method`, `RequestCreditPaymentMethod::$method`, and `BillOutData::$terms` are now typed enums. Raw strings still work at runtime but will fail static analysis.

#### Enum details

| Field                                 | Old                | New enum type                      | Example                                        |
| ------------------------------------- | ------------------ | ---------------------------------- | ---------------------------------------------- |
| `PayMethodCredit::$method`            | `'card'` (string)  | `PayMethodCreditMethod`            | `PayMethodCreditMethod::Card->value`           |
| `RequestCreditPaymentMethod::$method` | `'ach'` (string)   | `RequestCreditPaymentMethodMethod` | `RequestCreditPaymentMethodMethod::Ach->value` |
| `BillOutData::$terms`                 | `'NET30'` (string) | `Terms`                            | `Terms::Net30->value`                          |

### Boarding type renames

`ApplicationDataPayInServicesAch` → `AchSetup`, `ApplicationDataPayInServicesCard` → `CardSetup`, `ApplicationDataPayInContactsItem` → `Contacts`, `ApplicationDataPayInOwnershipItem` → `Owners`. All now in `Payabli\Types\`.

### `BillOutData::$vendor` type changed

Type changed from `?VendorData` to `?BillOutDataVendor`. `BillOutDataVendor` has only a `vendorNumber` field.

## May 20, 2026

## v0.0.427

Fixed an issue where the PHP SDK wasn't properly deserializing the `extraData` field in certain API response models.

## May 11, 2026

## v0.0.426

Regenerated the PHP SDK to incorporate latest API documentation improvements. See [May 11, 2026](/changelog/api-changelog/2026/5/11) for more information.

## May 8, 2026

## v0.0.424

Fixed a bug that caused the `CustomerSummary` object to be deserialized incorrectly in customer records.
Fixed a bug that caused the `InvoiceData` object to be deserialized incorrectly in transaction records.
Regenerated the PHP SDK to incorporate latest API definition updates.

## April 30, 2026

## v0.0.423

Fixed a bug that caused `moneyIn->getpaidv2` to error when deserializing the response. Regenerated the PHP SDK to incorporate latest API definition updates.

## April 13, 2026

## v0.0.420

Regenerated the PHP SDK to incorporate latest API documentation improvements. See [April 13, 2026](/changelog/api-changelog/2026/4/13) for more information.

_Showing the 20 most recent of 32 entries. Append `/llms.txt` to the changelog URL for the complete index._