Search

Are you looking for test card numbers?

Would you like to contact support?

Point-of-sale icon

Mail Order/Telephone Order (MOTO)

Pass a tender option to trigger a MOTO transaction and optionally add an AVS check.

A Mail Order/Telephone Order (MOTO) transaction is a card-not-present transaction where the shopper provides you with their order and payment details by regular mail (not email), fax, or telephone. By passing on these data to you, the cardholder gives you permission to process the transaction. When you do a MOTO transaction, the payment terminal prompts you to enter the shopper's card number and CVC code.

MOTO payments are considered insecure. There is no liability shift and you are fully liable for fraud chargebacks related to MOTO payments.

To reduce the risk of fraud, you have the option to add an Address Verification Service (AVS) check to the MOTO payment flow. With an AVS check, the payment terminal prompts you to enter the shopper's postal code (zip code) and house number. The card issuer then validates the cardholder's billing address and returns a response that can help you decide whether to accept or cancel the transaction.
AVS is supported by American Express, Discover, Mastercard, and Visa. In the US, UK, and Canada, all other issuers also support it.

AVS checks are possible on current payment terminal models (not on the legacy devices).

Enable MOTO and AVS

  1. Contact our POS Support Team to enable MOTO for the account that you want to use for processing MOTO payments.
    If you want to add an AVS check to the flow, ask our POS Support team to enable that too.

  2. Sign and return the Merchant MOTO disclaimer document you receive from us.

  3. Configure the maximum amount that the terminal allows for a MOTO transaction:

    1. Log in to your Customer Area.
    2. Go to Point of sale > Terminal settings (or select a specific terminal) and select Payment features.
    3. Enter the MOTO max amount.
    4. Select Save.

  4. If you are adding an AVS check to the MOTO flow, make sure that you receive the AVS response:

    1. In your Customer Area go to Account > API URLs and response.
    2. On the Additional data settings tab, select Acquirer result and Raw acquirer result.

  5. Configure a capture delay. This gives you time to review the AVS result in the payment response and if necessary cancel the authorisation.

Make a MOTO payment

