Convert a Virtual Card to a Physical Card

Outcome

Use this guide to convert an existing virtual card into a physical card through PayAPI.

The conversion uses the existing Paymentology public card token. It is not a new-card issuance flow: do not create a new customer, account, or card immediately before conversion. The converted card then enters the configured manufacturing and fulfilment process.

Who this is for

AudienceResponsibility
Backend EngineerIdentifies the existing virtual card, submits the conversion request, persists the result, and implements idempotency and reconciliation.
Product ManagerConfirms physical-conversion eligibility, cardholder experience, activation policy, and replacement/renewal boundaries.
Operations and Fulfilment TeamConfirms manufacturer, card artwork, personalisation, carrier, delivery, file-schedule, and support arrangements.

Overview

Prerequisites

Before converting a card, the following program-level configuration is enabled in cooperation with Paymentology:

PrerequisiteDescription
Client and API accessA valid client_id and permission to call the conversion endpoint.

The configuration is done during the onboarding in cooperation the Paymentology Implementation team.
Existing virtual cardA virtual card already issued to the client, identified by its public card token.
Existing customer and accountThe virtual card’s customer and account should already exist and be linked to the card. Do not create duplicates for conversion.
Physical conversion entitlementThe program and target environment must support virtual-to-physical conversion.
Physical fulfilment configurationManufacturer, card artwork, personalisation, carrier, envelope, inserts, delivery, and manufacturer-file arrangements must be agreed.
Conversion status policyAn agreed policy for the card’s status and transaction behaviour before, during, and after physical fulfilment.

The conversion request does not accept crd_prdct_id. Do not assume it can select a different card product during conversion; confirm the configured eligibility in the target environment.


Recommended conversion flow

Identify the virtual card

Retrieve the existing public card token from the virtual-card issuance response or your card-management record.

The public token identifies the card to be converted. It is not the PAN and is not a digital-wallet token.

Before conversion, validate that:

  • The card belongs to the intended customer and program.
  • The card is eligible for conversion.
  • The physical-card manufacturer and fulfilment design are ready.
  • The client has no unresolved conversion attempt for the same card.

Do not create a second customer, account, or card as a workaround for conversion.


Physical personalisation and delivery

Use the Create Card request’s physical-card fields only where they are agreed for the program and supported by the selected manufacturer.

AreaExamples of relevant fields
Cardholder details i.e. the person whose name is associated with the card.

Use the ch_* fields to describe the person who will hold and use the card.

If you provide an existing cu_id, the Create Card contract states that the cardholder fields are not required. Use this pattern when the customer has already been created through Create Customer and you want one durable customer record to be reused across cards and accounts.

If you do not provide cu_id, provide the cardholder details required by your program. Do not send conflicting cu_id and ch_* data without agreeing which source is authoritative.

Delivery recipient and address

Use the del_* fields to state where and how the physical card should be delivered. These fields describe delivery logistics, not the identity of the cardholder.

Use them when the delivery recipient or address differs from the cardholder, or when the manufacturer and courier process requires explicit delivery information.

Purchaser delivery

A purchaser is the person or organisation arranging the card, rather than necessarily the person who will use it. This is relevant when a company, parent, guardian, or other authorised third party requests delivery for a cardholder.

pur_cust_type selects the address source for an individual delivery:
  • 0 - Deliver to the cardholder address.
  • 1 - Deliver to the purchaser address.
When pur_cust_type is 1, provide a complete and internally consistent pur_* identity and address set. When it is 0, ensure the cardholder details are sufficient for the agreed delivery design.
Carrier and packaging

A carrier is the physical packaging that holds the card when it is sent to the recipient. It can include printed information, terms, welcome material, activation instructions, or other inserts.

These fields, carrier_type, carrier_insrt1, carrier_insrt2, carrier_lang, envelope_ref, tell the physical-card fulfilment process which configured packaging components to use. Their allowed values are program- and manufacturer-specific.

