# tipalti_client v1.0.0 - Table of Contents

> A complete, production-grade Elixir client for the Tipalti API surface: the modern OAuth2 REST API, the legacy HMAC-signed SOAP Payee/Payer API, and the Procurement REST API, with pagination, retries, telemetry, and IPN webhook support.

## Pages

- [Tipalti](readme.md)
- [Changelog](changelog.md)
- [LICENSE](license.md)

## Modules

- [Tipalti](Tipalti.md): A production-grade Elixir client for the full Tipalti API surface.
- [Tipalti.HTTP](Tipalti.HTTP.md): Minimal HTTP transport used by every Tipalti API family.

- REST
  - [Tipalti.Auth.TokenServer](Tipalti.Auth.TokenServer.md): Caches an OAuth 2.0 client-credentials access token for the modern REST
API and refreshes it automatically shortly before it expires.
  - [Tipalti.Invoices](Tipalti.Invoices.md): Modern REST API — invoice/bill submission and management. See the caveat
in `Tipalti.Payees` about endpoint-shape assumptions; the same applies
here.

  - [Tipalti.Payees](Tipalti.Payees.md): Modern REST API — payee onboarding and management.
  - [Tipalti.Payments](Tipalti.Payments.md): Modern REST API — mass payout initiation and tracking. See the caveat in
`Tipalti.Payees` about endpoint-shape assumptions; the same applies here.

- SOAP
  - [Tipalti.SOAP.Client](Tipalti.SOAP.Client.md): Generic engine behind `Tipalti.SOAP.Payee` and `Tipalti.SOAP.Payer`.
  - [Tipalti.SOAP.Payee](Tipalti.SOAP.Payee.md): Legacy SOAP API — Payee Functions (`PayeeFunctions.asmx`).
  - [Tipalti.SOAP.Payer](Tipalti.SOAP.Payer.md): Legacy SOAP API — Payer Functions (`PayerFunctions.asmx`).
  - [Tipalti.SOAP.Signature](Tipalti.SOAP.Signature.md): Implements Tipalti's SOAP API request signing scheme.

- Procurement
  - [Tipalti.Procurement.Employees](Tipalti.Procurement.Employees.md): Procurement REST API — bulk employee import via CSV.
  - [Tipalti.Procurement.PurchaseOrders](Tipalti.Procurement.PurchaseOrders.md): Procurement REST API — purchase order sync.

- Support
  - [Tipalti.Client](Tipalti.Client.md): Shared JSON/REST request helper used by `Tipalti.Payees`, `Tipalti.Invoices`,
`Tipalti.Payments`, and the `Tipalti.Procurement.*` modules.
  - [Tipalti.Config](Tipalti.Config.md): Holds credentials and connection settings for all three Tipalti API
families. Build one with `new/1` and pass it as the first argument to
every `Tipalti.*` function.
  - [Tipalti.Error](Tipalti.Error.md): Base exception raised by every `!` function in this package and returned
(unraised, as the error element of an `{:error, exception}` tuple) by
every non-bang function.
  - [Tipalti.Pagination](Tipalti.Pagination.md): Builds lazy `Stream`s over paginated list endpoints so callers can
`Enum.take/2`, pipe into `Enum.reduce/3`, etc. without manually tracking
page cursors.
  - [Tipalti.RateLimiter](Tipalti.RateLimiter.md): An optional, self-contained token-bucket rate limiter.
  - [Tipalti.Telemetry](Tipalti.Telemetry.md): Documents the `:telemetry` events this package emits. There's nothing to
call here — attach your own handler with `:telemetry.attach/4` or
`:telemetry.attach_many/4`.
  - [Tipalti.Webhook](Tipalti.Webhook.md): Parses Tipalti IPN (Instant Payment Notification) callbacks.

- Exceptions
  - [Tipalti.APIError](Tipalti.APIError.md): Raised when the API responds with a well-formed error payload.
  - [Tipalti.AuthenticationError](Tipalti.AuthenticationError.md): Raised when credentials are missing, invalid, or an OAuth2 token could not be obtained/refreshed.
  - [Tipalti.NetworkError](Tipalti.NetworkError.md): Raised when a request fails at the transport level after retries are exhausted.
  - [Tipalti.RateLimitError](Tipalti.RateLimitError.md): Raised on HTTP 429 or a Procurement API rate-limit rejection.
  - [Tipalti.SOAPFaultError](Tipalti.SOAPFaultError.md): Raised when the SOAP API returns a `<soap:Fault>` element.
  - [Tipalti.ValidationError](Tipalti.ValidationError.md): Raised for locally-detected or server-rejected malformed input.