For a MOTO payment, you need to trigger the payment terminal to prompt you to enter the card details:

  1. Make a PaymentRequest that contains a SaletoAcquirerData field with the MOTO tender option specified in one of the following formats:

    • Option 1: A JSON object converted to a Base64 encoded string.
      Encode {"tenderOption": "MOTO"} to Base64, and pass the resulting string:
      "SaleToAcquirerData": "eyJ0ZW5kZXJPcHRpb24iOiAiTU9UTyJ9"

    • Option 2: A key-value pair:
      "SaleToAcquirerData": "tenderOption=MOTO"

    The format that you use here, will also be the format of the AdditionalResponse that you receive.

    If there are more tender options or other data elements that you need to pass in the SaleToAcquirerData field, refer to Add information to a payment.

    {
      "SaleToPOIRequest": {
        "PaymentRequest": {
          "SaleData": {
            "SaleTransactionID": {
              "TransactionID": "5748",
              "TimeStamp": "2020-04-15T15:45:04.114Z"
            },
            "SaleToAcquirerData": "tenderOption=MOTO"
          },
          "PaymentTransaction": {
            "AmountsReq": {
              "Currency": "USD",
              "RequestedAmount": 17.50
            }
          }
        },
        "MessageHeader": {
          "ProtocolVersion": "3.0",
          "MessageClass": "Service",
          "MessageCategory": "Payment",
          "MessageType": "Request",
          "ServiceID": "0110123015",
          "SaleID": "POSSystemID12345",
          "POIID": "M400-260193322"
        }
      }
    }
    String serviceID = "YOUR_UNIQUE_ATTEMPT_ID";
    String saleID = "YOUR_CASH_REGISTER_ID";
    String POIID = "YOUR_TERMINAL_ID";
    String transactionID = "YOUR_UNIQUE_TRANSACTION_ID";
    
    SaleToPOIRequest saleToPOIRequest = new SaleToPOIRequest();
    MessageHeader messageHeader = new MessageHeader();
    messageHeader.setProtocolVersion("3.0");
    messageHeader.setMessageClass( MessageClassType.SERVICE );
    messageHeader.setMessageCategory( MessageCategoryType.PAYMENT );
    messageHeader.setMessageType( MessageType.REQUEST );
    messageHeader.setServiceID(serviceID);
    messageHeader.setSaleID(saleID);
    messageHeader.setPOIID(POIID);
    saleToPOIRequest.setMessageHeader(messageHeader);
    
    PaymentRequest paymentRequest = new PaymentRequest();
    SaleData saleData = new SaleData();
    TransactionIdentification saleTransactionID = new TransactionIdentification();
    saleTransactionID.setTransactionID(transactionID);
    saleTransactionID.setTimeStamp(DatatypeFactory.newInstance().newXMLGregorianCalendar(new GregorianCalendar()));
    saleData.setSaleTransactionID(saleTransactionID);
    saleData.setSaleToAcquirerData("tenderOption=MOTO");
    paymentRequest.setSaleData(saleData);
    
    PaymentTransaction paymentTransaction = new PaymentTransaction();
    AmountsReq amountsReq = new AmountsReq();
    amountsReq.setCurrency("EUR");
    amountsReq.setRequestedAmount( BigDecimal.valueOf(17.50) );
    paymentTransaction.setAmountsReq(amountsReq);
    paymentRequest.setPaymentTransaction(paymentTransaction);
    saleToPOIRequest.setPaymentRequest(paymentRequest);
    terminalAPIRequest.setSaleToPOIRequest(saleToPOIRequest);
  2. When prompted, enter the shopper's card number and CVC code on the payment terminal.
  3. If you enabled AVS, enter the shopper's postal code (zip code) and house number on the payment terminal.
  4. When the transaction is authorised, note that the payment response contains:

    • EntryMode: Keyed.
    • AdditionalResponse: Depending on the format that you used in the SaleToAcquirerData field, this is either a Base64-encoded string that you need to decode to get a JSON object, or a string of key-value pairs separated by &. This includes posEntryMode=MKE. If you enabled AVS, it also includes avsResult and avsResultRaw.
    {
       "SaleToPOIResponse":{
          "PaymentResponse":{...},
             "POIData":{...},
             "SaleData":{...},
             "PaymentReceipt":[...],
             "PaymentResult":{
                "OnlineFlag":true,
                "PaymentAcquirerData":{...},
                   "MerchantID":"YOUR_MERCHANT_ACCOUNT"
                },
                "PaymentInstrumentData":{
                   "CardData":{
                      "EntryMode":[
                         "Keyed"
                      ],
                      "PaymentBrand":"amex",
                      "MaskedPan":"374101 **** 0018",
                      "SensitiveCardData":{
                         "ExpiryDate":"0330"
                      }
                   },
                   "PaymentInstrumentType":"Card"
                },
                "AmountsResp":{
                   "AuthorizedAmount":17.5,
                   "Currency":"EUR"
                }
             },
             "Response":{
                "Result":"Success",
                "AdditionalResponse":"tid=46403161&...avsResult=1%20Address%20matches%2c%20postal%20code%20doesn%27t&...avsResultRaw=1&...posEntryMode=MKE&acquirerReference=7F66BQ5UHAH&issuerCountry=GB&cardScheme=amex&cardBin=374101&posAuthAmountValue=1750"
             }
          },
          "MessageHeader":{...}
       }
    }
  5. If you enabled AVS:

    1. Check the value of the avsResult field in the AdditionalResponse against our list of AVS responses for point of sale.
    2. Based on the AVS response, decide whether you trust the transaction. If not, refer to Delayed capture and cancel the authorisation.

      Be aware that when you cancel the authorisation for a MOTO transaction, the transaction status changes to SentForRefund.

Testing MOTO payments

To test a MOTO payment with an AVS check:

  1. Make a MOTO payment as described above.
  2. When prompted to enter card and address details on the payment terminal, use the details for one of the test cards listed under Test Address Verification System (AVS). These test cards can be used for both online and point-of-sale AVS tests.

See also