Delivery grouping

Use bulk_delv_add_code when several physical cards should be delivered together to the same destination - for example, a batch of employee cards delivered to one company office.

Paymentology uses this value to group delivery information in the physical-card personalisation file under the BULK_DEL section.

Additional personalisation

These optional fields, ext_line1, ext_line2, custom_1, emboss_line4, carry additional card personalisation data to the manufacturer file: extra text lines, custom vendor data such as QR-code content, and a fourth front-of-card emboss line.

Some reserved values can automatically insert the card’s public token. Confirm the final printed placement and supported content with the configured card manufacturer.

The API creates the physical-card definition. The card is then included in the configured embossing or manufacturer-file process. File generation and dispatch frequency must be confirmed during onboarding; they are not proof of card delivery.


Convert the virtual card to physical

API Reference: Card Conversion V2

Required inputs:

FieldValue / purpose
client_idYour program client ID
api_call_unique_identifierIdempotency identifier for this conversion attempt
tokenThe existing virtual card’s public token
image_name

Send a configured image name and validate the target-environment outcome.

The Java model applies a maximum length validation but does not independently reject an empty value.

Conditionally mandatory inputs:

The API model marks the following fields optional. They become mandatory when required by the selected manufacturer, delivery method, physical-card design, or operational policy.

ConditionFieldValue / purpose
The program uses a non-default manufacturercard_manuf_idSelects the configured manufacturer.
The physical-card design requires a printer referenceproduct_refIdentifies the physical-card design used by the printer.
The card must have an embossed nameemboss_nameSupplies the name used for the physical-card design.
Delivery requires an explicit recipient and addressRelevant del_* fields, del_method, del_region, and optionally del_codeIdentifies the delivery recipient, address, contact details, and delivery method.
A purchaser receives the card on behalf of the cardholderpur_cust_type: 1 and the relevant pur_* fields

A purchaser is the person or organisation arranging the card, rather than necessarily the person who will use it. This is relevant when a company, parent, guardian, or other authorised third party requests delivery for a cardholder.

pur_cust_type selects the address source for an individual delivery:
  • 0 - Deliver to the cardholder address.
  • 1 - Deliver to the purchaser address.
When pur_cust_type is 1, provide a complete and internally consistent pur_* identity and address set. When it is 0, ensure the cardholder details are sufficient for the agreed delivery design.
Multiple cards share one delivery addressbulk_delv_add_code and consistent delivery information

Use bulk_delv_add_code when several physical cards should be delivered together to the same destination - for example, a batch of employee cards delivered to one company office.

Paymentology uses this value to group delivery information in the physical-card personalisation file under the BULK_DEL section.

Packaging is selected per cardcarrier_type, carrier_insrt1, carrier_insrt2, carrier_lang, envelope_ref

A carrier is the physical packaging that holds the card when it is sent to the recipient. It can include printed information, terms, welcome material, activation instructions, or other inserts.

The fields tell the physical-card fulfilment process which configured packaging components to use. Their allowed values are program - and manufacturer-specific.

Additional personalisationext_line1, ext_line2, custom_1, emboss_line4

These optional fields, ext_line1, ext_line2, custom_1, emboss_line4, carry additional physical-card personalisation data to the manufacturer file: extra text lines, custom vendor data such as QR-code content, and a fourth front-of-card emboss line.

Some reserved values can automatically insert the card’s public token. Confirm the final printed placement and supported content with the configured card manufacturer.

The program requires a specific expiry or fulfilment instructionexp_date, crd_instr, fulfil1, fulfil2Supplies program-specific physical-card or fulfilment data.

The API response returns the converted card’s identifiers, including the supplied public token and associated account ID. Treat PAN, CVV, card image, and response data as sensitive.


Reconcile the result and confirm manufacturing processing

Store the response and associate it with your conversion business reference and api_call_unique_identifier.

