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

# Push Cards to Token Requestors

> Send a request to this endpoint to add the cards to the digital wallet or the merchant.




## OpenAPI

````yaml json-files/wallet.openapi.json post /v1/wallet/mdestokenconnect/push
openapi: 3.0.3
info:
  description: >
    Wallet API enables getting needed data for tokenization and enablement in
    programs like

    Apple Pay and Google 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.
  version: '1'
  title: Wallet operations
  contact:
    name: Enfuce Financial Services
    url: https://enfuce.com
    email: info@enfuce.com
  x-logo:
    url: https://developer.enfuce.com/images/enfuce.svg
    altText: Enfuce logo
servers:
  - url: https://api.{{tenant}}.ext-uat1-sandbox.mycore.enfuce.com/issuer
    description: UAT Sandbox
  - url: https://api.{{tenant}}.eu.live.prod.mycore.enfuce.com/issuer
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Push Provision
  - name: Activate token
  - name: Get tokens
paths:
  /v1/wallet/mdestokenconnect/push:
    post:
      tags:
        - Push Cards
      summary: Push Cards to Token Requestors
      description: >
        Send a request to this endpoint to add the cards to the digital wallet
        or the merchant.
      operationId: pushCardsToTokenRequestor
      parameters:
        - $ref: '#/components/parameters/x-audit-user'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PushAccountsToTokenRequestorRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PushAccountsToTokenRequestorResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
