Get list of Payment cards

Get List of Payment Cards

The GET /api/paymentCards endpoint retrieves all payment cards linked to the authenticated customer's account. The response includes masked card numbers, card type, expiration details, network, status, and the financial accounts each card is associated with. This endpoint supports both personal and business customers and returns paginated results via a cursor-based connection structure.

Endpoint

GET /api/paymentCards

Authentication

Bearer token required. Obtain via:

POST https://api.banking.netevia.dev/api/auth/v2

Include in header: Authorization: Bearer {token} Token lifetime: 10 minutes. Refresh via POST /api/auth/refresh.

When to use

Use this endpoint to display a customer's card portfolio in a dashboard or card management screen. It is the primary way to enumerate all physical, virtual, and burner cards for a given account holder, including cards assigned to authorized users (subProfiles) on business accounts. Call this endpoint before performing card-specific operations (e.g., freeze, update spending limits) to obtain the card id required by those endpoints.

Response

200 OK

The response is wrapped in a GraphQL-style edge/node connection. The top-level node is an accountholder object containing account holder identity and a nested paymentCards connection.

Top-level response — edge_accountholder

FieldTypeDescription
cursorstringPagination cursor for this edge
nodeobjectAccount holder object containing identity and card data

nodeaccountholder

FieldTypeDescription
typenamestringDiscriminator indicating the account holder type (e.g., "PersonAccountHolder", "BusinessAccountHolder")
nameobjectPersonal name of the account holder (see person.name below)
businessProfileobjectBusiness name details; present only for business customers
primaryAuthorizedPersonobjectName of the primary authorized person on a business account
paymentCardsobjectPaginated connection containing all payment cards (see connection_paymentcardresponse below)

nameperson.name

FieldTypeDescription
givenNamestringFirst name
familyNamestringLast name
titlestringName title (e.g., "Mr.", "Dr.")
suffixstringName suffix (e.g., "Jr.", "III")
middleNamestringMiddle name

businessProfile.namebusiness.businessname

FieldTypeDescription
legalBusinessNamestringRegistered legal name of the business
doingBusinessAsNamestringDBA (trade) name, if applicable

paymentCardsconnection_paymentcardresponse

FieldTypeDescription
pageInfoobjectPagination metadata (see pageinfo below)
edgesarrayArray of edge objects, each containing a cursor and a paymentcardresponse node

pageInfopageinfo

FieldTypeDescription
startCursorstringCursor of the first item in the current page
endCursorstringCursor of the last item in the current page; pass as after in next request to fetch the next page
hasNextPagebooleantrue if more pages exist after the current page
hasPreviousPagebooleantrue if more pages exist before the current page

edges[].nodepaymentcardresponse

FieldTypeDescription
idstringUnique identifier of the payment card
binstringBank Identification Number (first 6 digits of the card number)
last4stringLast 4 digits of the card number
statusstringCurrent card status (e.g., "ACTIVE", "SUSPENDED", "CLOSED")
formFactorstringPhysical form of the card (e.g., "PHYSICAL", "VIRTUAL")
expirationDatestringFull expiration date (format: MM/YY)
expirationMonthstringExpiration month (two-digit, e.g., "09")
expirationYearstringExpiration year (two- or four-digit, e.g., "2027")
networkstringCard network (e.g., "VISA", "MASTERCARD")
cardTypeintegerCard type enum: 0 = Unknown, 1 = Physical, 2 = Virtual, 3 = Burner, 4 = Other
cardholderstringName printed on the card
financialAccountsarrayFinancial accounts linked to this card (see financialaccountshort below)
subProfilestringIdentifier of the authorized user (subProfile) this card is assigned to, if applicable
departmentstringDepartment label associated with the card (business accounts)

financialAccounts[]financialaccountshort

