> 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

# Ruby SDK changelog

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

## October 27, 2026

## v3.0.21

This release includes breaking changes. It corrects the organization details types to match the API, renames the ticket amount fields 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.get_basic_organization` and `organization.get_basic_organization_by_id` now return `Payabli::Types::GetBasicOrganizationResponse` instead of `Payabli::Types::OrganizationQueryRecord`. The organization details are in `response_data`, alongside `is_success` and `response_text`.

```ruby
# Before
org = client.organization.get_basic_organization(entry: "my-org")

# After
basic = client.organization.get_basic_organization(entry: "my-org")
org = basic.response_data
```

### Organization details types match the API

`OrganizationQueryRecord` changes these field types:

* `billing_info` is now `Payabli::Types::InstrumentResponse` instead of `Payabli::Types::Instrument`. `InstrumentResponse` has `ach_account`, `ach_routing`, `billing_address`, `billing_city`, `billing_country`, `billing_state`, and `billing_zip`, which can be `nil`.
* `contacts` is now an array of `Payabli::Types::ContactsResponse` instead of `Payabli::Types::Contacts`. `ContactsResponse` has `contact_name`, `contact_email`, `contact_title`, and `contact_phone`.
* `org_logo` is now a `String`, the logo's URL, instead of `Payabli::Types::FileContent`.

It also adds `org_favicon` (`String`), the URL of the organization's favicon. The field names are unchanged, but their API names now match the PascalCase names the API returns, such as `OrgId` and `BillingInfo`.

### Ticket amount fields renamed

`PayabliCredentialsPascal` renames `max_ticket` to `maxticket` and `min_ticket` to `minticket`.

```ruby
# Before
credentials = Payabli::Types::PayabliCredentialsPascal.new(max_ticket: 1000, min_ticket: 1)

