Skip to content

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

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

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