Packages
A production-grade, fully-typed Elixir client for the SumUp API (Checkouts, Readers, Customers, Transactions, Payouts, Receipts, Members, Memberships, Roles and Merchants) with telemetry, retries, cursor streaming, webhook handling, and RFC 9457 aware error handling.
Current section
Files
Jump to
Current section
Files
CHANGELOG.md
# Changelog
All notable changes to this project are documented in this file.
The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
## [1.0.0] - Unreleased
### Added
- Initial release covering the full SumUp API surface, verified
field-by-field against SumUp's published OpenAPI spec:
Checkouts (including payment-method discovery and Apple Pay sessions),
Readers (including live device status), Customers, Payment Instruments,
Transactions (including refunds), Payouts, Receipts, Members,
Memberships, Roles, and Merchants.
- `Sumup.Config` ā `NimbleOptions`-validated client configuration with
lazy secret resolution (`{:system, var}` / `{module, fun, args}`).
- `Sumup.Client` ā shared HTTP transport with exponential backoff +
jitter retries, `retry-after` support, and `:telemetry` spans.
- `Sumup.Error` ā unified decoding of both RFC 9457 Problem Details and
SumUp's legacy (single or list) error shapes.
- `Sumup.Money.Float` / `Sumup.Money.MinorUnit` ā the two money
representations used across the API, plus currency exponent helpers.
- `Sumup.Pagination` ā lazy `Stream`-based cursor/offset pagination,
used by `Sumup.Transactions.list_all/3` and `Sumup.Members.list_all/3`.
- `Sumup.Webhooks` / `Sumup.WebhookEvent` ā parsing and handling for
SumUp's checkout webhooks. Reflects, rather than papers over, the fact
that these webhooks carry no HMAC/signature: `verify/2` performs the
server-side re-fetch SumUp's own docs recommend as the actual trust
boundary.
- Full test suite (160 tests) using `Req.Test` stubs (no external HTTP
server dependency) covering happy paths, validation failures, retry/
backoff behavior, pagination edge cases, and money/error normalization
boundary conditions; `credo --strict` and `dialyzer` clean.
- `RELEASING.md` ā a step-by-step hex.pm publish checklist.