Partner Cards

Fetch card details, check funding status, freeze/unfreeze, and render the live card image and management UI via short-lived embed URLs.

GET/partner/cards/me

๐Ÿ”‘ Org key + secret๐Ÿ‘ค User session

Lists the user's cards as stored by Qwik.

200 ยท Response
{
  "cards": [
    {
      "id": "uuid",
      "payment_card_id": "upwardli-card-id",
      "upwardli_consumer_id": "...",
      "status": "active",
      "card_created_at": "...",
      "available_balance": 100.00,
      "account_number": "...",
      "routing_number": "...",
      "autopay_enabled": false,
      "pin_lock": false,
      "card_type": "credit",
      "last_four": "4242",
      "metadata": {},
      "created_at": "...",
      "updated_at": "..."
    }
  ]
}

GET/partner/cards/status

๐Ÿ”‘ Org key + secret๐Ÿ‘ค User session

A compact "does this user have a usable, funded card?" check. Pulls the latest card live from the provider.

200 ยท Response
{
  "has_card": true,
  "is_funded": true,
  "is_active": true,
  "available_balance": 100.00,
  "card_status": "active",
  "payment_card_id": "upwardli-card-id"
}

If the user has no consumer/card yet, all flags are false/null (has_card: false).

GET/partner/cards/payment-cards/:paymentCardId

๐Ÿ”‘ Org key + secret๐Ÿ‘ค User session

Full card object from the provider (status, balances, limits, etc.). 404 if the card isn't found or isn't owned by the user.

GET/partner/cards/payment-cards/:paymentCardId/freeze-status

๐Ÿ”‘ Org key + secret๐Ÿ‘ค User session
200 ยท Response
{ "paymentCardId": "uuid", "status": "active", "isFrozen": false }

paymentCardId must be a UUID.

POST/partner/cards/payment-cards/:paymentCardId/freeze

๐Ÿ”‘ Org key + secret๐Ÿ‘ค User session

Body: end_date (required, ISO date) โ€” when the freeze auto-lifts.

Body
{ "end_date": "2026-12-31T00:00:00Z" }

Response (201): provider freeze result. 404 if not owned by the user. Emits the Card.Frozen webhook.

POST/partner/cards/payment-cards/:paymentCardId/unfreeze

๐Ÿ”‘ Org key + secret๐Ÿ‘ค User session

No body. Response (201): provider unfreeze result. Emits Card.Unfrozen.

GET/partner/cards/card-image-embed

๐Ÿ”‘ Org key + secret๐Ÿ‘ค User session

Returns a short-lived URL to render the live card image (PAN/CVV) in an iframe/WebView โ€” the sensitive data never touches your servers.

200 ยท Response
{ "cardImageUrl": "https://...", "accessToken": "...", "expiresIn": 3600 }

404 if no card is available.

GET/partner/cards/card-management-embed

๐Ÿ”‘ Org key + secret๐Ÿ‘ค User session

Same idea, for the provider's full card-management UI (PIN, controls).

200 ยท Response
{ "cardManagementUrl": "https://...", "accessToken": "...", "expiresIn": 3600 }