Breaking change for Payment Request status

Date: 11th November 2025

Overview

To improve consistency across the Adfin API, the PaymentRequest resource has been aligned with the Invoice status model. This ensures terminology and predictable state transitions between invoices and payment requests.


Old status

New Status

Description

REQUESTED

UNPAID

REQUESTED has been replaced by a new status: UNPAID
This means payment requests can be handled in the same way as invoices

CANCELLED

VOID

CANCELLED has been replaced with a new status: VOID


Endpoints affected

GET /payment_requests The status field in each listed object will now return one of the new values (UNPAID, VOID).

GET /payment_requests/[id] The status property in the response body has been updated with the same mappings.

Webhooks

Webhook payloads referencing a PaymentRequest object will also include the new status values.


Example

Before

{
  "id": "pr_123",
  "status": "REQUESTED",
  "amount": 1250,
  "due_date": "2025-11-01",
}

Ater

{
  "id": "pr_123",
  "status": "UNPAID",
  "amount": 1250,
  "due_date": "2025-11-01",
}

Impact for integrations

Impact for Integrators

  • Response Parsing: Update client applications to handle new status values.
  • Filtering & Queries: Replace deprecated status filters with the new values (UNPAID, VOID).
  • Webhooks: Downstream systems consuming webhook events should be updated accordingly.
  • UI / Reporting: Adjust labels and state mappings to reflect the new terminology.
  • Backward Compatibility: Integrations using hardcoded enums (REQUESTED, CANCELLED) will break if not updated.

Migration Guidance

  • Update enum definitions or constants to include the new statuses.
  • Refactor logic and filters using REQUESTED → UNPAID and CANCELLED → VOID.
  • Re-sync cached or stored PaymentRequest records to normalize status values.
  • Test workflows dependent on payment state transitions to ensure correct behavior.