Issue Virtual Payment Card
The POST /api/paymentCards endpoint issues a virtual payment card linked to a customer's financial account. Upon successful issuance, the API returns the card's details — including card number, CVV, and expiration date — for immediate use in online transactions. Virtual cards are generated instantly and do not require a physical card to be shipped.
Endpoint
POST /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 when a customer needs a virtual payment card for online purchases or digital transactions without waiting for a physical card. Virtual cards are linked to a specific financial account and can be activated immediately upon issuance. This is suitable for both business customers issuing cards to authorized users (subprofiles) and personal customers who need a digital-only card.
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
financialAccountId | string | Yes | The unique identifier of the financial account to link the card to. Minimum length: 1 character. |
expirationDate | string (date-time) | No | Desired expiration date and time for the card (ISO 8601 format). If omitted, the platform sets a default expiration. |
activateNow | boolean | No | If true, the card is activated immediately upon issuance. Defaults to false if not specified. |
paymentCardName | string | No | A display name or label for the card (e.g., "Marketing Expenses"). Nullable. |
partnerId | integer (int32) | No | The partner identifier. Used when issuing cards under a specific partner context. Nullable. |
cardProfileSetId | string | No | Identifier for the card profile set to apply to this card (controls spending controls, limits, etc.). Nullable. |
subProfileId | integer (int32) | No | For business customers only: the subprofile (authorized user) ID to associate this card with. Nullable. |
{
"financialAccountId": "fa_8d3e2c1b4a9f",
"expirationDate": "2027-12-31T23:59:59Z",
"activateNow": true,
"paymentCardName": "Online Purchases",
"partnerId": 101,
"cardProfileSetId": "cps_standard_virtual",
"subProfileId": null
}Response
200 OK
| Field | Type | Description |
|---|---|---|
cardId | string | Unique identifier for the newly issued virtual card. |
cardNumber | string | The virtual card number (masked in logs as XXXX-XXXX-XXXX-XXXX). |
cvv | string | The card verification value for online transactions. |
expirationDate | string (date-time) | The expiration date of the issued card. |
status | string | Current status of the card (e.g., ACTIVE, INACTIVE). |
financialAccountId | string | The financial account this card is linked to. |
paymentCardName | string | The display name assigned to the card, if provided. |
{
"cardId": "pc_7f4a2e9b1c3d",
"cardNumber": "XXXX-XXXX-XXXX-4321",
"cvv": "***",
"expirationDate": "2027-12-31T23:59:59Z",
"status": "ACTIVE",
"financialAccountId": "fa_8d3e2c1b4a9f",
"paymentCardName": "Online Purchases"
}Error Codes
| Code | When it happens |
|---|---|
| 400 | Missing required financialAccountId, invalid field format, or validation failure |
| 401 | Token missing, expired, or invalid |
| 403 | Insufficient permissions to issue a card for the given account or subprofile |
| 404 | financialAccountId or subProfileId not found |
| 500 | Internal server error |
Common Mistakes
- Omitting
financialAccountId— this is the only required field and the request will fail without it. - Passing
subProfileIdfor a personal customer account — subprofiles are supported for business customers only. - Providing an
expirationDatein the past or with an incorrect ISO 8601 format, which will result in a 400 validation error. - Expecting an immediate active card when
activateNowis not explicitly set totrue— cards default to inactive and must be activated separately if this flag is omitted.
Related Endpoints
GET /api/paymentCards— List all payment cards for the authenticated customerGET /api/paymentCards/{cardId}— Retrieve details for a specific payment cardPUT /api/paymentCards/{cardId}— Update settings or status of an existing payment cardPOST /api/paymentCards/{cardId}/activate— Activate a previously inactive cardDELETE /api/paymentCards/{cardId}— Cancel or close a payment card
Example
curl -X POST https://api.banking.netevia.dev/api/paymentCards \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"financialAccountId": "fa_8d3e2c1b4a9f",
"expirationDate": "2027-12-31T23:59:59Z",
"activateNow": true,
"paymentCardName": "Online Purchases",
"partnerId": 101,
"cardProfileSetId": "cps_standard_virtual",
"subProfileId": null
}' 200Success