# After
credentials = Payabli::Types::PayabliCredentialsPascal.new(maxticket: 1000, minticket: 1)
```

### Organizations client (beta)

The client adds `organizations`, with `list_organizations`, `create_organization`, `get_organization`, and `update_organization`. The request for `create_organization` is `CreateOrganizationWithInlineBusiness`, `CreateOrganizationWithBusinessReference`, or `CreateOrganizationAllFields`. The methods return envelope types, such as `Payabli::Types::PaypointDetailEnvelope`. These endpoints only accept OAuth. See [OAuth authentication](/developers/oauth-authentication).

```ruby
detail = client.organizations.get_organization(organization_reference: "org-reference")
```

### Other changes

* `MethodsListOut` adds `rtp` and `wire`.
* `PaypointSummaryResponse` adds `external_id`.

## October 19, 2026

## v3.0.20

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)

`Payabli::Client` adds the `businesses`, `people`, `paypoints`, `payment_methods`, `boarding_templates`, and `applications` clients.

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

```ruby
client = Payabli::Client.new(client_id: "CLIENT_ID", client_secret: "CLIENT_SECRET")
business = client.businesses.get_business(business_reference: "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.export_applications` was already deprecated.

### Case management bank account services

`BankAccountServices` `money_in` and `money_out` now use the new `CaseManagementMoneyInService` and `CaseManagementMoneyOutService` types. They have the same values as `MoneyInService` and `MoneyOutService`, so existing code still works.

## v3.0.19

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

* `money_out.get_next_check_number(paypoint_id:, account_id:)` returns `NextCheckNumberResponse`, which has `check_number`.
* `ghost_card.delete_ghost_card(card_token:)` returns `DeleteGhostCardResponse`. Its `response_data` has `delete_type` and `card_token`.

```ruby
next_check = client.money_out.get_next_check_number(paypoint_id: 285, account_id: "ACCOUNT_ID")
deleted = client.ghost_card.delete_ghost_card(card_token: "CARD_TOKEN")
```

### Request changes

* `money_out.reissue_out` accepts `check_number:`.
* `subscription.update_subscription` accepts `invoice_data:`.
* `VendorData` adds `issue_1099`.

### Vendor 1099 flag

`VendorQueryRecord`, `VendorDataResponse`, `TransferOutDetailVendor`, and `PayoutSubscriptionVendor` add the required field `issue_1099`. `AssociatedVendor`, `VCardGetResponseAssociatedVendor`, `VendorOutData`, and `GetMethodResponseResponseDataVendorsItem` add the optional field `issue_1099`.

### Payouts that paid a bill

`BillResponseData` and `BillQueryRecord2` add `transactions`, an array of `BillTransactionReference` that can be `nil`. Each entry has `id_out` and `payment_id`.

### Card-present device details

* `TransactionQueryRecords` and `TransactionQueryRecordsCustomer` add `device_entry_mode`, `emv_auth_data` (`EmvAuthData`, with `request_emv_data` and `response_emv_data`), and `device_data` (`QueryDeviceData`). All three can be `nil`.
* `DeviceQueryRecord` adds the required field `operational_status` (`DeviceQueryRecordOperationalStatus::ONLINE`, `BUSY`, or `OFFLINE`), plus `app_version` and `os_version`, which can be `nil`.

## October 14, 2026

## v3.0.18

The get payout subscription response now uses its own camelCase types, and payout subscription and vendor responses add fields. This release also covers v3.0.16 and v3.0.17, which shipped without changelog entries. See [October 14, 2026](/changelog/api-changelog/2026/10/14) for more information.

### New types in the get payout subscription response

`Payabli::Types::PayoutSubscriptionQueryRecord` now returns `PayoutSubscriptionVendor` from `vendor`, `PayoutSubscriptionBill` items from `bill_data`, and `PayoutSubscriptionPaymentData` from `payment_data`. In list payout subscriptions, `PayoutSubscriptionQueryRecordPascal#payment_data` returns a `PayoutSubscriptionPaymentDataPascal`.

### New fields

The payout subscription records add `same_day_ach`, `do_not_create_bills`, `allow_duplicated_bills`, `auto_convert_same_day_ach`, and `subscription_type`. `VendorQueryRecord#stored_methods` items are now `VendorStoredMethod`, which adds `is_default`. `VendorQueryRecord` adds `vendor_portal`, and `BillingDataResponse` adds `country`.

## October 5, 2026

## v3.0.15

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 returns a new type

`notificationlogs.retry_notification_log` now returns `Payabli::Types::NotificationRetryResponse`, which has a single `message` field, instead of `Payabli::Types::NotificationLogDetail`.

```ruby
# Before
log = client.notificationlogs.retry_notification_log(uuid: "UUID") # NotificationLogDetail

# After
retry_response = client.notificationlogs.retry_notification_log(uuid: "UUID")
puts retry_response.message
```

### Notification log fields

* `response_status` on `NotificationLog` and `NotificationLogDetail` can no longer be `nil`. It holds a status message such as `OK`. The HTTP status code is in the new `response_status_code`.
* Both types add the required fields `organization_name`, `paypoint_name`, `request_id`, and `response_status_code`.
* `NotificationLog` adds the required fields `notification_type`, `organization_logo`, `organization_fav_icon`, and `paypoint_logo`.
* On `NotificationLogDetail`, `response_content` is now required. `response_headers` and `web_headers` are now always present and can be `nil`.
* There's a new `Payabli::Types::NotificationLogBase` class.

### Customer fields on stored payment methods

On `GetMethodResponseResponseDataCustomersItem`, `first_name` and `last_name` are now `firstname` and `lastname`.

#### Removed and added fields

Removed: `additional_data`, `billing_address_1`, `billing_address_2`, `billing_city`, `billing_country`, `billing_email`, `billing_phone`, `billing_state`, `billing_zip`, and `shipping_address_2`.

Added: `additional_fields`, `address`, `address_1`, `city`, `country`, `customer_events`, `customer_portal`, `email`, `phone`, `shipping_address`, `state`, and `zip`.

### New response fields

* `AddMethodResponse` adds `page_identifier`, and `AddMethodResponseResponseData` adds `auth_code`, `avs_response_text`, `cvv_response_text`, and `vendor_id`.
* `GetMethodResponseResponseData` adds `wallet_type`.
* `OcrResultData` adds `total_amount` and `discount`.

## September 18, 2026

## v3.0.14

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

## September 16, 2026

## v3.0.13

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

## September 10, 2026

## v3.0.12

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

## September 9, 2026

## v3.0.11

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

## August 28, 2026

## v3.0.10

### New `business_summary` field on `PaypointData`

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

## July 28, 2026

## v3.0.8

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

## July 27, 2026

## v3.0.7

Added OAuth2 client-credentials support. Pass `client_id`/`client_secret` instead of `api_key` and the SDK handles the token exchange and refresh automatically:

```ruby
client = Payabli::Client.new(
    client_id: "...",
    client_secret: "...",
    base_url: Payabli::Environment::SANDBOX
)
```

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

## July 20, 2026

## v3.0.4

Changed the `VendorQueryRecord.additional_data` type from `Internal::Types::Hash[String, Internal::Types::Hash[String, Object]]` to `Internal::Types::Hash[String, String]` to match the API.

## June 30, 2026

## v3.0.2

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

## June 11, 2026

## v3.0.1

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

## June 8, 2026

## v3.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-ruby/blob/main/reference.md).

### Type namespace consolidated

Every resource-scoped type module (`Payabli::<Resource>::Types::`) is collapsed into `Payabli::Types::`. This affects every class reference in your code.

#### Removed namespaces

* `Payabli::MoneyIn::Types::`
* `Payabli::MoneyOut::Types::`
* `Payabli::MoneyOutTypes::Types::` — including `AuthCapturePayoutResponse`, `CaptureAllOutResponse`, `VCardGetResponse`, `OperationResult`, `AllowedCheckPaymentStatus`, `ReissuePayoutResponse`
* `Payabli::V2MoneyInTypes::Types::` — including `V2TransactionResponseWrapper`
* `Payabli::QueryTypes::Types::` — including all query response types
* `Payabli::TokenStorage::Types::`
* `Payabli::Subscription::Types::`
* `Payabli::PayoutSubscription::Types::`
* `Payabli::Notification::Types::`
* `Payabli::Boarding::Types::`
* `Payabli::Invoice::Types::`
* `Payabli::Bill::Types::`
* `Payabli::User::Types::`
* `Payabli::Export::Types::` — `ExportFormat1` is now `Payabli::Types::ExportFormat1`

### Request wrapper types removed

The following wrapper types are deleted. All methods now accept flat keyword arguments directly.

#### Removed wrapper types and affected methods

| Removed type                    | Method                                           | Fields now passed as                             |
| ------------------------------- | ------------------------------------------------ | ------------------------------------------------ |
| `SubscriptionRequestBody`       | `subscription.new_subscription`                  | Top-level keyword args                           |
| `PayoutSubscriptionRequestBody` | `payout_subscription.create_payout_subscription` | Top-level keyword args                           |
| `AuthorizePayoutBody`           | `money_out.authorize_out`                        | Top-level keyword args                           |
| `ReissuePayoutBody`             | `money_out.reissue_out`                          | `payment_method: { ... }` top-level keyword args |

The `new_subscription` method gains new top-level keyword params:

* `invoice_data:`
* `subscription_type:`
* `source:`
* `subdomain:`

The `create_payout_subscription` method gains new top-level keyword params:

* `set_pause:`
* `source:`
* `account_id:`
* `subdomain:`
* `payment_details:`

## May 20, 2026

## v2.2.31

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

## May 11, 2026

## v2.2.30

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

## May 8, 2026

## v2.2.27

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 Ruby SDK to incorporate latest API definition updates.

## April 30, 2026

## v2.2.26

Fixed a bug that caused `money_in.getpaidv_2` to error when deserializing the response. Regenerated the Ruby SDK to incorporate latest API definition updates.

## April 13, 2026

## v2.2.24

Regenerated the Ruby 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 27 entries. Append `/llms.txt` to the changelog URL for the complete index._