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
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:
- Resource owner: An entity capable of granting access to a protected resource.
- Resource server: The server hosting protected resources, capable of accepting and responding to protected resource requests using access tokens.
- Client: An application making protected resource requests on behalf of the resource owner and with its authorization.
- 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.
- Get a token from the authorization server.
- 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
- Obtain a valid client_id and Client_secret.
- Combine the pair in the format client_id:client_secret and encode the combined string
- using base64. See Encode to Base64 format, https://www.base64encode.org/
- 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: chunkedBecause 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 action | Reason code | Service API | Description |
|---|---|---|---|
| 0000 | Create/register account | Add new account | |
| RENEW | 0001 | Update Account Number orExpiry Date | Renewed for new expiry date |
| REPLACE | 0002 | Update Account Number orExpiry Date | Update account info due to replacement |
| REPLACE | 0003 | Update Account Number orExpiry Date | Update account info due to brand flip |
| 0004 | Update IDV | Update contact information | |
| 0005 | Change the state of an account | Delete account due to fraud | |
| 0006 | Change the state of an account | Delete account as card is lost | |
| 0007 | Change the state of an account | Delete account as card is stolen | |
| 0008 | Change the state of an account | Delete account due to expiry and no renewal | |
| 0009 | Change the state of an account | Delete account as per customer request | |
| 0010 | Change the state of an account | Block the existing account | |
| 0011 | Change the state of an account | Resume the blocked account | |
| 0012 | Update Services Needed | Services needed for the account is updated | |
| REPLACE | 0013 | Update Account Number orExpiry Date | Update account info due to portfolio flip |
| 0100 | Change the state of a virtual account | Delete virtual account | |
| 0105 | Change the state of a virtual account | Delete virtual account due to confirmed fraud | |
| 0106 | Change the state of a virtual account | Delete virtual account as devices is confirmed lost | |
| 0107 | Change the state of a virtual account | Delete virtual account as device is confirmed stolen | |
| 0108 | Change the state of a virtual account | Delete virtual account due to expiry and no renewal | |
| 0200 | Change the state of a virtual account | Suspend virtual account | |
| 0205 | Change the state of a virtual account | Suspend virtual account due to fraud | |
| 0206 | Change the state of a virtual account | Suspend virtual account as devices is lost | |
| 0207 | Change the state of a virtual account | Suspend virtual account as device is stolen | |
| 0300 | Change the state of a virtual account | Resume the virtual account | |
| 0311 | Change the state of a virtual account | Resume the virtual account as device is recovered | |
| 0314 | Change the state of a virtual account | Resume the virtual account as no fraudulent transaction is reported | |
| 0400 | Change the state of a virtual account | Activate virtual account | |
| 0401 | Change the state of a virtual account | Activate virtual account as cardholder is pre-authenticated | |
| 0402 | Change the state of a virtual account | Activate virtual account upon request from cardholder | |
| 0501 | Change profile | Card product change | |
| 0502 | Change profile | Terms and conditions change | |
| 0503 | Change profile | Card art change | |
| 0504 | Change profile | Card credentials change | |
| 2000 | Get Encrypted Payload | Push provisioning to Google Pay | |
| 2001 | Get Encrypted Payload | Push provisioning to Apple Pay |
| Error code | Description |
|---|---|
| LCM-1011 | Invalid Account ID |
| LCM-1012 | Invalid PAN ID or Card ID |
| LCM-1013 | Invalid PAN |
| LCM-1014 | Input Data Invalid |
| LCM-1015 | Internal Server Error |
| LCM-1016 | Invalid Virtual Account |
| LCM-1018 | Client error related to virtual card presentation |
| LCM-1019 | Server error related to virtual card presentation |
| LCM-1021 | PAR service — client error |
| LCM-1022 | PAR service — server error |
| LCM-1025 | Internal communication error |
| LCM-1026 | External communication error |
| LCM-1027 | Invalid 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
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 /pingThis operation provides health check of the API
Parameters
X-Issuer-IDstringrequired
X-Request-IDstringrequired
X-Provider-IDstringrequired
Authorizationstringrequired
Health check
- C#
- PHP
- Node
- Shell
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/virtualaccountidGet 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
- C#
- PHP
- Node
- Shell
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
example: TPANTPAN is the only allowed value
encryptedDatastringoptional
example: encrypted_dataEncrypted data containing a JSON with account field inside. This field must contain the token PAN.
Request body
{ "accountInfo": { "accountType": "TPAN", "encryptedData": "encrypted_data" } }
Responses
200OKoptional
virtualAccountIDstringoptional
example: 17278634608426073445672258LCM ID of the virtual account
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
- C#
- PHP
- Node
- Shell
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
example: 17278634608426073445672258The unique ID of the virtual account
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
example: 40010030273The ID of the token requestor
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
example: AppleManufacturer of product, e.g. Apple, Samsung
deviceModelstringoptional
example: iPhone 7Device model, e.g. iPhone7, Galaxy
deviceOSNamestringoptional
example: iOSPhone OS i.e. iOS, Android
deviceOSVersionstringoptional
example: 11.4Version of OS running on the device
deviceIMEIstringoptional
example: 440725462341524345643456IMEI number of the device
cardSchemeDeviceIdstringoptional
example: 192834712983471298347190Device ID received from the scheme
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' error401Unauthorizedoptional
403Forbiddenoptional
404Not Foundoptional
- 200
- 400
{ "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}/accountstateChange 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
- C#
- PHP
- Node
- Shell
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' error401Unauthorizedoptional
403Forbiddenoptional
404Not Foundoptional
400
{}
Change the state of a virtual account
PUT /accounts/tokens/{tokenReferenceID}/virtualAccount/accountstateChange 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
- C#
- PHP
- Node
- Shell
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' error401Unauthorizedoptional
403Forbiddenoptional
404Not Foundoptional
400
{}
Change the profile associated with a virtual account
PUT /accounts/{accountID}/virtualaccounts/{virtualAccountID}/profileChange 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
- C#
- PHP
- Node
- Shell
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
example: 3bf7159c-ec9b-484d-922b-2c18d1c7bf9dProfile ID known to the scheme
reasonCodestringoptional
example: 0501Reason for account update, refer to: "Reason codes and account actions"
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}/profileChanges 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
- C#
- PHP
- Node
- Shell
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
example: 3bf7159c-ec9b-484d-922b-2c18d1c7bf9dProfile ID known to the scheme
reasonCodestringoptional
example: 0501Reason for account update, refer to: "Reason codes and account actions"
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/activationcodeGet 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
- C#
- PHP
- Node
- Shell
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
example: 95645644466699990Plain text value of account reference, if accountType is one of: CARDID, PANID, PANREF. Otherwise, the account parameter is sent inside the encryptedData.
accountTypestringoptional
example: CARDIDOne of PAN, CARDID, PANID, PANREF.
accountExpirystringoptional
example: 062029Account expiry in the MMYYYY format. Only necessary if accounType is PAN and when it is sent, it is inside the encryptedData.
encryptedDatastringoptional
example: encrypted_dataA 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.
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/inAppPayloadDEPRECATED: 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
- C#
- PHP
- Node
- Shell
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
example: 95645644466699990Plain text value of account reference, if accountType is one of: CARDID, PANID, PANREF. Otherwise, the account parameter is sent inside the encryptedData.
accountTypestringoptional
example: CARDIDOne of PAN, CARDID, PANID, PANREF.
accountExpirystringoptional
example: 062029Account expiry in the MMYYYY format. Only necessary if accounType is PAN and when it is sent, it is inside the encryptedData.
encryptedDatastringoptional
example: encrypted_dataA 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.
providerInfoobjectoptional
Wallet provider and device information for the provisioning request.
clientWalletProviderstringoptional
example: 50120834693Client wallet provider, also known as token requestor, ID.
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
example: John SmithCardholder name
noncestringoptional
example: 0Yy62g==Nonce value received from Apple Wallet in base64 format.
nonceSignaturestringoptional
example: QHxyusaqGK2eI/EniY33AbxWqqZJUZMGIf1rfAzoDz7+/+pLwHgrrAVboTKWUaIKej4ddq4wIkecuruzswjuC3Weo0DopCvrCl6FNUzzRce2Nonce signature value received from Apple wallet in base64 format.
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/inAppPayloadGet encrypted payload for inApp provisioning
Parameters
Authorizationstringrequired
X-Issuer-IDstringrequired
X-Request-IDstringrequired
X-Provider-IDstringrequired
Get encrypted payload for inApp provisioning
- C#
- PHP
- Node
- Shell
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
example: 95645644466699990Plain text value of account reference, if accountType is one of: CARDID, PANID, PANREF. Otherwise, the account parameter is sent inside the encryptedData.
accountTypestringoptional
example: CARDIDOne of PAN, CARDID, PANID, PANREF.
accountExpirystringoptional
example: 062029Account expiry in the MMYYYY format. Only necessary if accounType is PAN and when it is sent, it is inside the encryptedData.
encryptedDatastringoptional
example: encrypted_dataA 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.
providerInfoobjectoptional
Wallet provider and device information for the provisioning request.
clientWalletProviderstringoptional
example: 50120834693Client wallet provider, also known as token requestor, ID.
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
example: John SmithCardholder name
noncestringoptional
example: 0Yy62g==Nonce value received from Apple Wallet in base64 format.
nonceSignaturestringoptional
example: QHxyusaqGK2eI/EniY33AbxWqqZJUZMGIf1rfAzoDz7+/+pLwHgrrAVboTKWUaIKej4ddq4wIkecuruzswjuC3Weo0DopCvrCl6FNUzzRce2Nonce signature value received from Apple wallet in base64 format.
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/schemetokensGet tokens based on account
Parameters
Authorizationstringrequired
X-Issuer-IDstringrequired
X-Request-IDstringrequired
X-Provider-IDstringrequired
Get tokens based on account
- C#
- PHP
- Node
- Shell
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
example: 95645644466699990Plain text value of account reference, if accountType is one of: CARDID, PANID, PANREF. Otherwise, the account parameter is sent inside the encryptedData.
accountTypestringoptional
example: CARDIDOne of PAN, CARDID, PANID, PANREF.
accountExpirystringoptional
example: 062029Account expiry in the MMYYYY format. Only necessary if accounType is PAN and when it is sent, it is inside the encryptedData.
encryptedDatastringoptional
example: encrypted_dataA 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.
Request body
{ "accountInfo": { "account": "95645644466699990", "accountType": "CARDID", "accountExpiry": "062029", "encryptedData": "encrypted_data" } }
Responses
200OKoptional
noOfTokensinteger (int32)optionalexample: 1
tokenInfoListarrayoptional
tokenReferenceIDstringoptional
example: DNIH487394827392873492834Token reference ID provided by the scheme that uniquely identifies the token
tokenRequestorIDstringoptional
example: 40010030273The ID of the token requestor
tokenStatusstringoptional
example: ACTIVEOne of INACTIVE | ACTIVE | SUSPENDED | DEACTIVATED
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/tokenreferenceResolve card from token reference
Parameters
Authorizationstringrequired
X-Issuer-IDstringrequired
X-Request-IDstringrequired
X-Provider-IDstringrequired
Resolve card from token reference
- C#
- PHP
- Node
- Shell
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
example: DNIH487394827392873492834Token reference ID provided by the scheme that uniquely identifies the token
accountTypestringoptional
example: CARDIDThe identifier of the account to be returned. There are four options:
Request body
{ "tokenReferenceID": "DNIH487394827392873492834", "accountType": "CARDID" }
Responses
200OKoptional
accountInfoobjectoptional
accountstringoptional
example: 940102472184811This field will contain the value that matches the accountType sent in the request. There are four options:
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
- C#
- PHP
- Node
- Shell
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
example: DNIH487394827392873492834Token reference ID provided by the scheme that uniquely identifies the token
tokenStatusstringoptionalexample: ACTIVE
accountInfoobjectoptional
accountstringoptional
example: 95645644466699990Plain text value of account reference, if accountType is one of: CARDID, PANID, PANREF. If accountType returned is PAN, this field contains the masked PAN.
accountTypestringoptional
example: CARDIDOne of PAN, CARDID, PANID, PANREF.
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/googlePayloadReturns 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
- C#
- PHP
- Node
- Shell
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
example: 95645644466699990Plain text value of account reference, if accountType is one of: CARDID, PANID, PANREF. Otherwise, the account parameter is sent inside the encryptedData.
accountTypestringoptional
example: CARDIDOne of PAN, CARDID, PANID, PANREF.
accountExpirystringoptional
example: 062029Account expiry in the MMYYYY format. Only necessary if accounType is PAN and when it is sent, it is inside the encryptedData.
encryptedDatastringoptional
example: encrypted_dataA 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.
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
- Normal encrypted response
- Decrypted Example (googleOpcPayload)
{ "payload": "string", "googleOpcPayload": "string" }
Scheme Tokenization - Outbound
Outbound API from LCM to issuer backend
DEPRECATED - Virtual account status notification
POST /v1/accounts/{accountID}/virtualaccountDEPRECATED: 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
- C#
- PHP
- Node
- Shell
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
example: 17278634608426073445672258LCM ID of the virtual account
virtualAccountStatusstringoptional
example: ACTIVEOne of INACTIVE | ACTIVE | SUSPENDED | DELETED
reasonstringoptional
example: DIGITIZATIONThe reason for sending the notification
tokenRequestorIDstringoptional
example: 40010030273The ID of the token requestor
deviceInfoobjectoptional
deviceNamestringoptionalexample: my phone
deviceProductstringoptional
example: AppleManufacturer of product, e.g. Apple, Samsung
deviceModelstringoptional
example: iPhone 7Device model, e.g. iPhone7, Galaxy
deviceOSNamestringoptional
example: iOSPhone OS i.e. iOS, Android
deviceOSVersionstringoptional
example: 11.4Version of OS running on the device
deviceIMEIstringoptional
example: 440725462341524345643456IMEI number of the device
cardSchemeDeviceIdstringoptional
example: 192834712983471298347190Device ID received from the scheme
actorIDstringoptional
example: CARDHOLDERThe entity that triggered the action.
tokenReferenceIDstringoptional
example: DNIH487394827392873492834Token reference ID provided by the scheme that uniquely identifies the token
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}/virtualaccountVirtual 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
- C#
- PHP
- Node
- Shell
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
example: 17278634608426073445672258LCM ID of the virtual account
actorIDstringoptional
example: CARDHOLDERThe entity that triggered the action.
primaryTokenReferenceIDstringoptional
example: DNIH487394827392873492834Only applicable for VISA/Dankort use case. Token reference ID of the primary side of the card.
accountInfoobjectoptional
accountstringoptional
example: CARDIDThe account value set based on the accountType:
accountTypestringoptional
example: CARDIDOne of PAN | CARDID | PANID | PANREF
accountExpirystringoptional
example: 062028Only applicable if accountType = PAN and in this case accountExpiry will be sent inside the encryptedData field, along with PAN value.
encryptedDatastringoptional
example: encrypted_dataThis 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.
accountMaskedstringoptional
example: 447065xxxxxx8729Masked PAN, sent only if accountType = PAN.
acccountSchemeReferenceIDstringoptional
example: V-4200000000000000000090PAN reference ID received from the scheme
accountSourcestringoptional
example: KEY_ENTEREDPAN source received from the scheme
tokenInfoobjectoptional
encryptedDatastringoptional
example: encrypted_dataEncrypted 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.
tokenMaskedstringoptional
example: 44706XXXXXXX8928Masked token PAN.
tokenStatusstringoptional
example: ACTIVEState of the token (ACTIVE,DELETED,SUSPENDED)
tokenTypestringoptionalexample: SECURE_ELEMENT
tokenRequestorIDstringoptional
example: 40010030273The ID of the token requestor
tokenReferenceIDstringoptional
example: DNIH487394827392873492834Token reference ID provided by the scheme that uniquely identifies the token.
tokenProviderIDstringoptional
example: VTSVTS for a VISA token, MDES for a Mastercard token.
tokenUpdateDatestringoptionalexample: 2024-08-12T08:15:00Z
tokenProvisioningFlowstringoptionalexample: GREEN
deviceInfoobjectoptional
deviceIDstringoptional
example: 192834712983471298347190Device ID received from the scheme
deviceNamestringoptionalexample: my phone
deviceProductstringoptional
example: AppleManufacturer of product, e.g. Apple, Samsung
deviceModelstringoptional
example: iPhone 7Device model, e.g. iPhone7, Galaxy
deviceOSNamestringoptional
example: iOSPhone OS i.e. iOS, Android
deviceOSVersionstringoptional
example: 11.4Version of OS running on the device
deviceIMEIstringoptional
example: 440725462341524345643456IMEI number of the device
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/notificationThis 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.
- C#
- PHP
- Node
- Shell
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
example: 17278634608426073445672258LCM ID of the virtual account
idvChannelstringoptional
example: SMSIDV channel: SMS or EMAIL
notificationTypestringoptional
example: PASSCODEOne of:
reasonCodestringoptional
Reason for account update, refer to: "Reason codes and account actions"
walletProviderNamestringoptionalexample: Google Pay
languagestringoptionalexample: en
notificationDataarrayoptional
namestringoptional
example: otpValueThe key of the key-value pair sent. The typical set of of keys is otpValue, recipientContact and emaiSubject.
valuestringoptional
example: mark@domain.comThe value of the key-value pair sent.
accountInfoobjectoptional
accountTypestringoptional
example: PANAccount type is statically set to to PAN in this case.
accountMaskedstringoptional
example: 447065xxxxxx8729Masked PAN, sent only if accountType = PAN.
encryptedDatastringoptional
example: encrypted_dataEncrypted JSON object containing the single field - account - carrying the PAN.
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