Application information identifies how technology partners connect to Adyen for payment processing. Adyen can use application info to analyze and troubleshoot payments more efficiently, and to provide better support.
Who builds the integration
The fields you are required to include depend on who builds the integration between you and Adyen:
- Partner-built: you build your own integration.
- Integrator-built: you outsource building your integration.
- Pre-built: you are the integrator who customizes a pre-built integration.
Application information fields
The field values you must include depend on who builds the integration:
The following table shows an example in which your company, Best Store Commerce:
- Builds a store platform and partners with Adyen to process payments.
- Builds applications for your platform, including a point of sale (POS) application called Best Instore and an ecommerce application called Best Ecom. These applications connect to Adyen for payment processing.
- Provides implementation services to our shared merchants to set up your solution.
Include these fields in the applicationInfo
object:
Field | Description | Required | Example |
---|---|---|---|
externalPlatform.name |
Your company name or the name of your platform. | Best Store Commerce | |
externalPlatform.version |
The software version of the platform. | If your platform has versions. | 1.3 |
externalPlatform.integrator |
The name of your company (or an internal team, if applicable) that either built or implemented your integration. | Best Store Commerce | |
merchantApplication.name |
The name of the application or product that a merchant uses. | Best Instore or Best Ecom | |
merchantApplication.version |
The software version of the application. | If your application has versions. | 2.13.05 |
merchantDevice.os |
The operating system of the device that runs the POS application. | If your merchant application is a POS application. | iOS |
merchantDevice.osVersion |
The software version of the operating system. | If your merchant application is a POS application. | 16.3 |
Field value requirements
The values you send in the application info fields can:
- Be between up to 40 characters in length.
- Start with a number or letter.
- Contain letters, digits, dashes, underscores, and spaces.
The formatting of the values must be the same in every request.
For example, if the externalPlatform.name
is Best Store Commerce, you cannot sometimes specify that value as BestStoreCommerce or BESTSTORECOMMERCE. You must choose one format and stick to it.
Example API requests
See examples for the following types of applications:
Ecommerce application
The following examples shows how to provide application info in the /payments request.
curl https://checkout-test.adyen.com/v70/payments \ -H 'x-api-key: ADYEN_API_KEY' \ -H 'content-type: application/json' \ -d '{ "applicationInfo": { "externalPlatform": { "name": "Best Store Commerce", "version": "1.3", "integrator": "Best Store Commerce" }, "merchantApplication": { "name": "Best Ecom", "version": "2.13.05" } } ... }'
POS application
To add application info to your payment request, you pass data elements in the SaleToAcquirerData
field. There are two ways to do that:
- Option 1: as a JSON object converted to a Base64-encoded string.
- Option 2: as form-encoded key-value pairs (using & as a separator).
This example shows how to add application info to your payment request as a JSON object converted to a Base64-encoded string:
-
Create a JSON object with the data elements you want to pass. For example:
{ "applicationInfo": { "externalPlatform": { "name": "Best Store Commerce", "version": "1.3", "integrator": "AAA Systems" }, "merchantApplication": { "name": "Best Instore", "version": "1.23.5" }, "merchantDevice": { "os": "iOS", "osVersion": "16.3" } } } -
Encode the JSON object to Base64.
ewogICAgImFwcGxpY2F0aW9uSW5mbyI6ewogICAgICAgICJleHRlcm5hbFBsYXRmb3JtIjp7CiAgICAgICAgICAgICJuYW1lIjoiQmVzdCBTdG9yZSBDb21tZXJjZSIsCiAgICAgICAgICAgICJ2ZXJzaW9uIjoiMS4zIiwKICAgICAgICAgICAgImludGVncmF0b3IiOiJBQUEgU3lzdGVtcyIKICAgICAgICB9LAogICAgICAgICJtZXJjaGFudEFwcGxpY2F0aW9uIjp7CiAgICAgICAgICAgICJuYW1lIjoiQmVzdCBJbnN0b3JlIiwKICAgICAgICAgICAgInZlcnNpb24iOiIyLjEzLjA1IgogICAgICAgIH0sCiAgICAgICAgIm1lcmNoYW50RGV2aWNlIjp7CiAgICAgICAgICAgICJvcyI6ImlPUyIsCiAgICAgICAgICAgICJvc1ZlcnNpb24iOiIxNi4zIgogICAgICAgIH0KICAgIH0KfQ==
-
Make a payment request with:
SaleData.SaletoAcquirerData
: The Base64-encoded JSON object.
Expand viewCopy link to code blockCopy code{ "SaleToPOIRequest": { "PaymentRequest":{ "SaleData":{ "SaleToAcquirerData": "ewogICAgImFwcGxpY2F0aW9uSW5mbyI6ewogICAgICAgICJleHRlcm5hbFBsYXRmb3JtIjp7CiAgICAgICAgICAgICJuYW1lIjoiQmVzdCBTdG9yZSBDb21tZXJjZSIsCiAgICAgICAgICAgICJ2ZXJzaW9uIjoiMS4zIiwKICAgICAgICAgICAgImludGVncmF0b3IiOiJBQUEgU3lzdGVtcyIKICAgICAgICB9LAogICAgICAgICJtZXJjaGFudEFwcGxpY2F0aW9uIjp7CiAgICAgICAgICAgICJuYW1lIjoiQmVzdCBJbnN0b3JlIiwKICAgICAgICAgICAgInZlcnNpb24iOiIyLjEzLjA1IgogICAgICAgIH0sCiAgICAgICAgIm1lcmNoYW50RGV2aWNlIjp7CiAgICAgICAgICAgICJvcyI6ImlPUyIsCiAgICAgICAgICAgICJvc1ZlcnNpb24iOiIxNi4zIgogICAgICAgIH0KICAgIH0KfQ==", "SaleTransactionID": { "TransactionID": "27909", "TimeStamp": "2020-04-16T11:53:52+00:00" } }, "PaymentTransaction":{ "AmountsReq":{ "Currency":"EUR", "RequestedAmount":10.99 } } }, "MessageHeader":{ "ProtocolVersion":"3.0", "MessageClass":"Service", "MessageCategory":"Payment", "MessageType":"Request", "ServiceID":"1113162454", "SaleID":"POSSystemID12346", "POIID":"V400m-346403161" } } } Note that the payment response has the
AdditionalResponse
in the same format as theSaleToAcquirerData
, a Base64-encoded JSON object.Response with Base64-encoded AdditionalResponseExpand viewCopy link to code blockCopy code{ "SaleToPOIResponse": { "PaymentResponse": { "POIData": {...}, "SaleData": {...}, "PaymentReceipt": [...], "PaymentResult": { "OnlineFlag": true, "PaymentAcquirerData": {...}, "PaymentInstrumentData": { "CardData": {...} }, "PaymentInstrumentType": "Card" }, "AmountsResp": { "AuthorizedAmount": 10.99, "Currency": "EUR" }, "CustomerLanguage": "nl" }, "Response": { "Result": "Success", "AdditionalResponse": "eyAidGlkIjogIjQ2NDAzMTYxIiwgIkFJRCI6ICJBMDAwMDAwMDA0MTAxMDAxIiwgInRyYW5zYWN0aW9uVHlwZSI6ICJHT09EU19TRVJWSUNFUyIsICJ0cmFuc2FjdGlvbkxhbmd1YWdlIjogIm5sIiwgImJhY2tlbmRHaWZ0Y2FyZEluZGljYXRvciI6ICJmYWxzZSIsICJwb3NhZGRpdGlvbmFsYW1vdW50cy5vcmlnaW5hbEFtb3VudFZhbHVlIjogIjEwOTkiLCAiZXhwaXJ5WWVhciI6ICIyMDI4IiwgImFjcXVpcmVyQWNjb3VudENvZGUiOiAiVGVzdFBtbUFjcXVpcmVyQWNjb3VudCIsICJhbGlhcyI6ICJNNDY5NTA5NTk0ODU5ODAyIiwgInBvc0Ftb3VudEdyYXR1aXR5VmFsdWUiOiAiMCIsICJnaWZ0Y2FyZEluZGljYXRvciI6ICJmYWxzZSIsICJhdXRob3Jpc2VkQW1vdW50VmFsdWUiOiAiMTA5OSIsICJwc3BSZWZlcmVuY2UiOiAiODUzNTg3MDMwODM0OTE3OCIsICJwYXltZW50TWV0aG9kVmFyaWFudCI6ICJtYyIsICJyZWZ1c2FsUmVhc29uUmF3IjogIkFQUFJPVkVEIiwgImF1dGhvcmlzYXRpb25NaWQiOiAiMTAwMCIsICJhcHBsaWNhdGlvblByZWZlcnJlZE5hbWUiOiAibWMgbmwiLCAiYWNxdWlyZXJDb2RlIjogIlRlc3RQbW1BY3F1aXJlciIsICJzdG9yZSI6ICJTdG9yZU9uZSIsICJ0eHRpbWUiOiAiMTE6NTM6NDkiLCAiaXNvODYwMVR4RGF0ZSI6ICIyMDIwLTA0LTE2VDA5OjUzOjQ5LjAwMDAwMDArMDAwMCIsICJjYXJkVHlwZSI6ICJtYyIsICJwb3NPcmlnaW5hbEFtb3VudFZhbHVlIjogIjEwOTkiLCAib2ZmbGluZSI6ICJmYWxzZSIsICJhbGlhc1R5cGUiOiAiRGVmYXVsdCIsICJ0eGRhdGUiOiAiMTYtMDQtMjAyMCIsICJwYXltZW50TWV0aG9kIjogIm1jIiwgImN2Y1Jlc3VsdCI6ICIwIFVua25vd24iLCAiYXV0aG9yaXNlZEFtb3VudEN1cnJlbmN5IjogIkVVUiIsICJzdGFydFllYXIiOiAiMjAxNyIsICJ0YyI6ICJFNEM3RUFEREFDMzgzNEVEIiwgImF2c1Jlc3VsdCI6ICIwIFVua25vd24iLCAiY2FyZElzc3VlTnVtYmVyIjogIjgzIiwgIm1pZCI6ICIxMDAwIiwgIm1lcmNoYW50UmVmZXJlbmNlIjogIjI3OTA5IiwgInRyYW5zYWN0aW9uUmVmZXJlbmNlTnVtYmVyIjogIjg1MzU4NzAzMDgzNDkxNzgiLCAiZXhwaXJ5TW9udGgiOiAiMDIiLCAiY2FyZFN1bW1hcnkiOiAiOTk5OSIsICJwb3NhZGRpdGlvbmFsYW1vdW50cy5vcmlnaW5hbEFtb3VudEN1cnJlbmN5IjogIkVVUiIsICJwb3NBdXRoQW1vdW50Q3VycmVuY3kiOiAiRVVSIiwgImNhcmRIb2xkZXJWZXJpZmljYXRpb25NZXRob2RSZXN1bHRzIjogIjFGMDMwMiIsICJhdXRoQ29kZSI6ICIxMjM0NTYiLCAiY2FyZElzc3VlckNvdW50cnlJZCI6ICIwNTYiLCAiYWRqdXN0QXV0aG9yaXNhdGlvbkRhdGEiOiAiQlFBQkFRQVdjckx0ZE1qSFRDam1WVzQzY3dWQitOSWN2dU54aGpKTSt1NlA3YXZiUm1ITzY4cnVzZER3eGFYRnhjMzBsQ1YwRnBlcGhlK0VSV3o3NUx1YWJaRVBXYTduYkNqVDNSS2VJTDYxa0VOb1B0VkdRUGtmSlhKOHpNTUZCWEw2cmNzNlFybU5uTjdcL2JXa3NrT0NBNUpTRFBQZ1NocVhIWHhPQ1wvWFJNRGNxNUZtUVFNNUtkZlpiOXVFMXdJOWJ4RHdWQTgxVmcrRm82Z3dKdnMwRUoxK3BzN0FTOHV5eTNpenFUY3E1aFJ5c1pyaEwydVRZNk9udlduMDNKYWdhaTB3Q2hFRmpDamF1cFBBbitPU3hGV1JxbTErQVRCc3hBd2M0Z29ISFRYaFwvYUk3XC9hbVJuMUlLdDlFaUN0bG1LRVRHYkREUXFUZG5ZclBiejdROGsrUGtkMUVPN09tRTdEQ1Y1MjN4TFVKbUs5TnpvQUFGam1yeFhrRkxnajl5V3NsZlVWOXZ3QnlHb2I1UWtHN0JWVGg1U25ONDBpWHUwN2NsRjc5MnR6MXRWMVhIM2szblgxSVkxOVMwMnJTdnlOTDhOblBCUUx2Uk9rMmc0NVFVSHhCQU0rUWxJSVJwN0VYOWhhY0ZrR3RRSnQzaXpuXC9rczB5V3F2VXA0VVcxY2twK1p5RTZoXC9pRmFSOHlMaUVobDNZU1NMNXlHSmpEOE9RMGpLN0ZWbUFcL003emx0Y3lwOFFTQmd4Y2NTUUNRY2FGNDJhZHo4bjU2OVkzdE50NXBYRVFHU1gzWUZXWFUzSE1EOVFXXC9GeFUrYmltaVFjZXZ5WklmY1JNMHNhMU5DTDJ6TyszcEQxcndXQTVCUXMwcTdzTEkxZytNQ3ZvWFRnZ2J4Vyt3T2x4VFlSVFYwSHkyc3hwQ213VDlcL000SGladHRJZndLRmZjS2xIemFpeHdiSmJcL0NVeWhsdHk0QUNINW5PK0xZNFlZVTJJTktwRTBkeGhtU1hVeGpKcUNLUGhKTU0rT0JkXC95ZUdYVEQwTUd6bUlaeURrN1J4QXlwSjlsYktQbTdKY2dPNzZJS0NUQkswcWZEd0dKdz09IiwgInBvc0Ftb3VudENhc2hiYWNrVmFsdWUiOiAiMCIsICJwb3NFbnRyeU1vZGUiOiAiQ0xFU1NfQ0hJUCIsICJzdGFydE1vbnRoIjogIjAxIiwgImZ1bmRpbmdTb3VyY2UiOiAiQ1JFRElUIiwgImlzc3VlckNvdW50cnkiOiAiQkUiLCAiY2FyZFNjaGVtZSI6ICJtYyIsICJjYXJkQmluIjogIjU0MTMzMyIsICJwb3NBdXRoQW1vdW50VmFsdWUiOiAiMTA5OSIgfQ==" } }, "MessageHeader": {...} } } -
Decode the Base64 string in the
AdditionalResponse
field of the payment response.
This contains data resulting from the processing of the payment.
The format of the SaleToAcquirerData
, Base64-encoded or key-value pairs, determines the format of the AdditionalResponse
that you receive. To always receive the AdditionalResponse
in one of those formats, contact our Support Team.
Combining application info and other data elements
Apart from application info, you can also add other information in the SaleToAcquirerData
field. For example, you can add tender options or metadata.
To combine application info and other data elements, see Add information to a payment.