Create Payment Card for Authorized user

Create Payment Card for Authorized User

This endpoint issues a new payment card to an authorized sub-user (sub-profile) within a business customer's account. You can create a virtual card or request a physical card to be shipped by providing delivery details. The card is linked to the sub-user's associated financial account and can optionally be activated immediately upon creation.

Endpoint

POST /api/subProfiles/issuePaymentCard

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 when a business customer needs to provision a payment card for one of their authorized sub-profile users. This is appropriate when onboarding a new authorized user who requires spending capabilities, or when an existing sub-user needs an additional card. The issued card is tied to the sub-user's account and can be used for transactions immediately if activateOnCreate is set to true.

Request Body

Top-level fields (createpaymentcardrequest)

FieldTypeRequiredDescription
subProfileIdinteger (int32)NoThe numeric ID of the sub-profile (authorized user) to whom the card will be issued.
paymentCardNamestringNoA friendly display name for the card (e.g., "Travel Card").
activateOnCreatebooleanNoIf true, the card is activated immediately upon creation. Defaults to inactive if omitted.
expirationDatestring (date-time)NoDesired expiration date/time for the card in ISO 8601 format. Used for virtual or burner cards.
orderPhysicalPaymentCardobjectNoProvide this object to order a physical (plastic) card. Omit for a virtual card. See sub-fields below.
cardProfileSetIdstringNoIdentifier for the card profile set to apply branding or spend controls to the issued card.

orderPhysicalPaymentCard object

FieldTypeRequiredDescription
deliveryDetailsobjectYesShipping name, company, and address for the physical card.
courierobjectNoShipping method preference. If omitted, a default carrier and service level will be used.

deliveryDetails object

FieldTypeRequiredDescription
nameobjectYesRecipient's full name for the card envelope.
companyNamestringYesCompany name to print on the shipping label.
addressobjectYesFull shipping address for card delivery.

deliveryDetails.name object

FieldTypeRequiredDescription
givenNamestringYesRecipient's first name.
familyNamestringYesRecipient's last name.

deliveryDetails.address object

FieldTypeRequiredDescription
streetAddressstringYesStreet number and name. Must match pattern: number followed by street name (e.g., 123 Main St).
extendedAddressstringNoApartment, suite, or unit number (e.g., Apt 4B).
postalCodestringYes5-digit US ZIP code (e.g., 90210).
regionstringYes2-letter US state code (e.g., CA).
localitystringYesCity name (e.g., Los Angeles).
countryCodeAlpha3stringYesISO 3166-1 alpha-3 country code (e.g., USA). Exactly 3 characters.

courier object

FieldTypeRequiredDescription
methodstring (enum)NoShipping carrier and service level. Allowed values: USPS_GROUND, USPS_PRIORITY, USPS_EXPRESS, UPS_GROUND, UPS_SECOND_DAY, UPS_NEXT_DAY.

Example — Issue virtual card (activate immediately)

{
  "subProfileId": 4821,
  "paymentCardName": "Online Purchases",
  "activateOnCreate": true,
  "cardProfileSetId": "cps_8f3a21bc9d"
}

Example — Order physical card with shipping

{
  "subProfileId": 4821,
  "paymentCardName": "Corporate Card",
  "activateOnCreate": false,
  "orderPhysicalPaymentCard": {
    "deliveryDetails": {
      "name": {
        "givenName": "Jane",
        "familyName": "Smith"
      },
      "companyName": "Acme Corp",
      "address": {
        "streetAddress": "742 Evergreen Terrace",
        "extendedAddress": "Suite 100",
        "postalCode": "62704",
        "region": "IL",
        "locality": "Springfield",
        "countryCodeAlpha3": "USA"
      }
    },
    "courier": {
      "method": "UPS_NEXT_DAY"
    }
  },
  "cardProfileSetId": "cps_8f3a21bc9d"
}

Response

200 OK

FieldTypeDescription
idstringUnique identifier for the newly created payment card.
formFactorstringCard form factor: PHYSICAL or VIRTUAL.
binstringBank Identification Number (first 6 digits of card number).
last4stringLast 4 digits of the card number.
statusstringCurrent card status (e.g., ACTIVE, INACTIVE, SUSPENDED).
financialAccountIdstringID of the financial account this card is linked to.
isMainCardbooleanWhether this is the primary card for the sub-profile.
networkstringCard payment network (e.g., VISA, MASTERCARD).
isEmailNotifybooleanWhether email notifications are enabled for this card.
isPushNotifybooleanWhether push notifications are enabled for this card.
financialAccountobjectAbbreviated financial account info linked to this card (id, last4, name, type, accountStatus, routingNumber, clientName).
cardNamestringThe friendly name assigned to this card.
expirationDatestringCard expiration date.

