> 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

## v2.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.retry_notification_log` now returns `Result<NotificationRetryResponse, ApiError>` instead of `Result<NotificationLogDetail, ApiError>`. `NotificationRetryResponse` has a single `message` field. `notificationlogs.bulk_retry_notification_logs` now returns `Result<String, ApiError>` instead of `Result<(), ApiError>`.

```rust
// Before
let log: NotificationLogDetail = client.notificationlogs.retry_notification_log("UUID", None).await?;

// After
let retry: NotificationRetryResponse = client.notificationlogs.retry_notification_log("UUID", None).await?;
let message: String = retry.message;
let bulk: String = client
    .notificationlogs
    .bulk_retry_notification_logs(&BulkRetryRequest(vec!["UUID".to_string()]), None)
    .await?;
```

### Notification log fields moved to a base type

The shared notification log fields now live in the new `NotificationLogBase` type, flattened into `NotificationLog` and `NotificationLogDetail` as `notification_log_base_fields`. On `NotificationLog`, these fields were top-level. On `NotificationLogDetail`, they were in `notification_log_fields: NotificationLog`.

```rust
// Before
let id = &log.id;
let id = &detail.notification_log_fields.id;

// After
let id = &log.notification_log_base_fields.id;
let id = &detail.notification_log_base_fields.id;
```

* `response_status` is now `String` instead of `Option<String>`. It holds a status message such as `OK`. The HTTP status code is in the new `response_status_code` (`i64`).
* `NotificationLogBase` adds 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 `String` instead of `Option<String>`.

Builders for these types fail with `BuildError` when a new required field is missing.

### Customer fields on stored payment methods

`GetMethodResponseResponseDataCustomersItem` no longer has `payor_data_request_fields: PayorDataRequest`. Its fields are now top-level and match the customer record. `first_name` and `last_name` are now `firstname` and `lastname`.

```rust
// Before
let first = &customer.payor_data_request_fields.first_name;

// After
let first = &customer.firstname;
```

#### Moved, removed, and added fields

Moved from `payor_data_request_fields` to the top level: `company`, `customer_id`, `customer_number`, `identifier_fields`, `shipping_address_1` (now `Option<Shippingaddressadditional>`), `shipping_city`, `shipping_country`, `shipping_state`, and `shipping_zip`.

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` (`Option<f64>`).