> ## Documentation Index
> Fetch the complete documentation index at: https://docs.enfuce.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Update Card by Card ID in C2Pay

> Send a request to this endpoint to update Card info.
If you provide `cardOverrides`, the billing address fields present in `cardOverrides` override the corresponding values sent to Visa for this request.
Any billing address fields omitted from `cardOverrides` fall back to the existing stored cardholder data.
If `cardOverrides` is omitted entirely, the existing stored cardholder data is used for all billing address fields.

#### Billing address restrictions

For Click to Pay card updates, Visa applies the following restrictions to billing address fields:

- `addressLine1`-`addressLine3`: maximum 64 characters each
- `city`: maximum 32 characters
- `postalCode`: maximum 9 characters
- `country`: 3-character ISO 3166 alpha-3 code when provided
- The following characters are not allowed: `[`, `]`, `{`, `}`, `:`, `&`, `$`, `^`, `!`, `=`, `;`, `*`, `#`, backtick, `<`, `>`, `"`, `”`
- The `@` character is not allowed in billing address fields.




## OpenAPI

````yaml wallet put /v1/click2pay/VISA/update/card/{cardId}
openapi: 3.0.3
info:
  version: '1'
  title: Wallet operations
  contact:
    name: Enfuce Financial Services
    url: https://enfuce.com
    email: info@enfuce.com
  x-logo:
    url: resources/enfuce.svg
    altText: Enfuce logo
  description: >
    Wallet API enables getting needed data for tokenization and enablement in
    programs like

    Apple Pay and Google Pay, and Visa Click to Pay.


    #### Terms used

    <table>
      <tr>
        <th>Term</th>
        <th>Definition</th>
      <tr>
        <td>Customer</td>
        <td>End customer using financial institution's mobile application</td>
      </tr>
      <tr>
        <td>In-app activation</td>
        <td>Wallet provisioning using financial institution app as authentication method</td>
      </tr>
      <tr>
        <td>In-app provisioning</td>
        <td>Mastercard's term for push provisioning</td>
      </tr>
      <tr>
        <td>Push provisioning</td>
        <td>VISA's term for pushing card details from within mobile application. This term will be used in this document</td>
      </tr>
      <tr>
        <td>Wallet provider</td>
        <td>Such as Apple Pay, Google Pay or Samsung Pay </td>
      </tr>
    </table>


    It's called in two cases:

    - *Push provisioning* - this is usually done within issuers own application
    and card holder does

    not need to enter any information. Then the different endpoints for push
    provisioning must be used.

    - *In-app activation* - activating a card by manually adding information,
    then endpoint for generate activation

    data must be used after authentication of end customer is completed.


    ![ Provisioning example
    ](https://enfuce-public-resources.s3.eu-central-1.amazonaws.com/public/wallet_push_prov.svg)


    In above case the difference between push provisioning and in-app activation
    is which endpoint that is

    called in step 3.

    Note that diagram above is a simplification of full flow in order to explain
    it from a developer point of view.
servers:
  - url: >-
      https://integration-api-cat2.{{environment}}.ext.{{realm}}.cia.enfuce.com/wallet
  - url: https://integration-api-cat2.live.ext.prod.cia.enfuce.com/wallet
    description: Live environment
security: []
tags:
  - name: Push Provision
  - name: Activation data
  - name: Get tokens
  - name: Visa Click2Pay Enrol and Manage
  - name: Token Management
paths:
  /v1/click2pay/VISA/update/card/{cardId}:
    put:
      tags:
        - Visa Click2Pay Enrol and Manage
      summary: Update Card by Card ID in C2Pay
      description: >
        Send a request to this endpoint to update Card info.

        If you provide `cardOverrides`, the billing address fields present in
        `cardOverrides` override the corresponding values sent to Visa for this
        request.

        Any billing address fields omitted from `cardOverrides` fall back to the
        existing stored cardholder data.

        If `cardOverrides` is omitted entirely, the existing stored cardholder
        data is used for all billing address fields.


        #### Billing address restrictions


        For Click to Pay card updates, Visa applies the following restrictions
        to billing address fields:


        - `addressLine1`-`addressLine3`: maximum 64 characters each

        - `city`: maximum 32 characters

        - `postalCode`: maximum 9 characters

        - `country`: 3-character ISO 3166 alpha-3 code when provided

        - The following characters are not allowed: `[`, `]`, `{`, `}`, `:`,
        `&`, `$`, `^`, `!`, `=`, `;`, `*`, `#`, backtick, `<`, `>`, `"`, `”`

        - The `@` character is not allowed in billing address fields.
      operationId: updateCard1UsingPUT
      parameters:
        - name: cardId
          in: path
          description: The card id of which card you want to update.
          required: true
          schema:
            type: string
            format: biginteger
        - name: auditUser
          in: query
          description: The audit user to log the request.
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateCardRequest'
      responses:
        '202':
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VisaClick2Pay202'
        '401':
          $ref: '#/components/responses/error401'
        '403':
          $ref: '#/components/responses/error403'
        '500':
          $ref: '#/components/responses/error500'
components:
  schemas:
    UpdateCardRequest:
      type: object
      example:
        customerBID: '123456'
        cardOverrides:
          addressLine1: 1000 Market Street
          addressLine2: Building 56
          city: San Francisco
          postalCode: '94105'
          country: USA
      properties:
        customerBID:
          $ref: '#/components/schemas/CustomerBID'
        cardOverrides:
          $ref: '#/components/schemas/CardOverrides'
      required:
        - customerBID
    VisaClick2Pay202:
      example:
        requestTraceId: 351562ba-83cf-11ee-b962-0242ac120002
      properties:
        requestTraceId:
          description: Unique identifier of the request
          example: 351562ba-83cf-11ee-b962-0242ac120002
          format: uuid
          maxLength: 36
          minLength: 36
          type: string
      required:
        - requestTraceId
      type: object
    CustomerBID:
      type: string
      example: '123456'
      description: >
        Unique identifier assigned to each issuer.

        Note: If you are using our BIN sponsorship, we provide you the
        **customerBID**; else, Visa provides you the **customerBID**.
    CardOverrides:
      type: object
      description: >
        Card overrides are used to provide Visa-compliant billing address fields
        specifically for the Click to Pay request.

        Any fields present in `cardOverrides` override the corresponding billing
        address values sent to Visa for that request.

        Any omitted fields fall back to the existing stored cardholder data.
      example:
        addressLine1: 1000 Market Street
        addressLine2: Building 56
        city: San Francisco
        postalCode: '94105'
        country: USA
      properties:
        addressLine1:
          description: >-
            Visa-compliant billing address line 1 override for the enrolment
            request
          example: 1000 Market Street
          maxLength: 64
          minLength: 1
          pattern: ^[^@\[\]\{\}:&$^!=;*#`<>"”]*$
          type: string
        addressLine2:
          description: >-
            Visa-compliant billing address line 2 override for the enrolment
            request
          example: Building 56
          maxLength: 64
          minLength: 1
          pattern: ^[^@\[\]\{\}:&$^!=;*#`<>"”]*$
          type: string
        addressLine3:
          description: >-
            Visa-compliant billing address line 3 override for the enrolment
            request
          example: Suite 101
          maxLength: 64
          minLength: 1
          pattern: ^[^@\[\]\{\}:&$^!=;*#`<>"”]*$
          type: string
        city:
          description: Visa-compliant billing city override for the enrolment request
          example: San Francisco
          maxLength: 32
          minLength: 1
          pattern: ^[^@\[\]\{\}:&$^!=;*#`<>"”]*$
          type: string
        postalCode:
          description: >-
            Visa-compliant billing postal code override for the enrolment
            request
          example: '94105'
          maxLength: 9
          minLength: 1
          pattern: ^[^@\[\]\{\}:&$^!=;*#`<>"”]*$
          type: string
        country:
          description: Country code override using 3-character ISO 3166 alpha-3 format
          example: USA
          format: ISO 3166-1-alpha3
          maxLength: 3
          minLength: 3
          pattern: ^[A-Z]{3}$
          type: string
    errorResponse:
      type: object
      properties:
        code:
          type: string
          description: An error code indicating what kind of error. I.e. HTTP error code
        message:
          type: string
          description: Error message in human-readable format
        id:
          type: string
          format: uuid
          description: Unique error identifier
        errorCode:
          type: string
          description: Enfuce code for a specific error type
        errorType:
          type: string
          description: Error type
          enum:
            - STATIC_VALIDATION_ERROR
            - DYNAMIC_VALIDATION_ERROR
            - INTEGRATION_ERROR
            - SECURITY_ERROR
            - UNEXPECTED_ERROR
        errorReason:
          type: string
          description: Free-form text explaining the error reason
        timestamp:
          type: string
          format: date-time
          description: Datetime when error occurred
  responses:
    error401:
      description: Unauthorized
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/errorResponse'
    error403:
      description: Forbidden
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/errorResponse'
    error500:
      description: Internal server error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/errorResponse'

````