> 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

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

### Import paths consolidated

All types are now importable from the top-level `payabli` package. The following submodules no longer exist:

#### Removed submodules

* `payabli.money_in` — types moved to `payabli`
* `payabli.money_out_types` — types moved to `payabli`
* `payabli.query_types` — types moved to `payabli`
* `payabli.v_2_money_in_types` — types moved to `payabli`

#### Example import changes

| Old                                                                 | New                                                 |
| ------------------------------------------------------------------- | --------------------------------------------------- |
| `from payabli.money_in import RequestCreditPaymentMethod`           | `from payabli import RequestCreditPaymentMethod`    |
| `from payabli.money_out_types import AuthorizePaymentMethod`        | `from payabli import AuthorizePaymentMethod`        |
| `from payabli.money_out_types import ReissuePaymentMethod`          | `from payabli import ReissuePaymentMethod`          |
| `from payabli.money_out_types import RequestOutAuthorizeVendorData` | `from payabli import RequestOutAuthorizeVendorData` |
| `from payabli.payout_subscription import PayoutPaymentDetail`       | `from payabli import PayoutPaymentDetail`           |
| `from payabli.payout_subscription import PayoutScheduleDetail`      | `from payabli import PayoutScheduleDetail`          |
| `from payabli.paypoint import NotificationRequest`                  | `from payabli import NotificationRequest`           |
| `from payabli.token_storage import TokenizeCard`                    | `from payabli import TokenizeCard`                  |

### Request wrapper types removed

The following wrapper types are deleted. Their fields are now passed directly as keyword arguments to the calling method.

#### Removed types and their replacements

| Removed type                           | Fields now on                                                |
| -------------------------------------- | ------------------------------------------------------------ |
| `AuthorizePayoutBody`                  | `money_out.authorize_out(...)` kwargs                        |
| `ReissuePayoutBody`                    | `money_out.reissue_out(payment_method=...)`                  |
| `SubscriptionRequestBody`              | `subscription.new_subscription(...)` kwargs                  |
| `PayoutSubscriptionRequestBody`        | `payout_subscription.create_payout_subscription(...)` kwargs |
| `UpdatePayoutSubscriptionBody`         | `payout_subscription.update_payout_subscription(...)` kwargs |
| `PaypointMoveRequest`                  | `paypoint.migrate(...)` kwargs                               |
| `VendorEnrichRequest`                  | `vendor.enrich_vendor(...)` kwargs                           |
| `NotificationLogSearchRequest`         | `notificationlogs.search_notification_logs(...)` kwargs      |
| `CreateApplicationFromPaypointRequest` | `boarding.add_service_to_paypoint_from_app(...)` kwargs      |
| `PaymentPageRequestBody`               | `payment_link.add_pay_link_from_invoice(...)` kwargs         |
| `PatchOutPaymentLinkRequest`           | `payment_link.patch_out_payment_link(...)` kwargs            |

The `notificationlogs.search_notification_logs` method now requires `start_date` and `end_date` as explicit keyword arguments. They were previously optional fields inside the removed wrapper.

### `method` is now required on all payment types

The `method` field previously defaulted to a value on each payment type. It's now required and has no default.

#### Affected types

| Type              | Old                                             | New                                        |
| ----------------- | ----------------------------------------------- | ------------------------------------------ |
| `PayMethodCredit` | `method: Literal["card"] = "card"` (optional)   | `method: PayMethodCreditMethod` (required) |
| `PayMethodAch`    | `method: Literal["ach"] = "ach"` (optional)     | `method: PayMethodAchMethod` (required)    |
| `PayMethodCloud`  | `method: Literal["cloud"] = "cloud"` (optional) | `method: PayMethodCloudMethod` (required)  |
| `Cash`            | `method: Literal["cash"] = "cash"` (optional)   | `method: CashMethod` (required)            |
| `Check`           | `method: Literal["check"] = "check"` (optional) | `method: CheckMethod` (required)           |

### V2 error types renamed

The per-endpoint V2 error classes from `payabli.v_2_money_in_types.errors` are removed. V2 endpoints now raise the same error types as all other methods.

| Old exception                   | New exception          | HTTP status |
| ------------------------------- | ---------------------- | ----------- |
| `BadRequestAuthResponseErrorV2` | `BadRequestError`      | 400         |
| `DeclinedAuthResponseErrorV2`   | `PaymentRequiredError` | 402         |
| `InternalServerResponseErrorV2` | `InternalServerError`  | 500         |

`ConflictError` has been removed from `payabli.errors`. `PaymentRequiredError` has been added.

### Type renames

#### Renamed types

| Old name                            | New name            | Used in                      |
| ----------------------------------- | ------------------- | ---------------------------- |
| `VendorData` (bill vendor field)    | `BillOutDataVendor` | `bill.add_bill(vendor=...)`  |
| `ApplicationDataPayInServicesAch`   | `AchSetup`          | `boarding.add_application()` |
| `ApplicationDataPayInServicesCard`  | `CardSetup`         | `boarding.add_application()` |
| `ApplicationDataPayInContactsItem`  | `Contacts`          | `boarding.add_application()` |
| `ApplicationDataPayInOwnershipItem` | `Owners`            | `boarding.add_application()` |

### Notification log ID type changed

`get_notification_log`, `retry_notification_log`, and `bulk_retry_notification_logs` now accept `str` instead of `uuid.UUID` for ID parameters.

### Subscription date format changed

`ScheduleDetail.start_date` and `ScheduleDetail.end_date` now use ISO 8601 (`YYYY-MM-DD`) instead of `MM-DD-YYYY`.