Skip to content

    Issuer DLCM - Scheme Tokenization

    Issuer DLCM - Scheme Tokenization services enables you with one interface to create digital customer journeys for your full card portfolio of physical and virtual cards. Both as mono- and multi-scheme issuer, you benefit greatly from the state-of-the-art scheme agnostic interface delivered via the DLCM API.

    URLs

    Authorization server Base URL - Production

    https://api-gateway2.nets.eu/

    Authorization server Base URL - Sandbox

    https://api-gateway-pp.nets.eu/

    Authentication

    Before you can use Scheme Tokenization API, you must go through on-boarding process.

    You will receive two keys, one set for Sandbox and another set for Production access, which are the pairs of unique identifier called "Client ID" and "Client Secret". The Client Secret should not be shared with anyone. The two keys will be needed to authenticate your application to the respective environments. The key for the sandbox environment is used for a test transaction, and that of the production environment for a live transaction.

    You need access tokens to invoke Scheme Tokenization API's resources. Access tokens are passed in the HTTP header when invoking the API. The Authorization server provides a Token Endpoint that you can use to generate or renew your access token. The response of the Token Endpoint is a JSON message. You extract the token for the JSON and pass it with an HTTP Authorization header to access the API.

    In case of theft or a security violation, you can revoke an access token by calling a Revoke Endpoint.

    OAuth 2.0

    OAuth 2.0 is the industry-standard protocol for authorization. Read more at The OAuth 2.0 Authorization Framework, https://tools.ietf.org/html/rfc6749.

    Scheme Tokenization API currently supports OAuth 2.0 Specification with confidential client type. A Confidential client is capable of maintaining the confidentiality of its credentials provided by an authorization server. OAuth 2.0 defines four roles:

    1. Resource owner: An entity capable of granting access to a protected resource.
    2. Resource server: The server hosting protected resources, capable of accepting and responding to protected resource requests using access tokens.
    3. Client: An application making protected resource requests on behalf of the resource owner and with its authorization.
    4. Authorization server: The server issuing access tokens to the client after successfully authenticating the resource owner obtaining authorization.

    At a very high-level, it is possible to break the full OAuth flow into two parts.

    1. Get a token from the authorization server.
    2. Use the token to access the resource server. OAuth 2.0 defines a concept called "authorization grant" which is a credential representing the resource owner's authorization (to access its protected resources) used by the client to obtain an access token. Scheme Tokenization API supports Client Credentials grant type.

    Authorization server

    Token Endpoint


    POST /token


    With the Client Credentials grant type, the client can request an access token using only its credentials when the client is requesting access to the protected resource under its control. Once the client makes this request to the authorization server, it will return an access token to the protected resource. The access token returned to the client for Scheme Tokenization API is Bearer type.

    The client should request access tokens with the minimal necessary scope and lifetime. The authorization server takes the client identity into account when choosing how to honour the requested scope and lifetime, and may issue an access token with less rights than requested.

    Generate access token using Client Credential grant type

    1. Obtain a valid client_id and Client_secret.
    2. Combine the pair in the format client_id:client_secret and encode the combined string
    3. using base64. See Encode to Base64 format, https://www.base64encode.org/
    4. Use the following sample curl command to obtain the access token.
      $ curl -k -d "grant_type=client_credentials" \
        -H "Authorization: Basic <Base64 encoded client_id:client_secret>" \
        -H 'Content-Type: application/x-www-form-urlencoded' \
         https://api-gateway2.nets.eu/token
    

    You receive a response similar to the following:

      {
        "token_type":"Bearer",
        "expires_in":2061,
        "access_token":"ca19a540f544777860e44e75f605d927"
      }
    

    Note that, according to OAuth2.0 Authorization Framework, the Client Credential grant type does not allow for the issuing the refresh tokens. See https://tools.ietf.org/html/rfc6749#section-4.4.3

    Revoke Endpoint


    POST /revoke


    Parameters

    • token (required)

      The token to be revoked

    • <Base64 encoded client_id:client_secret> (required)

      Combine the pair in the format client_id:client_secret and encode the combined string using base64.

    • token_type_hint (optional)

      If you do not specify this parameter, the authentication server will search in both key spaces (access_token and refresh_token) and if it finds a matching token then it will be revoked. Therefore, if this parameter is not specified, it will take longer to revoke the token. However, if you specify this parameter, the authentication server only searches in the respective token space. Hence, it is much faster to revoke the token. For the Client Credentials grant type, you have only the option of access_token.

    Example:

      $ curl -X POST \
        https://api-gateway2.nets.eu/revoke \
        -H 'Authorization: Basic <Base64 encoded client_id:client_secret>' \
        -H 'Content-Type: application/x-www-form-urlencoded' \
        -d 'token=<token_to_be_revoked>&token_type_hint=<access_token_or_refresh_token>'
    

    Responses

    • Valid token - HTTP Status 200 - OK

      You receive an empty response with the HTTP status as 200. The following HTTP headers are returned:

      Revokedaccesstoken: a0d210c7a3de7d548e03f1986e9a5c39
      Authorizeduser: admin@carbon.super
      Revokedrefreshtoken: 5e87a8235cd4d066e15c4c989f5ecf94
      Content-Type: text/html
      Pragma: no-cache
      Cache-Control: no-store
      Date: Tue, 23 Aug 2018 19:28:52 GMT
      Transfer-Encoding: chunked
      
    • Invalid token - HTTP Status 200 - OK You still receive an empty response with the HTTP status as 200 but only the following HTTP headers are returned:

      Content-Type: text/html
      Pragma: no-cache
      Cache-Control: no-store
      Date: Tue, 23 Aug 2018 19:31:45 GMT
      Transfer-Encoding: chunked
      

      Because the authorization server cannot find the token in any key space, you will not see Revokedaccesstoken or Revokedrefreshtoken in the HTTP headers.

    API Specification

    Headers and payload

    Request data must be in JSON format. The Content-Type header value must be application/json.

    Response will be in JSON format. The Accept header value must be application/json.

    Reason codes and account actions

    Account actionReason codeService APIDescription
    0000Create/register accountAdd new account
    RENEW0001Update Account Number orExpiry DateRenewed for new expiry date
    REPLACE0002Update Account Number orExpiry DateUpdate account info due to replacement
    REPLACE0003Update Account Number orExpiry DateUpdate account info due to brand flip
    0004Update IDVUpdate contact information
    0005Change the state of an accountDelete account due to fraud
    0006Change the state of an accountDelete account as card is lost
    0007Change the state of an accountDelete account as card is stolen
    0008Change the state of an accountDelete account due to expiry and no renewal
    0009Change the state of an accountDelete account as per customer request
    0010Change the state of an accountBlock the existing account
    0011Change the state of an accountResume the blocked account
    0012Update Services NeededServices needed for the account is updated
    REPLACE0013Update Account Number orExpiry DateUpdate account info due to portfolio flip
    0100Change the state of a virtual accountDelete virtual account
    0105Change the state of a virtual accountDelete virtual account due to confirmed fraud
    0106Change the state of a virtual accountDelete virtual account as devices is confirmed lost
    0107Change the state of a virtual accountDelete virtual account as device is confirmed stolen
    0108Change the state of a virtual accountDelete virtual account due to expiry and no renewal
    0200Change the state of a virtual accountSuspend virtual account
    0205Change the state of a virtual accountSuspend virtual account due to fraud
    0206Change the state of a virtual accountSuspend virtual account as devices is lost
    0207Change the state of a virtual accountSuspend virtual account as device is stolen
    0300Change the state of a virtual accountResume the virtual account
    0311Change the state of a virtual accountResume the virtual account as device is recovered
    0314Change the state of a virtual accountResume the virtual account as no fraudulent transaction is reported
    0400Change the state of a virtual accountActivate virtual account
    0401Change the state of a virtual accountActivate virtual account as cardholder is pre-authenticated
    0402Change the state of a virtual accountActivate virtual account upon request from cardholder
    0501Change profileCard product change
    0502Change profileTerms and conditions change
    0503Change profileCard art change
    0504Change profileCard credentials change
    2000Get Encrypted PayloadPush provisioning to Google Pay
    2001Get Encrypted PayloadPush provisioning to Apple Pay
    ## Error codes
    Error codeDescription
    LCM-1011Invalid Account ID
    LCM-1012Invalid PAN ID or Card ID
    LCM-1013Invalid PAN
    LCM-1014Input Data Invalid
    LCM-1015Internal Server Error
    LCM-1016Invalid Virtual Account
    LCM-1018Client error related to virtual card presentation
    LCM-1019Server error related to virtual card presentation
    LCM-1021PAR service — client error
    LCM-1022PAR service — server error
    LCM-1025Internal communication error
    LCM-1026External communication error
    LCM-1027Invalid Encrypted Data

    Context paths

    The LCM inbound API endpoints described here are divided into two groups for which the base URLs are different:

    • /lcmmpa/v1 - this path should be appended to the Production server base path in case of the following endpoints:
      • /accounts/inAppPayload
      • /accounts/v2/inAppPayload
      • /accounts/googlePayload
      • /accounts/tokens/{walletID}
      • /accounts/schemetokens
      • /accounts/tokenreference
    • /lcm/v1 - this path should be appended to the Production server base path in all other cases
    Examples: In case of the Sandbox server, the context path is always /lcm/v1.

    Scroll down for code samples, example requests and responses.
    Select a language for code samples from the tabs or the mobile navigation menu.

    Health Check

    This operation provides health check of the API

    Health check

    GET /ping

    This operation provides health check of the API

    Parameters

    • X-Issuer-IDstringrequired
    • X-Request-IDstringrequired
    • X-Provider-IDstringrequired
    • Authorizationstringrequired

    Health check

    var client = new RestClient("https://api-gateway2.nets.eu/%3Ccontext_path%3E/ping");
    var request = new RestRequest(Method.GET);
    request.AddHeader("X-Issuer-ID", "SOME_STRING_VALUE");
    request.AddHeader("X-Request-ID", "SOME_STRING_VALUE");
    request.AddHeader("X-Provider-ID", "SOME_STRING_VALUE");
    request.AddHeader("Authorization", "SOME_STRING_VALUE");
    IRestResponse response = client.Execute(request);

    Responses

    • 200OKoptional
      • messagestringoptional

        status message of Service.

      • statusstringoptional

        status code.

    • 401Unauthorizedoptional
    • 403Forbiddenoptional
    • 404Not Foundoptional

    200

    {
        "message": "string",
        "status": "string"
    }

    Scheme Tokenization - Inbound

    Inbound API from issuer backend to LCM

    Get LCM virtual account id based on token PAN

    POST /accounts/virtualaccountid

    Get LCM virtual account id based on token PAN

    Parameters

    • Authorizationstringrequired
    • X-Issuer-IDstringrequired
    • X-Request-IDstringrequired
    • X-Provider-IDstringrequired

    Get LCM virtual account id based on token PAN

    var client = new RestClient("https://api-gateway2.nets.eu/%3Ccontext_path%3E/accounts/virtualaccountid");
    var request = new RestRequest(Method.POST);
    request.AddHeader("content-type", "application/json");
    request.AddHeader("Authorization", "SOME_STRING_VALUE");
    request.AddHeader("X-Issuer-ID", "SOME_STRING_VALUE");
    request.AddHeader("X-Request-ID", "SOME_STRING_VALUE");
    request.AddHeader("X-Provider-ID", "SOME_STRING_VALUE");
    request.AddParameter("application/json", "{\"REPLACE_REQUEST_BODY\":\"REPLACE_REQUEST_BODY\"}", ParameterType.RequestBody);
    IRestResponse response = client.Execute(request);

    Request body

    • accountInfoobjectoptional
      • accountTypestringoptional

        TPAN is the only allowed value

        example: TPAN
      • encryptedDatastringoptional

        Encrypted data containing a JSON with account field inside. This field must contain the token PAN.

        example: encrypted_data

    Request body

    {
        "accountInfo": {
            "accountType": "TPAN",
            "encryptedData": "encrypted_data"
        }
    }

    Responses

    • 200OKoptional
      • virtualAccountIDstringoptional

        LCM ID of the virtual account

        example: 17278634608426073445672258
    • 401Unauthorizedoptional
    • 403Forbiddenoptional
    • 404Not Foundoptional

    200

    {
        "virtualAccountID": "17278634608426073445672258"
    }

    Get virtual account information

    GET /accounts/{accountID}/virtualaccounts/{virtualAccountID}

    Get virtual account information

    Parameters

    • Authorizationstringrequired
    • X-Issuer-IDstringrequired
    • X-Request-IDstringrequired
    • X-Provider-IDstringrequired
    • accountIDstringrequired

      accountID

    • virtualAccountIDstringrequired

      virtualAccountID

    • realTimeDatabooleanrequired

      realTimeData

    Get virtual account information

    var client = new RestClient("https://api-gateway2.nets.eu/%3Ccontext_path%3E/accounts/12345678901234567890123456/virtualaccounts/98765432109876543210?realTimeData=SOME_BOOLEAN_VALUE");
    var request = new RestRequest(Method.GET);
    request.AddHeader("Authorization", "SOME_STRING_VALUE");
    request.AddHeader("X-Issuer-ID", "SOME_STRING_VALUE");
    request.AddHeader("X-Request-ID", "SOME_STRING_VALUE");
    request.AddHeader("X-Provider-ID", "SOME_STRING_VALUE");
    IRestResponse response = client.Execute(request);

    Responses

    • 200OKoptional
      • panstringoptional

        Masked PAN

      • virtualAccountIDstringoptional

        The unique ID of the virtual account

        example: 17278634608426073445672258
      • virtualAccountCreationDatestringoptional

        Virtual account creation timestamp in the yyyy-MM-ddTHH:mm:ssZ format

      • virtualAccountStatestringoptional

        One of INACTIVE | ACTIVE | SUSPENDED | DELETED

      • tokenPANstringoptional

        Masked token PAN

      • tokenRequestorIDstringoptional

        The ID of the token requestor

        example: 40010030273
      • tokenRequestorNamestringoptional

        The name of the token requestor. The field will be included in the response only if the name is available. LCM maintains and updates the mapping between token requestor IDs and names, but the mapping is not guaranteed to exist for all token requestors.

      • virtualAccountUpdateDatestringoptional

        Virtual account update timestamp in the yyyy-MM-ddTHH:mm:ssZ format

      • virtualAccountUpdateBystringoptional

        Name of the entity that made the last update on the virtual account (LCM or SCRIPT)

      • deviceInfoobjectoptional
        • deviceNamestringoptionalexample: my phone
        • deviceProductstringoptional

          Manufacturer of product, e.g. Apple, Samsung

          example: Apple
        • deviceModelstringoptional

          Device model, e.g. iPhone7, Galaxy

          example: iPhone 7
        • deviceOSNamestringoptional

          Phone OS i.e. iOS, Android

          example: iOS
        • deviceOSVersionstringoptional

          Version of OS running on the device

          example: 11.4
        • deviceIMEIstringoptional

          IMEI number of the device

          example: 440725462341524345643456
        • cardSchemeDeviceIdstringoptional

          Device ID received from the scheme

          example: 192834712983471298347190
      • enrolmentFlowstringoptional

        Enrollment flow risk band assessed during the provisioning process. One of GREEN | YELLOW | ORANGE | RED.

      • actionCodestringoptional

        Action code for token provisioning decision

      • panSourcestringoptional

        Source of the account information, i.e. MOBILE_BANKING_APP | KEY_ENTERED | ON_FILE

      • cvvResultCodestringoptional

        CVV result code value (M - matched, N - not matched)

      • tokenTypestringoptional

        Token type for token, e.g. SECURE_ELEMENT, CARD_ON_FILE, ECOMMERCE.

      • messageReasonCodestringoptional

        Message reason code value

      • activationMethodstringoptional

        Activation method selected for OTP verification (Example: EMAIL, SMS)

      • tokenCreateEventDateTimestringoptional

        Token creation timestamp in the yyyy-MM-ddTHH:mm:ssZ format

      • walletProviderReasonCodesstringoptional

        Wallet provider reason codes sent by the scheme

    • 400optional
      It returns errorCode in case of 'bad request' error
      • 401Unauthorizedoptional
      • 403Forbiddenoptional
      • 404Not Foundoptional
      {
          "pan": "string",
          "virtualAccountID": "17278634608426073445672258",
          "virtualAccountCreationDate": "string",
          "virtualAccountState": "string",
          "tokenPAN": "string",
          "tokenRequestorID": "40010030273",
          "tokenRequestorName": "string",
          "virtualAccountUpdateDate": "string",
          "virtualAccountUpdateBy": "string",
          "deviceInfo": {
              "deviceName": "my phone",
              "deviceProduct": "Apple",
              "deviceModel": "iPhone 7",
              "deviceOSName": "iOS",
              "deviceOSVersion": "11.4",
              "deviceIMEI": "440725462341524345643456",
              "cardSchemeDeviceId": "192834712983471298347190"
          },
          "enrolmentFlow": "string",
          "actionCode": "string",
          "panSource": "string",
          "cvvResultCode": "s",
          "tokenType": "string",
          "messageReasonCode": "string",
          "activationMethod": "string",
          "tokenCreateEventDateTime": "string",
          "walletProviderReasonCodes": "string"
      }

      Change the state of a virtual account

      PUT /accounts/{accountID}/virtualaccounts/{virtualAccountID}/accountstate

      Change the state of a virtual account

      Parameters

      • Authorizationstringrequired
      • X-Issuer-IDstringrequired
      • X-Request-IDstringrequired
      • X-Provider-IDstringrequired
      • accountIDstringrequired

        26-digit account ID uniquely identifying the account in LCM

      • virtualAccountIDstringrequired

        26-digit account ID uniquely identifying the virtual account in LCM

      Change the state of a virtual account

      var client = new RestClient("https://api-gateway2.nets.eu/%3Ccontext_path%3E/accounts/12345678901234567890123456/virtualaccounts/17343480398919770913346730/accountstate");
      var request = new RestRequest(Method.PUT);
      request.AddHeader("content-type", "application/json");
      request.AddHeader("Authorization", "SOME_STRING_VALUE");
      request.AddHeader("X-Issuer-ID", "SOME_STRING_VALUE");
      request.AddHeader("X-Request-ID", "SOME_STRING_VALUE");
      request.AddHeader("X-Provider-ID", "SOME_STRING_VALUE");
      request.AddParameter("application/json", "{\"REPLACE_REQUEST_BODY\":\"REPLACE_REQUEST_BODY\"}", ParameterType.RequestBody);
      IRestResponse response = client.Execute(request);

      Request body

      • accountStatestringoptional

        One of ACTIVATE | SUSPEND | RESUME | DELETE

      • reasonCodestringoptional

        Reason for account update, refer to: "Reason codes and account actions"

      Request body

      {
          "accountState": "string",
          "reasonCode": "string"
      }

      Responses

      • 200OKoptional
      • 400optional
        It returns errorCode in case of 'bad request' error
        • 401Unauthorizedoptional
        • 403Forbiddenoptional
        • 404Not Foundoptional

        400

        {}

        Change the state of a virtual account

        PUT /accounts/tokens/{tokenReferenceID}/virtualAccount/accountstate

        Change the state of a virtual account

        Parameters

        • Authorizationstringrequired
        • X-Issuer-IDstringrequired
        • X-Request-IDstringrequired
        • X-Provider-IDstringrequired
        • tokenReferenceIDstringrequired

          Token reference ID provided by the scheme that uniquely identifies the token

        Change the state of a virtual account

        var client = new RestClient("https://api-gateway2.nets.eu/%3Ccontext_path%3E/accounts/tokens/DNIH487394827392873492834/virtualAccount/accountstate");
        var request = new RestRequest(Method.PUT);
        request.AddHeader("content-type", "application/json");
        request.AddHeader("Authorization", "SOME_STRING_VALUE");
        request.AddHeader("X-Issuer-ID", "SOME_STRING_VALUE");
        request.AddHeader("X-Request-ID", "SOME_STRING_VALUE");
        request.AddHeader("X-Provider-ID", "SOME_STRING_VALUE");
        request.AddParameter("application/json", "{\"REPLACE_REQUEST_BODY\":\"REPLACE_REQUEST_BODY\"}", ParameterType.RequestBody);
        IRestResponse response = client.Execute(request);

        Request body

        • accountStatestringoptional

          One of ACTIVATE | SUSPEND | RESUME | DELETE

        • reasonCodestringoptional

          Reason for account update, refer to: "Reason codes and account actions"

        Request body

        {
            "accountState": "string",
            "reasonCode": "string"
        }

        Responses

        • 200OKoptional
        • 400optional
          It returns errorCode in case of 'bad request' error
          • 401Unauthorizedoptional
          • 403Forbiddenoptional
          • 404Not Foundoptional

          400

          {}

          Change the profile associated with a virtual account

          PUT /accounts/{accountID}/virtualaccounts/{virtualAccountID}/profile

          Change the profile associated with a virtual account

          Parameters

          • Authorizationstringrequired
          • X-Issuer-IDstringrequired
          • X-Request-IDstringrequired
          • X-Provider-IDstringrequired
          • accountIDstringrequired

            accountID

          • virtualAccountIDstringrequired

            virtualAccountID

          Change the profile associated with a virtual account

          var client = new RestClient("https://api-gateway2.nets.eu/%3Ccontext_path%3E/accounts/12345678901234567890123456/virtualaccounts/98765432109876543210/profile");
          var request = new RestRequest(Method.PUT);
          request.AddHeader("content-type", "application/json");
          request.AddHeader("Authorization", "SOME_STRING_VALUE");
          request.AddHeader("X-Issuer-ID", "SOME_STRING_VALUE");
          request.AddHeader("X-Request-ID", "SOME_STRING_VALUE");
          request.AddHeader("X-Provider-ID", "SOME_STRING_VALUE");
          request.AddParameter("application/json", "{\"REPLACE_REQUEST_BODY\":\"REPLACE_REQUEST_BODY\"}", ParameterType.RequestBody);
          IRestResponse response = client.Execute(request);

          Request body

          • profileIDstringoptional

            Profile ID known to the scheme

            example: 3bf7159c-ec9b-484d-922b-2c18d1c7bf9d
          • reasonCodestringoptional

            Reason for account update, refer to: "Reason codes and account actions"

            example: 0501

          Request body

          {
              "profileID": "3bf7159c-ec9b-484d-922b-2c18d1c7bf9d",
              "reasonCode": "0501"
          }

          Responses

          • 200OKoptional
          • 401Unauthorizedoptional
          • 403Forbiddenoptional
          • 404Not Foundoptional

          Change the profile associated with an account

          PUT /accounts/{accountID}/profile

          Changes the profile associated with an account

          Parameters

          • Authorizationstringrequired
          • X-Issuer-IDstringrequired
          • X-Request-IDstringrequired
          • X-Provider-IDstringrequired
          • accountIDstringrequired

            accountID

          • updateExistingVAbooleanrequired

            If set to false, the new profile will be used for newly created tokens. If set to true, the new profile will be assigned to tokens already created and also will be used for newly created tokens.

          Change the profile associated with an account

          var client = new RestClient("https://api-gateway2.nets.eu/%3Ccontext_path%3E/accounts/12345678901234567890123456/profile?updateExistingVA=SOME_BOOLEAN_VALUE");
          var request = new RestRequest(Method.PUT);
          request.AddHeader("content-type", "application/json");
          request.AddHeader("Authorization", "SOME_STRING_VALUE");
          request.AddHeader("X-Issuer-ID", "SOME_STRING_VALUE");
          request.AddHeader("X-Request-ID", "SOME_STRING_VALUE");
          request.AddHeader("X-Provider-ID", "SOME_STRING_VALUE");
          request.AddParameter("application/json", "{\"REPLACE_REQUEST_BODY\":\"REPLACE_REQUEST_BODY\"}", ParameterType.RequestBody);
          IRestResponse response = client.Execute(request);

          Request body

          • accountInfoobjectoptional
            • profileIDstringoptional

              Profile ID known to the scheme

              example: 3bf7159c-ec9b-484d-922b-2c18d1c7bf9d
            • reasonCodestringoptional

              Reason for account update, refer to: "Reason codes and account actions"

              example: 0501

          Request body

          {
              "accountInfo": {
                  "profileID": "3bf7159c-ec9b-484d-922b-2c18d1c7bf9d",
                  "reasonCode": "0501"
              }
          }

          Responses

          • 204No Contentoptional
          • 401Unauthorizedoptional
          • 403Forbiddenoptional
          • 404Not Foundoptional

          Get activation code for app-to-app authentication

          POST /accounts/activationcode

          Get activation code for app-to-app authentication

          Parameters

          • X-Issuer-IDstringrequired
          • X-Request-IDstringrequired
          • X-Provider-IDstringrequired

          Get activation code for app-to-app authentication

          var client = new RestClient("https://api-gateway2.nets.eu/%3Ccontext_path%3E/accounts/activationcode");
          var request = new RestRequest(Method.POST);
          request.AddHeader("content-type", "application/json");
          request.AddHeader("X-Issuer-ID", "SOME_STRING_VALUE");
          request.AddHeader("X-Request-ID", "SOME_STRING_VALUE");
          request.AddHeader("X-Provider-ID", "SOME_STRING_VALUE");
          request.AddParameter("application/json", "{\"REPLACE_REQUEST_BODY\":\"REPLACE_REQUEST_BODY\"}", ParameterType.RequestBody);
          IRestResponse response = client.Execute(request);

          Request body

          • accountInfoobjectoptional

            Account reference information used to identify the card account.

            • accountstringoptional

              Plain text value of account reference, if accountType is one of: CARDID, PANID, PANREF. Otherwise, the account parameter is sent inside the encryptedData.

              example: 95645644466699990
            • accountTypestringoptional

              One of PAN, CARDID, PANID, PANREF.

              example: CARDID
            • accountExpirystringoptional

              Account expiry in the MMYYYY format. Only necessary if accounType is PAN and when it is sent, it is inside the encryptedData.

              example: 062029
            • encryptedDatastringoptional

              A field containing the encrypted JSON object with account and accountExpiry fields inside. In this case the value of the account field will be the PAN. Only to be sent in the request when accountType is PAN.

              example: encrypted_data

          Request body

          {
              "accountInfo": {
                  "account": "95645644466699990",
                  "accountType": "CARDID",
                  "accountExpiry": "062029",
                  "encryptedData": "encrypted_data"
              }
          }

          Responses

          • 200OKoptional
            • activationCodestringoptional
          • 401Unauthorizedoptional
          • 403Forbiddenoptional
          • 404Not Foundoptional

          200

          {
              "activationCode": "string"
          }

          DEPRECATED - Get encrypted payload for inApp provisioning

          POST /accounts/inAppPayload

          DEPRECATED: this is a legacy implementation of inApp, not to be used for any new issuer integrations.

          Parameters

          • Authorizationstringrequired
          • X-Issuer-IDstringrequired
          • X-Request-IDstringrequired
          • X-Provider-IDstringrequired

          DEPRECATED - Get encrypted payload for inApp provisioning

          var client = new RestClient("https://api-gateway2.nets.eu/%3Ccontext_path%3E/accounts/inAppPayload");
          var request = new RestRequest(Method.POST);
          request.AddHeader("content-type", "application/json");
          request.AddHeader("Authorization", "SOME_STRING_VALUE");
          request.AddHeader("X-Issuer-ID", "SOME_STRING_VALUE");
          request.AddHeader("X-Request-ID", "SOME_STRING_VALUE");
          request.AddHeader("X-Provider-ID", "SOME_STRING_VALUE");
          request.AddParameter("application/json", "{\"REPLACE_REQUEST_BODY\":\"REPLACE_REQUEST_BODY\"}", ParameterType.RequestBody);
          IRestResponse response = client.Execute(request);

          Request body

          • accountInfoobjectoptional

            Account reference information used to identify the card account.

            • accountstringoptional

              Plain text value of account reference, if accountType is one of: CARDID, PANID, PANREF. Otherwise, the account parameter is sent inside the encryptedData.

              example: 95645644466699990
            • accountTypestringoptional

              One of PAN, CARDID, PANID, PANREF.

              example: CARDID
            • accountExpirystringoptional

              Account expiry in the MMYYYY format. Only necessary if accounType is PAN and when it is sent, it is inside the encryptedData.

              example: 062029
            • encryptedDatastringoptional

              A field containing the encrypted JSON object with account and accountExpiry fields inside. In this case the value of the account field will be the PAN. Only to be sent in the request when accountType is PAN.

              example: encrypted_data
          • providerInfoobjectoptional

            Wallet provider and device information for the provisioning request.

            • clientWalletProviderstringoptional

              Client wallet provider, also known as token requestor, ID.

              example: 50120834693
            • clientWalletAccountIDstringoptional

              Cient provided consumer ID which identifies the account holder entity. Required for Google Pay only.

            • clientDeviceIDstringoptional

              Unique device identifier set by the wallet provider.

            • clientAppIDstringoptional

              Name of app requesting the encrypted payload. Required for Google Pay only.

            • isIDnVbooleanoptional

              Indicates whether additional ID&V is required. Required for Google Pay only.

          • encryptInfoobjectoptional

            A JSON object required only for Apple Pay inApp.

            • applePublicCertarrayoptional

              Array of public certificates received from Apple Wallet in base64 format, including leaf and intermediate certificates.

            • namestringoptional

              Cardholder name

              example: John Smith
            • noncestringoptional

              Nonce value received from Apple Wallet in base64 format.

              example: 0Yy62g==
            • nonceSignaturestringoptional

              Nonce signature value received from Apple wallet in base64 format.

              example: QHxyusaqGK2eI/EniY33AbxWqqZJUZMGIf1rfAzoDz7+/+pLwHgrrAVboTKWUaIKej4ddq4wIkecuruzswjuC3Weo0DopCvrCl6FNUzzRce2

          Request body

          {
              "accountInfo": {
                  "account": "95645644466699990",
                  "accountType": "CARDID",
                  "accountExpiry": "062029",
                  "encryptedData": "encrypted_data"
              },
              "providerInfo": {
                  "clientWalletProvider": "50120834693",
                  "clientWalletAccountID": "string",
                  "clientDeviceID": "string",
                  "clientAppID": "string",
                  "isIDnV": true
              },
              "encryptInfo": {
                  "applePublicCert": [
                      "-----BEGIN CERTIFICATE-----\\u005cnMIIEEzCCA...4micBdI\\u005cn-----END CERTIFICATE-----",
                      "-----BEGIN CERTIFICATE-----\\u005cnMIIC5DHG4=\\u005cn-----END CERTIFICATE-----"
                  ],
                  "name": "John Smith",
                  "nonce": "0Yy62g==",
                  "nonceSignature": "QHxyusaqGK2eI/EniY33AbxWqqZJUZMGIf1rfAzoDz7+/+pLwHgrrAVboTKWUaIKej4ddq4wIkecuruzswjuC3Weo0DopCvrCl6FNUzzRce2"
              }
          }

          Responses

          • 200OKoptional
            • activationDatastringoptional
            • ephemeralPublicKeystringoptional
            • payloadstringoptional
          • 401Unauthorizedoptional
          • 403Forbiddenoptional
          • 404Not Foundoptional

          200

          {
              "activationData": "string",
              "ephemeralPublicKey": "string",
              "payload": "string"
          }

          Get encrypted payload for inApp provisioning

          POST /accounts/v2/inAppPayload

          Get encrypted payload for inApp provisioning

          Parameters

          • Authorizationstringrequired
          • X-Issuer-IDstringrequired
          • X-Request-IDstringrequired
          • X-Provider-IDstringrequired

          Get encrypted payload for inApp provisioning

          var client = new RestClient("https://api-gateway2.nets.eu/%3Ccontext_path%3E/accounts/v2/inAppPayload");
          var request = new RestRequest(Method.POST);
          request.AddHeader("content-type", "application/json");
          request.AddHeader("Authorization", "SOME_STRING_VALUE");
          request.AddHeader("X-Issuer-ID", "SOME_STRING_VALUE");
          request.AddHeader("X-Request-ID", "SOME_STRING_VALUE");
          request.AddHeader("X-Provider-ID", "SOME_STRING_VALUE");
          request.AddParameter("application/json", "{\"REPLACE_REQUEST_BODY\":\"REPLACE_REQUEST_BODY\"}", ParameterType.RequestBody);
          IRestResponse response = client.Execute(request);

          Request body

          • accountInfoobjectoptional

            Account reference information used to identify the card account.

            • accountstringoptional

              Plain text value of account reference, if accountType is one of: CARDID, PANID, PANREF. Otherwise, the account parameter is sent inside the encryptedData.

              example: 95645644466699990
            • accountTypestringoptional

              One of PAN, CARDID, PANID, PANREF.

              example: CARDID
            • accountExpirystringoptional

              Account expiry in the MMYYYY format. Only necessary if accounType is PAN and when it is sent, it is inside the encryptedData.

              example: 062029
            • encryptedDatastringoptional

              A field containing the encrypted JSON object with account and accountExpiry fields inside. In this case the value of the account field will be the PAN. Only to be sent in the request when accountType is PAN.

              example: encrypted_data
          • providerInfoobjectoptional

            Wallet provider and device information for the provisioning request.

            • clientWalletProviderstringoptional

              Client wallet provider, also known as token requestor, ID.

              example: 50120834693
            • clientWalletAccountIDstringoptional

              Cient provided consumer ID which identifies the account holder entity. Required for Google Pay only.

            • clientDeviceIDstringoptional

              Unique device identifier set by the wallet provider.

            • clientAppIDstringoptional

              Name of app requesting the encrypted payload. Required for Google Pay only.

            • isIDnVbooleanoptional

              Indicates whether additional ID&V is required. Required for Google Pay only.

          • encryptInfoobjectoptional

            A JSON object required only for Apple Pay inApp.

            • applePublicCertarrayoptional

              Array of public certificates received from Apple Wallet in base64 format, including leaf and intermediate certificates.

            • namestringoptional

              Cardholder name

              example: John Smith
            • noncestringoptional

              Nonce value received from Apple Wallet in base64 format.

              example: 0Yy62g==
            • nonceSignaturestringoptional

              Nonce signature value received from Apple wallet in base64 format.

              example: QHxyusaqGK2eI/EniY33AbxWqqZJUZMGIf1rfAzoDz7+/+pLwHgrrAVboTKWUaIKej4ddq4wIkecuruzswjuC3Weo0DopCvrCl6FNUzzRce2

          Request body

          {
              "accountInfo": {
                  "account": "95645644466699990",
                  "accountType": "CARDID",
                  "accountExpiry": "062029",
                  "encryptedData": "encrypted_data"
              },
              "providerInfo": {
                  "clientWalletProvider": "50120834693",
                  "clientWalletAccountID": "string",
                  "clientDeviceID": "string",
                  "clientAppID": "string",
                  "isIDnV": true
              },
              "encryptInfo": {
                  "applePublicCert": [
                      "-----BEGIN CERTIFICATE-----\\u005cnMIIEEzCCA...4micBdI\\u005cn-----END CERTIFICATE-----",
                      "-----BEGIN CERTIFICATE-----\\u005cnMIIC5DHG4=\\u005cn-----END CERTIFICATE-----"
                  ],
                  "name": "John Smith",
                  "nonce": "0Yy62g==",
                  "nonceSignature": "QHxyusaqGK2eI/EniY33AbxWqqZJUZMGIf1rfAzoDz7+/+pLwHgrrAVboTKWUaIKej4ddq4wIkecuruzswjuC3Weo0DopCvrCl6FNUzzRce2"
              }
          }

          Responses

          • 200OKoptional
            • activationDatastringoptional
            • ephemeralPublicKeystringoptional
            • payloadstringoptional
          • 401Unauthorizedoptional
          • 403Forbiddenoptional
          • 404Not Foundoptional

          200

          {
              "activationData": "string",
              "ephemeralPublicKey": "string",
              "payload": "string"
          }

          Get tokens based on account

          POST /accounts/schemetokens

          Get tokens based on account

          Parameters

          • Authorizationstringrequired
          • X-Issuer-IDstringrequired
          • X-Request-IDstringrequired
          • X-Provider-IDstringrequired

          Get tokens based on account

          var client = new RestClient("https://api-gateway2.nets.eu/%3Ccontext_path%3E/accounts/schemetokens");
          var request = new RestRequest(Method.POST);
          request.AddHeader("content-type", "application/json");
          request.AddHeader("Authorization", "SOME_STRING_VALUE");
          request.AddHeader("X-Issuer-ID", "SOME_STRING_VALUE");
          request.AddHeader("X-Request-ID", "SOME_STRING_VALUE");
          request.AddHeader("X-Provider-ID", "SOME_STRING_VALUE");
          request.AddParameter("application/json", "{\"REPLACE_REQUEST_BODY\":\"REPLACE_REQUEST_BODY\"}", ParameterType.RequestBody);
          IRestResponse response = client.Execute(request);

          Request body

          • accountInfoobjectoptional

            Account reference information used to identify the card account.

            • accountstringoptional

              Plain text value of account reference, if accountType is one of: CARDID, PANID, PANREF. Otherwise, the account parameter is sent inside the encryptedData.

              example: 95645644466699990
            • accountTypestringoptional

              One of PAN, CARDID, PANID, PANREF.

              example: CARDID
            • accountExpirystringoptional

              Account expiry in the MMYYYY format. Only necessary if accounType is PAN and when it is sent, it is inside the encryptedData.

              example: 062029
            • encryptedDatastringoptional

              A field containing the encrypted JSON object with account and accountExpiry fields inside. In this case the value of the account field will be the PAN. Only to be sent in the request when accountType is PAN.

              example: encrypted_data

          Request body

          {
              "accountInfo": {
                  "account": "95645644466699990",
                  "accountType": "CARDID",
                  "accountExpiry": "062029",
                  "encryptedData": "encrypted_data"
              }
          }

          Responses

          • 200OKoptional
            • noOfTokensinteger (int32)optionalexample: 1
            • tokenInfoListarrayoptional
              • tokenReferenceIDstringoptional

                Token reference ID provided by the scheme that uniquely identifies the token

                example: DNIH487394827392873492834
              • tokenRequestorIDstringoptional

                The ID of the token requestor

                example: 40010030273
              • tokenStatusstringoptional

                One of INACTIVE | ACTIVE | SUSPENDED | DEACTIVATED

                example: ACTIVE
              • walletIDstringoptionalexample: PPKSarajJ6VttrqlJw11nbvmCQ262626
          • 401Unauthorizedoptional
          • 403Forbiddenoptional
          • 404Not Foundoptional

          200

          {
              "noOfTokens": 1,
              "tokenInfoList": [
                  {
                      "tokenReferenceID": "DNIH487394827392873492834",
                      "tokenRequestorID": "40010030273",
                      "tokenStatus": "ACTIVE",
                      "walletID": "PPKSarajJ6VttrqlJw11nbvmCQ262626"
                  }
              ]
          }

          Resolve card from token reference

          POST /accounts/tokenreference

          Resolve card from token reference

          Parameters

          • Authorizationstringrequired
          • X-Issuer-IDstringrequired
          • X-Request-IDstringrequired
          • X-Provider-IDstringrequired

          Resolve card from token reference

          var client = new RestClient("https://api-gateway2.nets.eu/%3Ccontext_path%3E/accounts/tokenreference");
          var request = new RestRequest(Method.POST);
          request.AddHeader("content-type", "application/json");
          request.AddHeader("Authorization", "SOME_STRING_VALUE");
          request.AddHeader("X-Issuer-ID", "SOME_STRING_VALUE");
          request.AddHeader("X-Request-ID", "SOME_STRING_VALUE");
          request.AddHeader("X-Provider-ID", "SOME_STRING_VALUE");
          request.AddParameter("application/json", "{\"REPLACE_REQUEST_BODY\":\"REPLACE_REQUEST_BODY\"}", ParameterType.RequestBody);
          IRestResponse response = client.Execute(request);

          Request body

          • tokenReferenceIDstringoptional

            Token reference ID provided by the scheme that uniquely identifies the token

            example: DNIH487394827392873492834
          • accountTypestringoptional

            The identifier of the account to be returned. There are four options:

            example: CARDID

          Request body

          {
              "tokenReferenceID": "DNIH487394827392873492834",
              "accountType": "CARDID"
          }

          Responses

          • 200OKoptional
            • accountInfoobjectoptional
              • accountstringoptional

                This field will contain the value that matches the accountType sent in the request. There are four options:

                example: 940102472184811
          • 401Unauthorizedoptional
          • 403Forbiddenoptional
          • 404Not Foundoptional

          200

          {
              "accountInfo": {
                  "account": "940102472184811"
              }
          }

          Get tokens based on wallet

          GET /accounts/tokens/{walletID}

          Get tokens based on wallet

          Parameters

          • Authorizationstringrequired
          • X-Issuer-IDstringrequired
          • X-Request-IDstringrequired
          • X-Provider-IDstringrequired
          • walletIDstringrequired

            walletID

          Get tokens based on wallet

          var client = new RestClient("https://api-gateway2.nets.eu/%3Ccontext_path%3E/accounts/tokens/PPKSarajJ6VttrqlJw11nbvmCQ262626");
          var request = new RestRequest(Method.GET);
          request.AddHeader("Authorization", "SOME_STRING_VALUE");
          request.AddHeader("X-Issuer-ID", "SOME_STRING_VALUE");
          request.AddHeader("X-Request-ID", "SOME_STRING_VALUE");
          request.AddHeader("X-Provider-ID", "SOME_STRING_VALUE");
          IRestResponse response = client.Execute(request);

          Responses

          • 200OKoptional
            • noOfTokensinteger (int32)optionalexample: 1
            • tokenInfoListarrayoptional
              • tokenReferenceIDstringoptional

                Token reference ID provided by the scheme that uniquely identifies the token

                example: DNIH487394827392873492834
              • tokenStatusstringoptionalexample: ACTIVE
              • accountInfoobjectoptional
                • accountstringoptional

                  Plain text value of account reference, if accountType is one of: CARDID, PANID, PANREF. If accountType returned is PAN, this field contains the masked PAN.

                  example: 95645644466699990
                • accountTypestringoptional

                  One of PAN, CARDID, PANID, PANREF.

                  example: CARDID
          • 401Unauthorizedoptional
          • 403Forbiddenoptional
          • 404Not Foundoptional

          200

          {
              "noOfTokens": 1,
              "tokenInfoList": [
                  {
                      "tokenReferenceID": "DNIH487394827392873492834",
                      "tokenStatus": "ACTIVE",
                      "accountInfo": {
                          "account": "95645644466699990",
                          "accountType": "CARDID"
                      }
                  }
              ]
          }

          Get encrypted payload for Google Pay inApp provisioning

          POST /accounts/googlePayload

          Returns the encrypted payload and related provisioning data used for inApp provisioning.

          Parameters

          • Authorizationstringrequired
          • X-Issuer-IDstringrequired
          • X-Request-IDstringrequired
          • X-Provider-IDstringrequired

          Get encrypted payload for Google Pay inApp provisioning

          var client = new RestClient("https://api-gateway2.nets.eu/%3Ccontext_path%3E/accounts/googlePayload");
          var request = new RestRequest(Method.POST);
          request.AddHeader("content-type", "application/json");
          request.AddHeader("Authorization", "SOME_STRING_VALUE");
          request.AddHeader("X-Issuer-ID", "SOME_STRING_VALUE");
          request.AddHeader("X-Request-ID", "SOME_STRING_VALUE");
          request.AddHeader("X-Provider-ID", "SOME_STRING_VALUE");
          request.AddParameter("application/json", "{\"REPLACE_REQUEST_BODY\":\"REPLACE_REQUEST_BODY\"}", ParameterType.RequestBody);
          IRestResponse response = client.Execute(request);

          Request body

          • accountInfoobjectrequired

            Account reference information used to identify the card account.

            • accountstringoptional

              Plain text value of account reference, if accountType is one of: CARDID, PANID, PANREF. Otherwise, the account parameter is sent inside the encryptedData.

              example: 95645644466699990
            • accountTypestringoptional

              One of PAN, CARDID, PANID, PANREF.

              example: CARDID
            • accountExpirystringoptional

              Account expiry in the MMYYYY format. Only necessary if accounType is PAN and when it is sent, it is inside the encryptedData.

              example: 062029
            • encryptedDatastringoptional

              A field containing the encrypted JSON object with account and accountExpiry fields inside. In this case the value of the account field will be the PAN. Only to be sent in the request when accountType is PAN.

              example: encrypted_data

          Request body

          {
              "accountInfo": {
                  "account": "95645644466699990",
                  "accountType": "CARDID",
                  "accountExpiry": "062029",
                  "encryptedData": "encrypted_data"
              },
              "providerInfo": {
                  "clientWalletProvider": "50120834693",
                  "clientWalletAccountID": "string",
                  "clientDeviceID": "string",
                  "clientAppID": "string",
                  "isIDnV": true,
                  "serverSessionId": "string"
              }
          }

          Responses

          • 200OK
            • payloadstringoptional

              Encrypted payload returned for inApp provisioning.

            • googleOpcPayloadstringoptional

              Google OPC payload returned for Android inApp provisioning (encoded or encrypted)

            • protocolHeaderobjectoptional
              • versionintegeroptionalexample: 1
            • validationContextobjectoptional
              • serverSessionIdstringoptionalexample: GoogleSession123
            • paymentCardobjectoptional
              • accountNumberstringoptionalexample: 4321xxxxxxxx1234
              • expiryMonthstringoptionalexample: 12
              • expiryYearstringoptionalexample: 29
          • 401Unauthorizedoptional
          • 403Forbiddenoptional
          • 404Not Foundoptional
          {
              "payload": "string",
              "googleOpcPayload": "string"
          }

          Scheme Tokenization - Outbound

          Outbound API from LCM to issuer backend

          DEPRECATED - Virtual account status notification

          POST /v1/accounts/{accountID}/virtualaccount

          DEPRECATED: this is a legacy version of virtual account status notification. It must not to be used for any new issuer integrations.

          Parameters

          • Authorizationstringrequired
          • X-Issuer-IDstringrequired
          • X-Request-IDstringrequired
          • X-Provider-IDstringrequired
          • accountIDstringrequired

            26-digit account ID uniquely identifying the account in LCM

          DEPRECATED - Virtual account status notification

          var client = new RestClient("https://api-gateway2.nets.eu/%3Ccontext_path%3E/v1/accounts/12345678901234567890123456/virtualaccount");
          var request = new RestRequest(Method.POST);
          request.AddHeader("content-type", "application/json");
          request.AddHeader("Authorization", "SOME_STRING_VALUE");
          request.AddHeader("X-Issuer-ID", "SOME_STRING_VALUE");
          request.AddHeader("X-Request-ID", "SOME_STRING_VALUE");
          request.AddHeader("X-Provider-ID", "SOME_STRING_VALUE");
          request.AddParameter("application/json", "{\"REPLACE_REQUEST_BODY\":\"REPLACE_REQUEST_BODY\"}", ParameterType.RequestBody);
          IRestResponse response = client.Execute(request);

          Request body

          • virtualAccountIDstringoptional

            LCM ID of the virtual account

            example: 17278634608426073445672258
          • virtualAccountStatusstringoptional

            One of INACTIVE | ACTIVE | SUSPENDED | DELETED

            example: ACTIVE
          • reasonstringoptional

            The reason for sending the notification

            example: DIGITIZATION
          • tokenRequestorIDstringoptional

            The ID of the token requestor

            example: 40010030273
          • deviceInfoobjectoptional
            • deviceNamestringoptionalexample: my phone
            • deviceProductstringoptional

              Manufacturer of product, e.g. Apple, Samsung

              example: Apple
            • deviceModelstringoptional

              Device model, e.g. iPhone7, Galaxy

              example: iPhone 7
            • deviceOSNamestringoptional

              Phone OS i.e. iOS, Android

              example: iOS
            • deviceOSVersionstringoptional

              Version of OS running on the device

              example: 11.4
            • deviceIMEIstringoptional

              IMEI number of the device

              example: 440725462341524345643456
            • cardSchemeDeviceIdstringoptional

              Device ID received from the scheme

              example: 192834712983471298347190
          • actorIDstringoptional

            The entity that triggered the action.

            example: CARDHOLDER
          • tokenReferenceIDstringoptional

            Token reference ID provided by the scheme that uniquely identifies the token

            example: DNIH487394827392873492834
          • walletIDstringoptionalexample: PPKSarajJ6VttrqlJw11nbvmCQ262626

          Request body

          {
              "virtualAccountID": "17278634608426073445672258",
              "virtualAccountStatus": "ACTIVE",
              "reason": "DIGITIZATION",
              "tokenRequestorID": "40010030273",
              "deviceInfo": {
                  "deviceName": "my phone",
                  "deviceProduct": "Apple",
                  "deviceModel": "iPhone 7",
                  "deviceOSName": "iOS",
                  "deviceOSVersion": "11.4",
                  "deviceIMEI": "440725462341524345643456",
                  "cardSchemeDeviceId": "192834712983471298347190"
              },
              "actorID": "CARDHOLDER",
              "tokenReferenceID": "DNIH487394827392873492834",
              "walletID": "PPKSarajJ6VttrqlJw11nbvmCQ262626"
          }

          Responses

          • 200OKoptional
          • 401Unauthorizedoptional
          • 403Forbiddenoptional
          • 404Not Foundoptional

          Virtual account status notification, version 2

          POST /v2/accounts/{accountID}/virtualaccount

          Virtual account status notification, version 2

          Parameters

          • Authorizationstringrequired
          • X-Issuer-IDstringrequired
          • X-Request-IDstringrequired
          • X-Provider-IDstringrequired
          • accountIDstringrequired

            26-digit account ID uniquely identifying the account in LCM

          Virtual account status notification, version 2

          var client = new RestClient("https://api-gateway2.nets.eu/%3Ccontext_path%3E/v2/accounts/12345678901234567890123456/virtualaccount");
          var request = new RestRequest(Method.POST);
          request.AddHeader("content-type", "application/json");
          request.AddHeader("Authorization", "SOME_STRING_VALUE");
          request.AddHeader("X-Issuer-ID", "SOME_STRING_VALUE");
          request.AddHeader("X-Request-ID", "SOME_STRING_VALUE");
          request.AddHeader("X-Provider-ID", "SOME_STRING_VALUE");
          request.AddParameter("application/json", "{\"REPLACE_REQUEST_BODY\":\"REPLACE_REQUEST_BODY\"}", ParameterType.RequestBody);
          IRestResponse response = client.Execute(request);

          Request body

          • virtualAccountIDstringoptional

            LCM ID of the virtual account

            example: 17278634608426073445672258
          • actorIDstringoptional

            The entity that triggered the action.

            example: CARDHOLDER
          • primaryTokenReferenceIDstringoptional

            Only applicable for VISA/Dankort use case. Token reference ID of the primary side of the card.

            example: DNIH487394827392873492834
          • accountInfoobjectoptional
            • accountstringoptional

              The account value set based on the accountType:

              example: CARDID
            • accountTypestringoptional

              One of PAN | CARDID | PANID | PANREF

              example: CARDID
            • accountExpirystringoptional

              Only applicable if accountType = PAN and in this case accountExpiry will be sent inside the encryptedData field, along with PAN value.

              example: 062028
            • encryptedDatastringoptional

              This field is present only if accountType = PAN and then the field is an encrypted JSON object with account and accountExpiry fields inside. To know about the Encrypted String after Decription please refer EncryptedDataAccountInfoNotification Schema.

              example: encrypted_data
            • accountMaskedstringoptional

              Masked PAN, sent only if accountType = PAN.

              example: 447065xxxxxx8729
            • acccountSchemeReferenceIDstringoptional

              PAN reference ID received from the scheme

              example: V-4200000000000000000090
            • accountSourcestringoptional

              PAN source received from the scheme

              example: KEY_ENTERED
          • tokenInfoobjectoptional
            • encryptedDatastringoptional

              Encrypted data containing token PAN and token expiry. Sent only if the issuer has been configured to receive it in the notification. Encrypted with the issuer's public key.To know about the Encrypted String after Decription please refer EncryptedDataTokenInfoNotification Schema.

              example: encrypted_data
            • tokenMaskedstringoptional

              Masked token PAN.

              example: 44706XXXXXXX8928
            • tokenStatusstringoptional

              State of the token (ACTIVE,DELETED,SUSPENDED)

              example: ACTIVE
            • tokenTypestringoptionalexample: SECURE_ELEMENT
            • tokenRequestorIDstringoptional

              The ID of the token requestor

              example: 40010030273
            • tokenReferenceIDstringoptional

              Token reference ID provided by the scheme that uniquely identifies the token.

              example: DNIH487394827392873492834
            • tokenProviderIDstringoptional

              VTS for a VISA token, MDES for a Mastercard token.

              example: VTS
            • tokenUpdateDatestringoptionalexample: 2024-08-12T08:15:00Z
            • tokenProvisioningFlowstringoptionalexample: GREEN
          • deviceInfoobjectoptional
            • deviceIDstringoptional

              Device ID received from the scheme

              example: 192834712983471298347190
            • deviceNamestringoptionalexample: my phone
            • deviceProductstringoptional

              Manufacturer of product, e.g. Apple, Samsung

              example: Apple
            • deviceModelstringoptional

              Device model, e.g. iPhone7, Galaxy

              example: iPhone 7
            • deviceOSNamestringoptional

              Phone OS i.e. iOS, Android

              example: iOS
            • deviceOSVersionstringoptional

              Version of OS running on the device

              example: 11.4
            • deviceIMEIstringoptional

              IMEI number of the device

              example: 440725462341524345643456
            • deviceWalletIDstringoptionalexample: PPKSarajJ6VttrqlJw11nbvmCQ262626

          Request body

          {
              "virtualAccountID": "17278634608426073445672258",
              "actorID": "CARDHOLDER",
              "primaryTokenReferenceID": "DNIH487394827392873492834",
              "accountInfo": {
                  "account": "CARDID",
                  "accountType": "CARDID",
                  "accountExpiry": "062028",
                  "encryptedData": "encrypted_data",
                  "accountMasked": "447065xxxxxx8729",
                  "acccountSchemeReferenceID": "V-4200000000000000000090",
                  "accountSource": "KEY_ENTERED"
              },
              "tokenInfo": {
                  "encryptedData": "encrypted_data",
                  "tokenMasked": "44706XXXXXXX8928",
                  "tokenStatus": "ACTIVE",
                  "tokenType": "SECURE_ELEMENT",
                  "tokenRequestorID": "40010030273",
                  "tokenReferenceID": "DNIH487394827392873492834",
                  "tokenProviderID": "VTS",
                  "tokenUpdateDate": "2024-08-12T08:15:00Z",
                  "tokenProvisioningFlow": "GREEN"
              },
              "deviceInfo": {
                  "deviceID": "192834712983471298347190",
                  "deviceName": "my phone",
                  "deviceProduct": "Apple",
                  "deviceModel": "iPhone 7",
                  "deviceOSName": "iOS",
                  "deviceOSVersion": "11.4",
                  "deviceIMEI": "440725462341524345643456",
                  "deviceWalletID": "PPKSarajJ6VttrqlJw11nbvmCQ262626"
              }
          }

          Responses

          • 200OKoptional
          • 401Unauthorizedoptional
          • 403Forbiddenoptional
          • 404Not Foundoptional

          This LCM outbound request allows the issuer to receive the cardholder notifications and forward them to the cardholders instead of LCM sending them directly. It can be useful if the issuer wants to send the notifications from their own email server / SMS gateway or apply some other custom rules for sending the notifications that LCM would be unable to fulfill. There are two ways of transmitting the cardholder notification information to the issuer: (1) Passthrough: in this case, the issuer receives a JSON object with fields and values applicable to the notification like notification type, masked PAN, OTP value, etc. (2) Formatted message: the issuer receives a fully formatted text (sms or html email body) that is ready to be forwarded to the cardholder.

          POST /v1/notification

          This LCM outbound request allows the issuer to receive the cardholder notifications and forward them to the cardholders instead of LCM sending them directly. It can be useful if the issuer wants to send the notifications from their own email server / SMS gateway or apply some other custom rules for sending the notifications that LCM would be unable to fulfill. There are two ways of transmitting the cardholder notification information to the issuer: (1) Passthrough: in this case, the issuer receives a JSON object with fields and values applicable to the notification like notification type, masked PAN, OTP value, etc. (2) Formatted message: the issuer receives a fully formatted text (sms or html email body) that is ready to be forwarded to the cardholder.

          Parameters

          • Authorizationstringrequired
          • X-Issuer-IDstringrequired
          • X-Request-IDstringrequired
          • X-Provider-IDstringrequired

          This LCM outbound request allows the issuer to receive the cardholder notifications and forward them to the cardholders instead of LCM sending them directly. It can be useful if the issuer wants to send the notifications from their own email server / SMS gateway or apply some other custom rules for sending the notifications that LCM would be unable to fulfill. There are two ways of transmitting the cardholder notification information to the issuer: (1) Passthrough: in this case, the issuer receives a JSON object with fields and values applicable to the notification like notification type, masked PAN, OTP value, etc. (2) Formatted message: the issuer receives a fully formatted text (sms or html email body) that is ready to be forwarded to the cardholder.

          var client = new RestClient("https://api-gateway2.nets.eu/%3Ccontext_path%3E/v1/notification");
          var request = new RestRequest(Method.POST);
          request.AddHeader("content-type", "application/json");
          request.AddHeader("Authorization", "SOME_STRING_VALUE");
          request.AddHeader("X-Issuer-ID", "SOME_STRING_VALUE");
          request.AddHeader("X-Request-ID", "SOME_STRING_VALUE");
          request.AddHeader("X-Provider-ID", "SOME_STRING_VALUE");
          request.AddParameter("application/json", "{\"REPLACE_REQUEST_BODY\":\"REPLACE_REQUEST_BODY\"}", ParameterType.RequestBody);
          IRestResponse response = client.Execute(request);

          Request body

          • virtualAccountIDstringoptional

            LCM ID of the virtual account

            example: 17278634608426073445672258
          • idvChannelstringoptional

            IDV channel: SMS or EMAIL

            example: SMS
          • notificationTypestringoptional

            One of:

            example: PASSCODE
          • reasonCodestringoptional

            Reason for account update, refer to: "Reason codes and account actions"

          • walletProviderNamestringoptionalexample: Google Pay
          • languagestringoptionalexample: en
          • notificationDataarrayoptional
            • namestringoptional

              The key of the key-value pair sent. The typical set of of keys is otpValue, recipientContact and emaiSubject.

              example: otpValue
            • valuestringoptional

              The value of the key-value pair sent.

              example: mark@domain.com
          • accountInfoobjectoptional
            • accountTypestringoptional

              Account type is statically set to to PAN in this case.

              example: PAN
            • accountMaskedstringoptional

              Masked PAN, sent only if accountType = PAN.

              example: 447065xxxxxx8729
            • encryptedDatastringoptional

              Encrypted JSON object containing the single field - account - carrying the PAN.

              example: encrypted_data

          Request body

          {
              "virtualAccountID": "17278634608426073445672258",
              "idvChannel": "SMS",
              "notificationType": "PASSCODE",
              "reasonCode": "string",
              "walletProviderName": "Google Pay",
              "language": "en",
              "notificationData": [
                  {
                      "name": "otpValue",
                      "value": "mark@domain.com"
                  }
              ],
              "accountInfo": {
                  "accountType": "PAN",
                  "accountMasked": "447065xxxxxx8729",
                  "encryptedData": "encrypted_data"
              }
          }

          Responses

          • 204No Contentoptional
          • 401Unauthorizedoptional
          • 403Forbiddenoptional
          • 404Not Foundoptional