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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions