LCM Auxiliary Scheme Tokenization
Auxiliary Scheme Tokenization services provides scheme agnostic interface to help you with digital transformation for co-badged cards.
URLs
Authorization server Base URL - Production
Authorization server Base URL - Sandbox
https://api-gateway-pp.nets.eu/
Authentication
Before you can use Auxiliary 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 Auxiliary 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.
Auxiliary 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. Auxiliary 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 Auxiliary 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 | |
| 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 codes
| 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 |
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
GET /pingParameters
Authorizationstringrequired
X-Issuer-IDstringrequired
X-Request-IDstringrequired
X-Provider-IDstringrequired
- C#
- PHP
- Node
- Shell
var client = new RestClient("https://api-gateway2.nets.eu/lcmauxiliary/v1/ping"); 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
messagestringoptional
statusstringoptional
401Unauthorizedoptional
403Forbiddenoptional
404Not Foundoptional
200
{ "message": "string", "status": "string" }
LCM Auxiliary Scheme Tokenization - Inbound
Inbound API from issuers backend to LCM Auxiliary Scheme Tokenization - Inbound
Get account information
GET /accounts/{accountID}Parameters
Authorizationstringrequired
X-Issuer-IDstringrequired
X-Request-IDstringrequired
X-Provider-IDstringrequired
accountIDstringrequired
accountID
Get account information
- C#
- PHP
- Node
- Shell
var client = new RestClient("https://api-gateway2.nets.eu/lcmauxiliary/v1/accounts/{accountID}"); 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
accountInfoobjectoptional
issuerIdstringoptional
example: PB-11223344556Issuer ID assigned by LCM
accountTypestringoptional
example: PANStatic value - PAN
accountSuffixstringoptional
example: 5690Last 4 digits of account PAN
accountCreationDatestringoptional
example: 2024-08-19T16:56:22ZDate and time of account creation in the yyyy-MM-ddTHH:mm:ssZ format
accountStatestringoptional
example: ACTIVEState of the account, one of ACTIVE | SUSPENDED | DELETED | BLOCKED | LOCKED
stateTimeStampstringoptional
example: 2024-03-22T07:33:12ZThe timestamp of the last account state change in the yyyy-MM-ddTHH:mm:ssZ format
virtualAccountsobjectoptional
virtualAccountIDarrayoptional
An array of virtual account IDs
401Unauthorizedoptional
403Forbiddenoptional
404Not Foundoptional
200
{ "accountInfo": { "issuerId": "PB-11223344556", "accountType": "PAN", "accountSuffix": 5690, "accountCreationDate": "2024-08-19T16:56:22Z" }, "accountState": "ACTIVE", "stateTimeStamp": "2024-03-22T07:33:12Z", "virtualAccounts": { "virtualAccountID": [ "17110918517574127108316617", "17110927928114877464144012" ] } }
Update account number or expiry date
PUT /accounts/{accountID}/accountinfoParameters
Authorizationstringrequired
X-Issuer-IDstringrequired
X-Request-IDstringrequired
X-Provider-IDstringrequired
accountIDstringrequired
accountID
Update account number or expiry date
- C#
- PHP
- Node
- Shell
var client = new RestClient("https://api-gateway2.nets.eu/lcmauxiliary/v1/accounts/{accountID}/accountinfo"); 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
accountActionstringoptional
example: REPLACEREPLACE
accountInfoobjectoptional
accountTypestringoptional
example: PANIDRequired only if the accountAction is REPLACE. The value cab be either PAN or PANID. If it is PAN, the account and accountExpiry fields are sent in the encryptedData. If it is PANID, then the PANID value is sent in the account field and accountExpiry is not needed.
accountstringoptional
Required only if the accountAction is REPLACE. The value is the PANID value, if the accountType is PANID. Otherwise the account information is sent inside the encryptedData field.
accountExpirystringoptional
example: 062029Account expiry in the MMYYYY format.
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.
reasonCodestringoptionalexample: 0002
Request body
{ "accountAction": "REPLACE", "accountInfo": { "accountType": "PANID", "account": "string", "accountExpiry": "062029", "encryptedData": "encrypted_data", "reasonCode": "0002" } }
Responses
204No contentoptional
401Unauthorizedoptional
403Forbiddenoptional
404Not Foundoptional
Get virtual account information
GET /accounts/{accountID}/virtualaccounts/{virtualAccountID}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/lcmauxiliary/v1/accounts/{accountID}/virtualaccounts/%7BvirtualAccountID%7D?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
virtualAccountInfoobjectrequired
virtualAccountIDstringoptional
example: 17346067048865654076869019The virtual account ID
virtualAccountStatestringoptional
example: ACTIVEOne of One of INACTIVE | ACTIVE | SUSPENDED | DELETED
vitualAccountCreationDatestringoptional
example: 2024-08-19T16:56:22ZDate and time of virtual account creation in the yyyy-MM-ddTHH:mm:ssZ format
virtualAccountUpdateDatestringoptional
example: 2024-08-19T16:56:22ZDate and time of the last virtual account update in the yyyy-MM-ddTHH:mm:ssZ format
virtualAccountUpdateBystringoptional
example: LCMThe name of the entity that performed the last virtual account update
tokenInfoobjectrequired
tokenstringoptional
example: 4124XXXXXXXX4555Token(digitised substituted value) associated the PAN(account)
tokenExpirystringoptional
example: MMYYYYExpiration date of primary token in MMYYYY format
tokenRequestorIDstringoptional
example: 1341242341234Reference to token requestor
tokenStatusstringoptional
example: ACTIVEOne of INACTIVE | ACTIVE | SUSPENDED | DELETED
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
deviceIDstringoptional
example: 192834712983471298347190Device ID assigned by the card scheme
401Unauthorizedoptional
403Forbiddenoptional
404Not Foundoptional
200
{ "virtualAccountInfo": { "virtualAccountID": "17346067048865654076869019", "virtualAccountState": "ACTIVE", "vitualAccountCreationDate": "2024-08-19T16:56:22Z", "virtualAccountUpdateDate": "2024-08-19T16:56:22Z", "virtualAccountUpdateBy": "LCM" }, "tokenInfo": { "token": "4124XXXXXXXX4555", "tokenExpiry": "MMYYYY", "tokenRequestorID": "1341242341234", "tokenStatus": "ACTIVE" }, "deviceInfo": { "deviceName": "my phone", "deviceProduct": "Apple", "deviceModel": "iPhone 7", "deviceOSName": "iOS", "deviceOSVersion": "11.4", "deviceIMEI": "440725462341524345643456", "deviceID": "192834712983471298347190" } }
Primary token create notification
POST /accountsParameters
Authorizationstringrequired
X-Issuer-IDstringrequired
X-Request-IDstringrequired
X-Provider-IDstringrequired
Primary token create notification
- C#
- PHP
- Node
- Shell
var client = new RestClient("https://api-gateway2.nets.eu/lcmauxiliary/v1/accounts"); 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
dateTimeOfEventstringoptional
example: 2024-06-18T10:15:30.00ZTimestamp of primary token creation in the yyyy-MM-ddTHH:mm:ssZ format.
messageReasonCodestringoptional
example: TOKEN_CREATEDReason for notification provided by primary tokenisation service.
accountInfoobjectoptional
accountstringoptional
example: 956456Plain text value of account reference, if accountType is PANID. Otherwise, the account parameter is sent inside the encryptedData.
accountTypestringoptional
example: PANIDPAN or PANID.
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.
reasonCodestringoptional
example: 0000Reason code for account creation (always 0000)
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
deviceIDstringoptional
example: 192834712983471298347190Device ID assigned by the card scheme
tokenInfoobjectoptional
tokenstringoptional
example: 4124XXXXXXXX4555Token (digitised substituted value) associated the PAN (account). NOTE: V1 of this API does not support token encryption. Please use V2 endpoint to send encrypted token information.
tokenExpirystringoptional
example: MMYYYYToken expiry date
tokenRequestorIDstringoptional
example: 1341242341234Token requestor identifier
tokenStatusstringoptional
example: ACTIVEOne of INACTIVE | ACTIVE | SUSPENDED | DELETED
tokenIDstringoptional
example: DNIH487394827392873492834Token identifier also called DPAN ID (device pan identifier)
Request body
{ "dateTimeOfEvent": "2024-06-18T10:15:30.00Z", "messageReasonCode": "TOKEN_CREATED", "accountInfo": { "account": "956456", "accountType": "PANID", "accountExpiry": "062029", "encryptedData": "encrypted_data", "reasonCode": "0000" }, "deviceInfo": { "deviceName": "my phone", "deviceProduct": "Apple", "deviceModel": "iPhone 7", "deviceOSName": "iOS", "deviceOSVersion": "11.4", "deviceIMEI": "440725462341524345643456", "deviceID": "192834712983471298347190" }, "tokenInfo": { "token": "4124XXXXXXXX4555", "tokenExpiry": "MMYYYY", "tokenRequestorID": "1341242341234", "tokenStatus": "ACTIVE", "tokenID": "DNIH487394827392873492834" } }
Responses
200OKoptional
accountIDstringoptional
accountStatestringoptional
401Unauthorizedoptional
403Forbiddenoptional
404Not Foundoptional
200
{ "accountID": "string", "accountState": "string" }
Primary token create notification version 2
POST /accounts/v2Parameters
Authorizationstringrequired
X-Issuer-IDstringrequired
X-Request-IDstringrequired
X-Provider-IDstringrequired
Primary token create notification version 2
- C#
- PHP
- Node
- Shell
var client = new RestClient("https://api-gateway2.nets.eu/lcmauxiliary/v1/accounts/v2"); 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
dateTimeOfEventstringoptional
example: 2024-06-18T10:15:30.00ZTimestamp of primary token creation in the yyyy-MM-ddTHH:mm:ssZ format.
messageReasonCodestringoptional
example: TOKEN_CREATEDReason for notification provided by primary tokenisation service.
accountInfoobjectoptional
accountstringoptional
example: 956456Plain text value of account reference, if accountType is PANID. Otherwise, the account parameter is sent inside the encryptedData.
accountTypestringoptional
example: PANIDPAN or PANID.
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.
reasonCodestringoptional
example: 0000Reason code for account creation (always 0000)
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
deviceIDstringoptional
example: 192834712983471298347190Device ID assigned by the card scheme
tokenInfoobjectoptional
encryptedDatastringoptional
example: encrypted_dataThe encryptedData field is a JSON object with token and tokenExpiry fields inside. The token field is the token value and the tokenExpiry is the token expiry date in the MMYYYY format.
tokenIDstringoptional
example: DNIH487394827392873492834Token identifier also called DPAN ID (device pan identifier)
tokenRequestorIDstringoptional
example: 1341242341234Token requestor identifier
tokenStatusstringoptional
example: ACTIVEOne of INACTIVE | ACTIVE | SUSPENDED | DELETED
Request body
{ "dateTimeOfEvent": "2024-06-18T10:15:30.00Z", "messageReasonCode": "TOKEN_CREATED", "accountInfo": { "account": "956456", "accountType": "PANID", "accountExpiry": "062029", "encryptedData": "encrypted_data", "reasonCode": "0000" }, "deviceInfo": { "deviceName": "my phone", "deviceProduct": "Apple", "deviceModel": "iPhone 7", "deviceOSName": "iOS", "deviceOSVersion": "11.4", "deviceIMEI": "440725462341524345643456", "deviceID": "192834712983471298347190" }, "tokenInfo": { "encryptedData": "encrypted_data", "tokenID": "DNIH487394827392873492834", "tokenRequestorID": "1341242341234", "tokenStatus": "ACTIVE" } }
Responses
200OKoptional
accountIDstringoptional
accountStatestringoptional
401Unauthorizedoptional
403Forbiddenoptional
404Not Foundoptional
200
{ "accountID": "string", "accountState": "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/lcmauxiliary/v1/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}/virtualaccountParameters
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/lcmauxiliary/v1/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:
accountTypestringrequired
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. Please refer EncryptedDataAccountInfoNotification for the decrypted content.
accountMaskedstringrequired
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
encryptedDatastringrequired
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.
tokenStatusstringrequired
example: ACTIVEState of the token (ACTIVE,DELETED,SUSPENDED)
tokenTypestringrequiredexample: SECURE_ELEMENT
tokenRequestorIDstringrequired
example: 40010030273The ID of the token requestor
tokenReferenceIDstringrequired
example: DNIH487394827392873492834, 88410030273Token reference ID provided by the scheme that uniquely identifies the token.
tokenProviderIDstringrequired
example: VTSVTS for a VISA token, MDES for a Mastercard token.
tokenUpdateDatestringoptionalexample: 2024-08-12T08:15:00Z
tokenProvisioningFlowstringrequiredexample: 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, 88410030273", "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