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
- Register a credit card as payment method
- Call
GET /billing/v1/payment-methods
- 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
Bug Description
The
expires_atfield in theGET /billing/v1/payment-methodsresponse returns the current timestamp (now()) instead of the actual credit card expiration date.Steps to Reproduce
GET /billing/v1/payment-methodsexpires_atfield in the responseExpected Behavior
expires_atshould 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_atreturns 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 ofexpires_atis incorrect.Additional Context
is_expired: falsecontradicts anexpires_atvalue of today's date07:56:18is not a typical card expiry (those are always end-of-month) — it matches the time the request was madeexpires_atis populated withnow()or a similar fallback instead of the real value from the payment provider