FieldTypeDescription
idstringUnique identifier of the linked financial account
namestringDisplay name of the linked financial account
{
  "cursor": "Y3Vyc29yOnYyOpK5MjAyNC0wMS0xNVQxMjowMDowMCswMDowMM4A",
  "node": {
    "typename": "BusinessAccountHolder",
    "name": {
      "givenName": "Jane",
      "familyName": "Smith",
      "title": null,
      "suffix": null,
      "middleName": null
    },
    "businessProfile": {
      "name": {
        "legalBusinessName": "Acme Corporation LLC",
        "doingBusinessAsName": "Acme Corp"
      }
    },
    "primaryAuthorizedPerson": {
      "name": {
        "givenName": "Jane",
        "familyName": "Smith",
        "title": null,
        "suffix": null,
        "middleName": null
      }
    },
    "paymentCards": {
      "pageInfo": {
        "startCursor": "Y3Vyc29yOnYyOpHOAA==",
        "endCursor": "Y3Vyc29yOnYyOpHOBB==",
        "hasNextPage": false,
        "hasPreviousPage": false
      },
      "edges": [
        {
          "cursor": "Y3Vyc29yOnYyOpHOAA==",
          "node": {
            "id": "pcd_01HQ8K3MNPZ2VWXY4567890ABC",
            "bin": "411111",
            "last4": "4242",
            "status": "ACTIVE",
            "formFactor": "PHYSICAL",
            "expirationDate": "09/27",
            "expirationMonth": "09",
            "expirationYear": "2027",
            "network": "VISA",
            "cardType": 1,
            "cardholder": "JANE SMITH",
            "financialAccounts": [
              {
                "id": "fac_01HQ8K3MNPZ2VWXY1234567DEF",
                "name": "Business Checking"
              }
            ],
            "subProfile": null,
            "department": "Operations"
          }
        },
        {
          "cursor": "Y3Vyc29yOnYyOpHOBB==",
          "node": {
            "id": "pcd_01HQ8K3MNPZ2VWXY9876543XYZ",
            "bin": "411111",
            "last4": "8888",
            "status": "ACTIVE",
            "formFactor": "VIRTUAL",
            "expirationDate": "02/26",
            "expirationMonth": "02",
            "expirationYear": "2026",
            "network": "VISA",
            "cardType": 2,
            "cardholder": "JOHN DOE",
            "financialAccounts": [
              {
                "id": "fac_01HQ8K3MNPZ2VWXY1234567DEF",
                "name": "Business Checking"
              }
            ],
            "subProfile": "sub_01HQ8K3MNPZ2VWXY1111111SUB",
            "department": "Marketing"
          }
        }
      ]
    }
  }
}

Error Codes

CodeWhen it happens
401Token missing, expired, or invalid
403Insufficient permissions to view payment cards
500Internal server error

Common Mistakes

  • Forgetting that card numbers are never returned in full — use bin + last4 to identify a card in UI display; do not attempt to reconstruct the full PAN.
  • Ignoring pagination: if pageInfo.hasNextPage is true, you must make additional requests using the endCursor value to retrieve all cards.
  • Treating cardType as a string — the schema defines it as an integer enum (04); map to labels (Physical, Virtual, Burner) in your client code.
  • Assuming subProfile is always present — it is null for cards owned directly by the main account holder and only populated for authorized user (subProfile) cards on business accounts.
  • Confusing formFactor (the physical/digital form) with cardType (the product type) — both may be needed to fully categorize a card.

Related Endpoints

  • POST /api/paymentCards — Issue a new payment card (physical, virtual, or burner)
  • GET /api/paymentCards/{cardId} — Retrieve details for a specific payment card by ID
  • PUT /api/paymentCards/{cardId}/status — Update the status of a payment card (freeze, unfreeze, close)
  • GET /api/financialAccounts — List financial accounts that can be linked to payment cards
  • GET /api/subProfiles — List authorized users (subProfiles) for a business account

Example

curl -X GET https://api.banking.netevia.dev/api/paymentCards \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json"
Headers
string
enum
Defaults to application/json

Generated from available response content types

Allowed:
Response

Language
Credentials
Bearer
JWT
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
text/plain
application/json
text/json