All notable changes to AdyenClient are documented in this file. Format follows Keep a Changelog. Versioning follows Semantic Versioning.


[Unreleased]


1.0.0 — 2026-05-14

Added

Core infrastructure

  • AdyenClient.Config — NimbleOptions-free config with defaults, validation, and URL routing for all 22 Adyen host patterns across test and live environments
  • AdyenClient.Client — HTTP client with Req: JSON encode/decode, X-API-Key auth, auto-generated Idempotency-Key on POST, exponential-backoff retry, telemetry
  • AdyenClient.Error — structured error type implementing Exception; fields: type, status, message, error_code, psp_reference, raw, retryable
  • AdyenClient.Telemetry[:adyen_client, :request, :start/stop] telemetry events with PCI-field redaction (cardNumber, cvv, cvc, holderName, etc.)
  • AdyenClient.CircuitBreaker — GenServer circuit breaker (closed → open → half-open)
  • AdyenClient.RateLimiter — token-bucket GenServer rate limiter (100 req/s, burst 200)
  • AdyenClient.Application (internal OTP supervisor) — starts CircuitBreaker + RateLimiter

Online Payments

In-Person Payments

Management API (v3)

Platforms & Financial Products

Classic APIs

Webhooks

  • AdyenClient.Webhooks.HMAC — HMAC-SHA256 validation for standard and Balance Platform webhooks; constant-time secure_compare/2 to prevent timing attacks
  • AdyenClient.Webhooks.Handler@behaviour with handle_event/2 callback; safe dispatch/2 that isolates handler exceptions per notification item
  • AdyenClient.Webhooksprocess/3 pipeline (parse JSON → validate all HMAC → dispatch); parse/1; validate_all/2
  • AdyenClient.Webhooks.Plug — Phoenix/Plug drop-in: raw body passthrough, HMAC validation, dispatch, [accepted] response; read_body/2 for Plug.Parsers

Documentation & tooling

  • Full @spec and @type coverage — Dialyzer-clean
  • Explicit @spec on all TerminalSettings functions (no metaprogramming)
  • Dialyzer config in mix.exs with PLT path, flags, and ignore file
  • .dialyzer_ignore.exs for runtime-dep false positives
  • ExDoc group configuration for all 66 modules
  • mix lint alias: format --check-formatted + credo --strict + dialyzer
  • mix lint.ci alias for CI pipelines
  • Guide pages: configuration, webhooks, error handling, telemetry