---
title: "Create card (PWS)"
method: POST
path: "/v1/pws_create_card"
tags: ["Ledger API - Cards"]
---

# Create card (PWS)

`POST /v1/pws_create_card`

## Request

- Base URL: `https://api.uat.paymentology.com/ppws/api`
- URL: `https://api.uat.paymentology.com/ppws/api/v1/pws_create_card`
- Auth: none declared

<ul>
<li class="docBullet">Ledger API version of the PWS <a href="https://developer.paymentology.com/bankinglive/reference/v2_pws_create_card">Create Card V2</a> call. Request and response use the same format, served by the Ledger API.</li>
<li class="docBullet">Adds <code>program_code</code> and <code>pur_region</code>.</li>
<li class="docBullet">Does not support <code>accounts</code>, <code>multiAccountCard</code>, <code>3DSTokenAndCardEnrollmentStatus</code>, <code>3ds_challenge_methods</code>, <code>remarks</code> or <code>user_id</code>.</li>
</ul>

## Request body

- LedgerCreateCardRequest
  - `api_call_unique_identifier` string, required: Unique identifier for the API request
  - `card_type` integer, required: Card type: 1=Physical, 2=Virtual
  - `client_id` integer, required: Client identifier
  - `crd_prdct_id` integer, required: Card product ID
  - `image_delivery` integer, required: Image delivery method: 1=base64, 2=byte encrypted, 3=JSON data, 4=byte encrypted masked pan, 5=reserved
  - `image_fields` string, required: Image fields
  - `image_name` string, required: Image name
  - `status_nwk` integer, required: Network status code (e.g. 1000=Fully operational, 1005=Decline all)
  - `xml_fields` string, required: XML fields
  - `cu_id` integer: Existing customer ID (if linking to existing customer)
  - `ch_title` string: Cardholder title
  - `ch_fname` string: Cardholder first name
  - `ch_sname` string: Cardholder surname
  - `ch_addr1` string: Cardholder address line 1
  - `ch_addr2` string: Cardholder address line 2
  - `ch_pcode` string: Cardholder postal code
  - `ch_city` string: Cardholder city
  - `ch_country` string: Cardholder country
  - `ch_email` string: Cardholder email
  - `ch_mobile` string: Cardholder mobile number
  - `ch_region` string: Cardholder region
  - `ch_ref` string: Cardholder reference
  - `ch_dob` string: Cardholder date of birth
  - `ac_parent_id` integer: Parent account ID for new account creation
  - `ac_id` integer: Existing account ID
  - `ac_name` string: Account name
  - `ac_ext_ref` string: Account external reference
  - `ac_desc` string: Account description
  - `ac_set_ccy` string: Account settlement currency (ISO-4217 numeric code)
  - `ac_bill_ccy` string: Account billing currency (ISO-4217 numeric code)
  - `tok_flags` string: Token flags
  - `client_card_ref` string: Client card reference
  - `product_ref` string: Product reference
  - `exp_date` string: Expiry date
  - `emboss_name` string: Emboss name
  - `card_manuf_id` integer: Card manufacturer ID
  - `del_title` string: Delivery title
  - `del_fname` string: Delivery first name
  - `del_sname` string: Delivery surname
  - `del_addr1` string: Delivery address line 1
  - `del_addr2` string: Delivery address line 2
  - `del_pcode` string: Delivery postal code
  - `del_city` string: Delivery city
  - `del_country` string: Delivery country
  - `del_region` string: Delivery region
  - `del_email` string: Delivery email
  - `del_mobile` string: Delivery mobile number
  - `del_pass_code` string: Delivery pass code
  - `del_method` integer: Delivery method: 0=Standard mail, 1=Registered mail, 2=Courier
  - `del_account` integer: Delivery account number
  - `bulk_delv_add_code` integer: Bulk delivery address code
  - `del_code` integer: Delivery code
  - `pur_cust_type` integer: Purchaser customer type: 0=Deliver to cardholder, 1=Deliver to purchaser
  - `pur_title` string: Purchaser title
  - `pur_fname` string: Purchaser first name
  - `pur_sname` string: Purchaser surname
  - `pur_addr1` string: Purchaser address line 1
  - `pur_addr2` string: Purchaser address line 2
  - `pur_pcode` string: Purchaser postal code
  - `pur_city` string: Purchaser city
  - `pur_country` string: Purchaser country
  - `pur_region` string: Purchaser region
  - `pur_email` string: Purchaser email
  - `pur_mobile` string: Purchaser mobile number
  - `pur_account` integer: Purchaser account number
  - `pur_pass_code` string: Purchaser pass code
  - `carrier_type` string: Carrier type
  - `carrier_insrt1` integer: Carrier insert 1
  - `carrier_insrt2` integer: Carrier insert 2
  - `carrier_lang` string: Carrier language (ISO 3166-1 three digits)
  - `envelope_ref` integer: Envelope type reference
  - `ext_line1` string: External line 1
  - `ext_line2` string: External line 2
  - `custom_1` string: Custom field 1
  - `emboss_line4` string: Emboss line 4
  - `track_3` string: Track 3 data
  - `fulfil1` string: Future field 1
  - `fulfil2` string: Future field 2
  - `group_id` string: Group ID
  - `crd_instr` string: Card instruction
  - `auth_type` string: Authorization type
  - `branch_name` string: Branch name
  - `fee_id` integer: Fee ID
  - `guarantee_id` integer: Guarantee ID
  - `guarantee_note` string: Guarantee note
  - `guarantee_amount` number: Guarantee amount
  - `chip_lang` string: Chip language
  - `perso_fields` string: Personalisation fields
  - `3ds_lang` string: 3DS language
  - `3ds_challenge_profile` string: 3DS challenge profile
  - `token_group_id` string: Token group ID
  - `product_configuration_id` string: Product configuration ID
  - `atm_lang` string: ATM language
  - `program_code` string: Program code for the account created with the card.