Confirm that:

  • The response public token is the expected original card public token.
  • The linked account ID is the expected account.
  • The card enters the agreed manufacturer and fulfilment process.
  • The generated manufacturer file contains the expected personalisation, packaging, and delivery details.

The API response does not prove that the card was physically manufactured, dispatched, or delivered.


No customer or account creation in this journey

Virtual-to-physical conversion is not an account-onboarding flow.

RecordRequired before conversion?Created by conversion?
CustomerYes; already associated with the virtual cardNo new customer is created by the API layer
AccountYes; already linked to the virtual cardNo new account is created by the API layer
Virtual cardYes; identified by the public tokenConverted rather than replaced by a newly issued card
Card productAlready configuredNot selected or created by this endpoint
Delivery and purchaser dataOptional, depending on fulfilment designThe procedures return delivery/purchaser IDs; exact create-versus-update behaviour must be confirmed in UAT
Manufacturer-file outputRequired operational outcomeValidate with the configured manufacturer
Digital-wallet tokenNot requiredNot created by this journey

Set card status after conversion

The conversion request does not accept status_nwk and does not call Set Card Status.

If the program requires a status change after delivery or cardholder verification, call Set Card Status separately.

API Reference: Set Card Status V2

FieldValue / purpose
client_idYour program client ID
api_call_unique_identifierIdempotency identifier for the status-change request
status_nwkTarget status, for example 1000 for fully operational

More information about the card statuses is available at Card status.
tokenThe converted card’s public token

Conversion does not prove activation, blocking, or continued transaction usability. Confirm the card’s status and run the agreed controlled authorisation test before relying on the physical card.


What is changed by conversion

RecordChanged by conversion?
Existing cardYes; the existing virtual card is converted to physical-card form.
Public card tokenNo new public token is created; the supplied public token is returned.
CustomerNo new customer is created.
AccountNo new account is created; the associated account ID is returned.
Delivery and purchaser recordsProcedure behaviour is environment-dependent; validate the resulting IDs and records in UAT.
Manufacturer outputExpected operational outcome; validate the actual file, personalisation, and delivery process.
Card statusCard is deactivated, once the physical card is received, it needs to be re-activated.
Digital-wallet tokenNot created or proven to be updated by this journey.

Important considerations

  • This is a conversion, not physical-card issuance, replacement, or renewal.
  • Do not issue a second physical card through Create Card when the intended outcome is conversion of the existing virtual card.
  • The conversion endpoint uses the existing public card token; do not confuse it with PAN or a wallet/network token.
  • The conversion endpoint is idempotent. Persist api_call_unique_identifier, business reference, request payload fingerprint, and response before retrying.
  • A timeout does not prove that conversion failed. Reconcile the original request before retrying.
  • Do not retry a conversion using a new business request or identifier without confirming whether manufacturing records were already created.
  • The conversion endpoint does not prove the card’s resulting status, transaction continuity, or delivery outcome. Validate these separately.
  • Treat PAN, CVV, card images, personalisation data, delivery addresses, and contact details as sensitive data.

Testing

Test caseExpected result
Happy path: eligible virtual cardConversion succeeds and returns the existing public card token and linked account ID.
Customer and account continuityThe intended customer and account remain associated with the converted card.
Manufacturer routingThe converted card enters the expected UAT manufacturer-file or fulfilment process.
Physical personalisationThe agreed card artwork, embossing, custom fields, carrier, inserts, envelope, and language appear correctly in manufacturer test output.
Delivery and purchaser dataThe agreed recipient, address, and delivery-grouping data are correct.
Invalid public token or unauthorised clientThe request fails clearly and no unintended fulfilment record is created.
Duplicate submissionRepeating the same conversion request with the same idempotency identifier does not create an unintended second conversion outcome.
Timeout and reconciliationThe client can determine whether the original conversion succeeded before retrying.
Status validationCard status is checked before and after conversion; any change follows the agreed status policy.
Controlled authorisationThe agreed test proves actual transaction behaviour after conversion; do not infer it from the conversion response.
Sensitive-data handlingPAN, CVV, images, personalisation, address, and contact details are absent from unsafe logs, monitoring traces, analytics, and support tickets.