financialAccount object fields

FieldTypeDescription
idstringFinancial account unique identifier.
last4stringLast 4 digits of the account number.
namestringAccount display name.
typestringAccount type (e.g., CHECKING, SAVINGS).
accountStatusstringCurrent status of the financial account.
routingNumberstringBank routing number for the account.
clientNamestringName of the account holder.
{
  "id": "pcd_a1b2c3d4e5f6",
  "formFactor": "VIRTUAL",
  "bin": "411111",
  "last4": "4242",
  "status": "ACTIVE",
  "financialAccountId": "fa_9z8y7x6w5v",
  "isMainCard": false,
  "network": "VISA",
  "isEmailNotify": true,
  "isPushNotify": false,
  "financialAccount": {
    "id": "fa_9z8y7x6w5v",
    "last4": "XXXXXXXXXX",
    "name": "Business Checking",
    "type": "CHECKING",
    "accountStatus": "ACTIVE",
    "routingNumber": "021000021",
    "clientName": "Acme Corp"
  },
  "cardName": "Online Purchases",
  "expirationDate": "2028-06-30T23:59:59Z"
}

Error Codes

CodeWhen it happens
400Missing required fields (e.g., deliveryDetails when ordering a physical card), invalid field format (e.g., wrong postalCode pattern, invalid countryCodeAlpha3 length), or unsupported courier.method value
401Bearer token is missing, expired, or invalid
403Authenticated account does not have permission to issue cards for the specified sub-profile, or sub-profile does not belong to the authenticated business customer
404The specified subProfileId does not exist
500Internal server error

Common Mistakes

  • Providing orderPhysicalPaymentCard without the required deliveryDetails object causes a 400 validation error.
  • Using a 2-letter country code (e.g., US) instead of the required ISO 3166-1 alpha-3 code (e.g., USA) for countryCodeAlpha3 will fail validation.
  • Setting activateOnCreate: true for a physical card does not mean the card is usable immediately — the card must still be physically received and may require a separate activation step depending on the card profile configuration.
  • The region field must be exactly 2 characters (US state code). Passing a full state name (e.g., California) will fail.
  • Omitting subProfileId may result in the card not being linked to the intended authorized user; confirm the sub-profile ID before calling this endpoint.
  • Using an expired or soon-to-expire Bearer token (lifetime is 10 minutes) will return a 401; refresh the token via POST /api/auth/refresh before calling this endpoint.

Related Endpoints

  • POST /api/auth/v2 — Obtain a Bearer authentication token
  • POST /api/auth/refresh — Refresh an existing Bearer token
  • GET /api/subProfiles — List all sub-profiles for the authenticated business customer
  • POST /api/subProfiles — Create a new authorized sub-profile user
  • GET /api/subProfiles/{subProfileId}/paymentCards — List all payment cards for a specific sub-profile
  • PUT /api/subProfiles/paymentCard/{cardId} — Update or manage an existing sub-profile payment card

Example

Issue a virtual card for an authorized user:

curl -X POST https://api.banking.netevia.dev/api/subProfiles/issuePaymentCard \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "subProfileId": 4821,
    "paymentCardName": "Online Purchases",
    "activateOnCreate": true,
    "cardProfileSetId": "cps_8f3a21bc9d"
  }'

Order a physical card with next-day shipping:

curl -X POST https://api.banking.netevia.dev/api/subProfiles/issuePaymentCard \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "subProfileId": 4821,
    "paymentCardName": "Corporate Card",
    "activateOnCreate": false,
    "orderPhysicalPaymentCard": {
      "deliveryDetails": {
        "name": {
          "givenName": "Jane",
          "familyName": "Smith"
        },
        "companyName": "Acme Corp",
        "address": {
          "streetAddress": "742 Evergreen Terrace",
          "extendedAddress": "Suite 100",
          "postalCode": "62704",
          "region": "IL",
          "locality": "Springfield",
          "countryCodeAlpha3": "USA"
        }
      },
      "courier": {
        "method": "UPS_NEXT_DAY"
      }
    },
    "cardProfileSetId": "cps_8f3a21bc9d"
  }'
Body Params
int32 | null
string | null
boolean
date-time
orderPhysicalPaymentCard
object
string | null
Headers
string
enum
Defaults to application/json

Generated from available response content types

Allowed:
string
enum
Defaults to application/json

Generated from available request 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