## Response `200`

Request processed. Check `header.error_id`: `0` means success. Any other value is a business error, reported with HTTP 200 and an empty `body`. Common codes: 992 (invalid account id), 993 (invalid card token), 995 (validation failed), 1043 (account does not belong to the client), 1055 (invalid program_code), 1531 (invalid customer id).

- LedgerCreateCardResponse
  - `header` LedgerApiHeader, required
    - `error_id` integer, required
    - `error_desc` string, required
  - `body` LedgerCreateCardResponseBody, required
    - `cvv` string
    - `image_base64` string
    - `epan` string
    - `emboss_name` string
    - `expiry` string
    - `token` integer
    - `ac_id` integer
    - `last_four_digit` string
    - `mpan` string
    - `bill_blk_amt` number
    - `bill_act_amt` number
    - `bill_pnd_amt` number
    - `load_ccy` string
    - `is_3ds_enrolled` boolean
    - `3ds_enrollment_failure_reason` string
    - `cu_id` integer

## Other responses

- `400`: Request validation failed (missing or invalid fields, unknown fields, malformed JSON, or `client_id` not matching the access token). `header.error_id` is 400 and `header.error_desc` describes the failure.
- `401`: Missing or invalid access token. Empty body.
- `403`: Access token rejected by the API gateway (for example, expired).
- `413`: Request body too large. `header.error_id` is 413.
- `500`: Unexpected error. `header.error_id` is 900.

## Changes

- **2026-11-03** `73c2771493b1`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/paymentology/apis/payapi-docs/changes/v1/pws_create_card/post.md)

---

[API](https://skmtc.dev/paymentology/apis/payapi-docs.md) - [All operations](https://skmtc.dev/paymentology/apis/payapi-docs/llms.txt) - [OpenAPI document](https://skmtc.dev/paymentology/apis/payapi-docs/revisions/73c2771493b1?raw)