Errors, retries, and request correction

Use header.error_id and header.error_desc as the primary outcome signal. Do not decide whether to retry from the HTTP status alone.

For an uncertain or retryable conversion attempt, resend the identical payload with the same api_call_unique_identifier. Do not create a new identifier until you have reconciled whether conversion, delivery-record creation, or manufacturer processing has already started.

Retry automatically

Error IDError descriptionAutomatic retry?Required retry behaviour
No responseNo PayAPI response receivedYesRetry the same payload and identifier after backoff. Do not alter the delivery, purchaser, manufacturer, or personalisation inputs.
1066Original request still processing. Please try again later.Yes, after waitingDo not send a parallel conversion request. Wait, then resend the unchanged request with the same identifier.
987We are temporarily unable to handle the request. Please try again later.YesUse bounded retry with the same payload and identifier. Reconcile after retry exhaustion.
988Error executing Request. Contact Paymentology for supportYesUse bounded retry with the same payload and identifier. Escalate repeated failures.
989Error executing Request. Contact Paymentology for supportYesPerform a controlled retry with the same payload and identifier. Reconcile repeated failures.
1034Failed to create card,please contact the paymentology supportYes, controlledThis generic failure is allow-listed for V2 reprocessing. Retry the identical conversion request once, then investigate and escalate if it persists.

Do not retry automatically

Error IDError descriptionAutomatic retry?Required action
995model Validation FailedNoCorrect missing or invalid request fields. The public token is mandatory and must be a positive number; delivery, purchaser, carrier, and personalisation fields must meet their defined formats and lengths.
990The client_id is invalid! Please provide a valid client idNoCorrect the client ID or target-environment configuration.
993api_call_unique_identifier already been used!NoReconcile the original conversion. Create a new identifier only for a genuinely new conversion attempt.
994The token is invalid !NoCorrect the existing public card token and confirm it belongs to the client. Do not substitute a PAN, account ID, or wallet token.
996Permission denied ! The client does not have access to this web service. Contact PaymentologyNoCorrect endpoint entitlement or client access in the target environment.
997Description varies; for example, Token Details Not Found. or Config not available for tokenNoCorrect the missing card, product, account, configuration, or relationship identified by error_desc.
1012The manufacturer id is not available in repositoryNoCorrect the configured or supplied card_manuf_id.
1013The manufacturer id is not associated with the client idNoSelect a manufacturer enabled for the client.
1016Customer stack is empty !NoCorrect the relevant downstream card or customer configuration. This error is covered by conversion tests and is not in the conversion endpoint’s retry allow-list.
1017card image data is not configuredNoCorrect the image configuration or image_name before reattempting conversion.
1021Inserting delivery details failed during physical card createNo automatic retryVerify del_* inputs, delivery method, carrier configuration, and agreed physical-personalisation design. Reconcile before submitting another request.
1022Inserting purchaser details failed during physical card createNo automatic retryVerify pur_* inputs and pur_cust_type. Reconcile before submitting another request.
1025The card is physical. Use virtual card for card conversionNoThe source card is already physical and cannot be converted again. Retrieve the card form and stop the conversion flow.
1028Weak cvv computed. Change expiry and resend request againNoChange the expiry input as instructed, then submit a new conversion request.
1035Failed to create card image ,please contact the paymentology supportNo automatic retryVerify image and product configuration, then escalate persistent failures.
1036Failed to encrypt card fileNo automatic retryReconcile card form and manufacturer-file state, then escalate to Paymentology Support.
1038Failed to upload into Sftp folderNo automatic retryReconcile whether conversion and manufacturer output occurred. Treat this as a fulfilment-processing incident and escalate.

Related APIs


Did this page help you?