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
Lists the user's cards as stored by Qwik.
{
"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
A compact "does this user have a usable, funded card?" check. Pulls the latest card live from the provider.
{
"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
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
{ "paymentCardId": "uuid", "status": "active", "isFrozen": false }
paymentCardId must be a UUID.
POST/partner/cards/payment-cards/:paymentCardId/freeze
Body: end_date (required, ISO date) โ when the freeze auto-lifts.
{ "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
No body. Response (201): provider unfreeze result. Emits Card.Unfrozen.
GET/partner/cards/card-image-embed
Returns a short-lived URL to render the live card image (PAN/CVV) in an iframe/WebView โ the sensitive data never touches your servers.
{ "cardImageUrl": "https://...", "accessToken": "...", "expiresIn": 3600 }
404 if no card is available.
GET/partner/cards/card-management-embed
Same idea, for the provider's full card-management UI (PIN, controls).
{ "cardManagementUrl": "https://...", "accessToken": "...", "expiresIn": 3600 }