Skip to content

SDK ⇆ API compatibility matrix

Every Paylera SDK is wire-compatible with the dated API version it was generated against, plus the immediately-preceding and immediately-following versions. This document records the current matrix and the policy for maintaining it.

Current compatibility (live, pre-v1)

The SDK suite is pre-release (0.x). All eleven packages target a single API date today; the matrix has one cell.

SDK packageSDK versionPaylera-Api-Version (default)Compatible with API dates
@paylera/sdk0.x2026-05-012026-05-01
@paylera/react0.x(relies on @paylera/sdk)2026-05-01
@paylera/server0.x(relies on @paylera/sdk)2026-05-01
@paylera/cli0.x(relies on @paylera/sdk)2026-05-01
Paylera.Sdk0.x2026-05-012026-05-01
Paylera.AspNetCore0.x(relies on Paylera.Sdk)2026-05-01
paylera (Python)0.x2026-05-012026-05-01
paylera-fastapi0.x(relies on paylera)2026-05-01
github.com/paylera/paylera-go0.x2026-05-012026-05-01
dev.paylera:paylera-sdk0.x2026-05-012026-05-01
dev.paylera:paylera-spring-boot-starter0.x(relies on the SDK)2026-05-01

The default Paylera-Api-Version is set at typed-client construction; merchants can override per-client to pin a different date.

Policy: how SDK ⇆ API compatibility is decided

A given SDK release is wire-compatible with three API dates:

  • N — the API version it was generated against (info.version in the OpenAPI spec at generation time)
  • N − 1 — the immediately-preceding dated release
  • N + 1 — the immediately-following dated release

The N−1 / N+1 windows give merchants a deployment lane wide enough to upgrade their SDK without coordinating a same-day API-version bump. Any spec change that breaks N−1 or N+1 compat requires either:

  1. A new SDK major (breaking change announced + 90-day deprecation window), or
  2. A spec amendment that re-establishes the compat window (additive-only changes within a dated release are always allowed).

What counts as a “breaking change”

Spec changeN−1 / N+1 compat?
New endpoint added✓ compatible
New optional field on existing response✓ compatible
New optional request parameter✓ compatible
Field renamed✗ breaks
Field removed✗ breaks
Required→optional on response✓ compatible
Optional→required on request✗ breaks
Enum value added✓ compatible
Enum value removed✗ breaks
HTTP status code added✓ compatible (clients must handle unknown 4xx/5xx gracefully)
HTTP status code reused for different semantics✗ breaks
Auth-scheme change✗ breaks

CI enforcement

The cross-language conformance harness at sdks/_conformance/ exercises each SDK’s relay against the current API spec — that’s the N cell.

The matrix becomes meaningful once a second dated API release ships. At that point, CI gains a per-SDK matrix dimension:

strategy:
matrix:
api_version: ["2026-05-01", "2026-08-01"] # add as new dates land
sdk_version: ["1.0.x", "1.1.x"]

The workflow at .github/workflows/sdk-compat-matrix.yml is wired today with the single-cell matrix and grows in place.

Future cells (illustrative)

Once a second API date lands, the matrix will read like:

SDK versionAPI 2026-05-01API 2026-08-01
1.0.x (generated against 2026-05-01)✓ N✓ N + 1
1.1.x (generated against 2026-08-01)✓ N − 1✓ N
1.2.x (generated against 2026-08-01 with bugfix)✓ N − 1✓ N

Anything outside the N ± 1 window prints a runtime warning when the client detects the mismatch via the Paylera-Api-Version response header.

Source of truth for this matrix

This page is the source-of-truth for the wire-compatibility statement. The sdks/RELEASE-CHECKLIST.md compat-matrix-update step runs whenever a coordinated SDK release is cut.