components:
  parameters:
    x-audit-user:
      in: header
      name: x-audit-user
      required: false
      description: Optional audit user header
      schema:
        type: string
  schemas:
    PushAccountsToTokenRequestorRequest:
      type: object
      required:
        - tokenRequestorId
        - cardIds
      properties:
        tokenRequestorId:
          type: string
          description: Unique identifier of the token requestor.
          example: '50123456789'
        cardIds:
          type: array
          minItems: 1
          maxItems: 5
          description: List of card IDs to be added to the token requestor server.
          items:
            type: string
            format: uuid
            example: 20218aae-b15e-406c-9e9f-23735cd86a48
        callbackURL:
          type: string
          description: The token requestor's mobile or web application URI.
          example: http://www.tokenIssuer1.com/pushtoken
        locale:
          type: string
          description: >
            Cardholder's preferred locale (language and country). This
            information is useful to the token requestor to provide an optimised
            user experience. **Format**: Two letter ISO 639-1 language in
            lowercase, with a underscore (”_”), followed by two letter ISO
            3166-1 country code in uppercase.
          example: en_US
        includeAccountHolderData:
          type: array
          description: >
            Account holder's information. Information included in this list is
            sent to the token requestor, only when requestor supports
            `supportedAccountHolderData`. Otherwise the values are filtered out.
            Possible values are:
             * `ALL_SUPPORTED`: The Token Requestor's accepts `supportedAccountHolderData` object.
             * `NAME`: The first and the last name of the account holder.
             * `ADDRESS`: The billing address for the account holder.
             * `EMAIL_ADDRESS`: The email address for the account holder.
             * `MOBILE_PHONE_NUMBER`: The mobile phone number for the account holder.
          items:
            type: string
            enum:
              - ALL_SUPPORTED
              - NAME
              - ADDRESS
              - EMAIL_ADDRESS
              - MOBILE_PHONE_NUMBER
            example: ADDRESS
        requestIssuerInitiatedDigitizationData:
          description: >
            Indicates whether the endpoint response would include issuer
            initiated digitization data (push provisioning information).
            Possible values are:

            - `TRUE`- Send `YES` if the endpoint response must include push
            provisioning data.

            - `FALSE`- Send `NO` if the endpoint response must not include push
            provisioning data.
          type: boolean
          readOnly: true
          example: false
        tokenRequestorSessionId:
          type: string
          description: >-
            The session Id provided by the token requestor; applicable when the
            card is added through pull provisioning method.
          minLength: 3
          maxLength: 64
          example: dbc55444-496a-4896-b41c-5d5e2dd431e2
    PushAccountsToTokenRequestorResponse:
      type: object
      properties:
        signatureAccountData:
          description: >-
            Mastercard-signed package that validates the authenticity of the
            push provisioning response. Your application infrastructure uses
            this data before redirecting the cardholder to the digital
            wallet/merchant (for example, through a redirect or SDK call). The
            wallet can verify the response originated from Mastercard MDES.
          type: string
          example: >-
            ew0KImFsZyI6ICJSUzI1NiIsDQoNCiJraWQiOiAiYXNkZmctcXdlcnR5LXp4Y3ZiIg0KfQ.ew0KDQrCoCJwdXNoQWNjb3VudFJlY2VpcHQiOiAiTUNDLVNUTC0xMzQzMTNCRi01NTg1LTRFNzEtQUIyNC1FQ0RCQzI4RjIzRjEiLA0KImlzc3VlckNhbGxCYWNrIjogImh0dHBzOi8vaXNzdWVyY2FsbGJhY2sudXJsIiwNCiJjYWxsYmFja1JlcXVpcmVkIjogdHJ1ZSwNCiJjb21wbGV0ZVdlYnNpdGVBY3RpdmF0aW9uIjogdHJ1ZSwNCiJhY2NvdW50SG9sZGVyRGF0YVN1cHBsaWVkIjogdHJ1ZSwNCiJsb2NhbGUiOiAiZW5fVVMiDQoNCn0.dBjftJeZ4CVP-
        pushAccountReceipts:
          type: array
          description: Returned for each card added to the digital wallet/merchant.
          items:
            type: object
            required:
              - cardId
              - pushAccountReceipt
            properties:
              cardId:
                type: string
                description: Unique identifier of a card added to digital wallet/merchant.
                format: uuid
                example: 20218aae-b15e-406c-9e9f-23735cd86a48
              pushAccountReceipt:
                type: string
                description: >-
                  Unique reference number to identify the card added to the
                  digital wallet/merchant.
                example: MCC-C307F0AE-298E-48EB-AA43-A7C40B32DDDE
              issuerInitiatedDigitizationData:
                type: string
                writeOnly: true
                description: >
                  Base64Encoded String of fundingAccountInfo object that issuer
                  can pass to Token Requestor proprietary communication.
                example: >-
                  eyJmdW5kaW5nQWNjb3VudEluZm8iOnsicHVzaEFjY291bnRSZWNlaXB0IjoiTUNDLVNUTC00OTZCNjNBOC02OTQzLTRFM0YtOEYzNi1DMjU0M0Q4OTg1ODQifX0=
              errors:
                type: array
                items:
                  type: object
                  required:
                    - source
                    - reasonCode
                  properties:
                    source:
                      type: string
                      description: |
                        Indicates the source of the error. Possible values are:
                         * `INPUT`: Service input data triggered an error.
                         * `MDES`: MDES reported an error.
                      example: INPUT
                      maxLength: 32
                    reasonCode:
                      type: string
                      description: >
                        A reason code for the error that has occurred. See Error
                        Reason Code definitions for the appropriate API service.
                      example: INVALID_FIELD_LENGTH
                      maxLength: 100
                    description:
                      type: string
                      description: |
                        Describes why the operation failed.
                      example: Invalid Field Length - {field name}
                      maxLength: 256
                    errorCode:
                      type: string
                      description: |
                        HTTP error response code
                         cases.
                         __Max Length:__ 100
                      example: '1234'
                    recoverable:
                      type: boolean
                      description: |
                        Only generated by Open API. See Open API documentation.
                      example: true
        availablePushMethods:
          type: array
          description: >
            Array of push methods supported by the token requestor. Present only
            when the push operation is successful.
          items:
            $ref: '#/components/schemas/PushMethod'
    PushMethod:
      type: object
      required:
        - type
        - uri
      properties:
        type:
          type: string
          description: >
            The push method type corresponding to the URI supported by the Token
            Requestor. The array is absent if the Token Requestor does not
            support MDES Token Connect.

            __Max Length:__ 32

            Possible values are:
             * "ANDROID": The URI is an Android app intent.
             * "IOS": The URI is an iOS app intent.
             * "WEB": The URI is a browser URL.
          enum:
            - ANDROID
            - IOS
            - WEB
          example: WEB
        uri:
          type: string
          description: >
            The token requestor's application or website URI. | _Note_: Refer to
            the Issuer Interface Implementation Guide for the detail of how to
            send the data to the Token Requestor.

            __Max Length:__ 128
          example: http://www.tokenrequestor1.com/pushtoken
    ErrorResponse:
      type: object
      properties:
        type:
          description: The problem type.
          type: string
        title:
          description: The reason phrase of HttpStatus.
          type: string
        status:
          description: HTTP problem status.
          type: number
        detail:
          description: The problem detail.
          type: string
        instance:
          description: The request path.
          type: string
        id:
          description: Unique error identifier.
          type: string
          format: uuid
        timestamp:
          description: Date-time when error occurred.
          type: string
          format: date-time
  responses:
    Unauthorized:
      description: Unauthorized
    Forbidden:
      description: Forbidden
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            type: about:blank
            title: Forbidden
            status: 403
            detail: Access Denied
            instance: /v1/cards
            id: 5cc541cb-f456-4331-b537-d2380fca0403
            timestamp: '2026-02-24T12:34:56Z'
    NotFound:
      description: Not found
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            type: about:blank
            title: Not Found
            status: 404
            detail: >-
              Entity not found - Program with id:
              2ec117b7-454e-4cc5-8b89-dea5485aab2b
            instance: /v1/cards
            id: 5cc541cb-f456-4331-b537-d2380fca0404
            timestamp: '2026-02-24T12:34:56Z'
    InternalServerError:
      description: Internal server error
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            type: about:blank
            title: Internal Server Error
            status: 500
            detail: Unexpected error occurred.
            instance: /v1/cards
            id: 5cc541cb-f456-4331-b537-d2380fca0500
            timestamp: '2026-02-24T12:34:56Z'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

````