You can gather ratings from your customers using the default GetRating input request. As an alternative, you can use the GetOneKeyRating input request. The main difference is that with GetOneKeyRating, a single key press answers the question:
- The user presses a key from 0 to 9 on the terminal keypad.
- Or the user presses Cancel  on the keypad or Skip on the terminal display. on the keypad or Skip on the terminal display.
After selecting a key, the answer is confirmed automatically, and the user cannot go back to change the answer.
Asking for rating with a single key press requires a physical keypad and is currently available on the following terminals: M400, P400 Plus, and V400m.
The following illustrations show the single key press rating screen on a portrait and landscape display.


The terminal continues to show your input request until one of these events occurs:
- The user selects a value from 0 to 9 on the keypad.
- The maximum input time expires. You can set this time in the request.
- The user presses Cancel  on the keypad or Skip on the terminal display. on the keypad or Skip on the terminal display.
- The terminal receives a request to cancel collecting input or any other request from your POS app.
Make a Rating input request
To use the payment terminal to ask for a rating:
- 
Make a POST Terminal API request, specifying: - 
The standard SaleToPOIRequest.MessageHeaderobject, withMessageClassset to Device andMessageCategoryset to Input.Parameter Required Description ProtocolVersion 3.0 MessageClass Device MessageCategory Input MessageType Request ServiceID Your unique ID for this request, consisting of 1-10 alphanumeric characters. Must be unique within the last 48 hours for the terminal ( POIID) being used.SaleID Your unique ID for the system where you send this request from. POIID The unique ID of the terminal to send this request to. Format: [device model]-[serial number]. 
 - 
InputRequest.DisplayOutput: this part of the request body defines what is shown on the terminal.Parameter Description DeviceCustomerDisplay InfoQualifyDisplay OutputContent.OutputFormatText OutputContent.PredefinedContent.ReferenceIDGetOneKeyRating OutputContent.OutputTextAn array of one or two Textfields containing your own text to show on the terminal. The first text is shown in bold. Use\nfor a new line. Apart from the text you specify, the terminal will show an instruction for how to confirm the input.
- 
InputRequest.InputData: this part of the request body handles the user input.Parameter Description DeviceCustomerInput InfoQualifyInput InputCommandDigitString MaxInputTime(Integer) Time-out in seconds. This is the time that the user gets to finish their input. 
 The following example asks the shopper for a rating using the first Textfield for the core question and the secondTextfield to explain the scoring.For a complete list of fields you can pass in a GetOneKeyRating input request, see the API reference. 
- 
- 
Wait for the user to supply the requested input. The provided input is not validated against a format. - If input is received from the terminal, the InputResult.Inputcontains:- DigitInput: the numeral that the user entered.
 
 - 
If the input request times out, the InputResult.ResponsehasAdditionalResponse: message=Screen%20timeout,Result: Failure, andErrorCondition: Cancel,
- 
If you make a payment request while the input request is waiting for input on the terminal, the payment request overrides the input request. The InputResult.ResponsehasAdditionalResponse: message=A%20higher%20priority%20request%20has%20been%20received,Result: Failure, andErrorCondition: Busy.
- 
If the user declined to respond (selected the Cancel key  or Skip on the screen), the or Skip on the screen), theInputResult.Input.DigitInputfield is empty. TheInputResult.ResponsehasResult: Failure andErrorCondition: Cancel.
 For a complete list of fields you can receive in a GetOneKeyRating input response, see the API reference. 
- If input is received from the terminal, the 
- 
Pass the DigitInputvalue to your system for validation and further use.