Skip to content

[BUG] expires_at field in Payment Method API returns current timestamp instead of actual card expiry date #38

@AHeinrich1

Description

@AHeinrich1

Bug Description

The expires_at field in the GET /billing/v1/payment-methods response returns the current timestamp (now()) instead of the actual credit card expiration date.

Steps to Reproduce

  1. Register a credit card as payment method
  2. Call GET /billing/v1/payment-methods
  3. Inspect the expires_at field in the response

Expected Behavior

expires_at should return the actual expiration date of the credit card as provided by the payment provider (e.g. 2028-03-31T23:59:59Z).

Actual Behavior

expires_at returns a timestamp matching the moment of the API call, not the card's real expiry date.

Response received on 2026-03-31 at ~07:56 UTC:

{
  "id": 40011176,
  "name": "Credit Card",
  "identifier": "25**********1008",
  "is_expired": false,
  "is_suspended": false,
  "created_at": "2025-11-14T17:14:59Z",
  "expires_at": "2026-03-31T07:56:18Z"
}

Screenshots

N/A

Error Messages / Stack Trace

No error — the endpoint returns 200 OK, but the value of expires_at is incorrect.

Additional Context

  • is_expired: false contradicts an expires_at value of today's date
  • The time component 07:56:18 is not a typical card expiry (those are always end-of-month) — it matches the time the request was made
  • The card in question is valid well beyond the returned date
  • Likely cause: expires_at is populated with now() or a similar fallback instead of the real value from the payment provider

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions