--- title: "Mail Order/Telephone Order (MOTO)" description: "Pass a tender option to trigger a MOTO transaction and optionally add an AVS check." url: "https://docs.adyen.com/point-of-sale/mail-and-telephone-order-moto" source_url: "https://docs.adyen.com/point-of-sale/mail-and-telephone-order-moto.md" canonical: "https://docs.adyen.com/point-of-sale/mail-and-telephone-order-moto" last_modified: "2026-04-08T09:54:00+02:00" language: "en" --- # Mail Order/Telephone Order (MOTO) Pass a tender option to trigger a MOTO transaction and optionally add an AVS check. [View source](/point-of-sale/mail-and-telephone-order-moto.md) A Mail Order/Telephone Order (MOTO) transaction is a [card-not-present transaction](/get-started-with-adyen/adyen-glossary/#card-not-present-cnp) 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. In addition to orders taken over the phone or by mail you can use this flow for processing virtual credit cards on the Japan Card Network (JCB). ## Requirements Before you begin, take into account the following requirements, limitations, and preparations. | Requirement | Description | | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Integration type** | A [Terminal API](/point-of-sale/basic-tapi-integration/) integration with payment terminals or a [standalone solution](/point-of-sale/standalone). | | **Limitations** | Take into account the following limitations:- [Address verification service](#avs) is supported by American Express, Discover, Mastercard, and Visa. In the US, UK, and Canada, all other issuers also support it. - [Address verification service](#avs) checks are not supported on Android payment terminals and legacy payment terminals. | | **Setup steps** | Before you begin:- You must complete the PCI DSS [Self-Assessment Questionnaire B-IP](/development-resources/pci-dss-compliance-guide#in-person-payments) as part of your commercial contract. If you are unsure if this has been taken care of, contact your Account Manager or our Support Team. - Be aware that you need to enable [MOTO, AVS, and capture delay](#enable). - To enable MOTO for Adyen for Platforms, make sure the terminals are assigned to a store that is [configured with the business line](/platforms/manage-stores) of the legal entity. | ## Risk management MOTO payments are considered [insecure](/point-of-sale/what-we-support/payment-methods#pos-chargebacks). There is no liability shift and you are fully liable for fraud chargebacks related to MOTO payments. If you are using our classic risk engine RevenueProtect you can use our [risk management](/point-of-sale/risk-management-pos) system to minimize fraud by applying risk rules before processing a transaction. Based on your risk settings, every transaction gets a risk score ranging from 0 to 100 and is declined when the risk score reaches 100. ## Address verification service 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 validates the data you entered against the cardholder's billing address, sends us the result, and declines or authorizes the payment. It is possible that issuers authorize a payment even though the entered data do not fully match. To enable you to verify this and decide whether to go ahead with the transaction, you receive the result of the AVS check in the [payment response](/point-of-sale/avs-responses-pos) and in your [Customer Area](https://ca-live.adyen.com/) > **Transactions** > **Payments**. If you configured a capture delay, you can cancel the authorization if necessary. AVS is supported by American Express, Discover, Mastercard, and Visa. In the US, UK, and Canada, all other issuers also support it. ### AVS on standalone terminals When you use MOTO with AVS on a standalone terminal, this is what happens: * The issuer declines or authorizes the payment. * If the issuer didn't decline the payment, the terminal shows the result of the AVS check and prompts you to **Approve** or **Decline** the transaction. If you have second thoughts about the transaction and select **Decline**, we'll take care of canceling the authorization or, if the payment has already been captured, refunding the shopper. ## Configure MOTO, AVS, and capture delay 1. To enable MOTO transactions and to configure the maximum amount that the terminal allows for a MOTO transaction: 1. Log in to your [Customer Area](https://ca-test.adyen.com/). 2. Go to **In-person payments** > **Terminal settings** (or select a specific terminal) and select **Payment features**. 3. At MOTO payments, select **Enabled**. 4. Optionally, enter the **MOTO max amount** to configure the maximum transaction amount for a MOTO transaction. 5. Select **Save**. 2. If you are adding an AVS check to the MOTO flow, make sure that you receive the AVS response: 1. In your [Customer Area](https://ca-test.adyen.com/) go to **Developers** > **Additional data**. 2. Select **Acquirer result** and **Raw acquirer result**. 3. Select **Save configuration**. 3. Optionally, [configure a capture delay](/point-of-sale/capturing-payments#delayed-capture). ## Make a MOTO payment With a Terminal API integration, proceed as follows to trigger the payment terminal to prompt you to enter the card details: 1. [Make a payment request](/point-of-sale/basic-tapi-integration/make-a-payment) that contains a [SaleData.SaleToAcquirerData](https://docs.adyen.com/api-explorer/terminal-api/latest/post/payment#request-SaleData-SaleToAcquirerData) parameter with the [tender option](/point-of-sale/add-data/tender-options) **MOTO** 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, see [Add information to a payment](/point-of-sale/add-data). #### JSON ```json { "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" } } } ``` #### Java ```java 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. You find the result of checking the CVC code in your [Customer Area](https://ca-live.adyen.com/) > **Transactions** > **Payments**. 3. If you enabled AVS, enter the shopper's postal code (zip code) and house number on the payment terminal. 4. Note that the [PaymentResponse](https://docs.adyen.com/api-explorer/terminal-api/latest/post/payment#responses-200) 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`. **MOTO payment response** ```json { "SaleToPOIResponse": { "MessageHeader": {...}, "PaymentResponse": { "POIData": {...} }, "PaymentReceipt": [...], "PaymentResult": { "AmountsResp": { "AuthorizedAmount": 17.50, "Currency": "EUR" }, "OnlineFlag": true, "PaymentAcquirerData": {...}, "PaymentInstrumentData": { "CardData": { "CardCountryCode": "840", "EntryMode": [ "Keyed" ], "MaskedPan": "415150 **** 0008", "PaymentBrand": "visa", "SensitiveCardData": { "ExpiryDate": "0330" } }, "PaymentInstrumentType": "Card" } }, "Response": { "AdditionalResponse": "...retry.attempt1.shopperInteraction=Moto...avsResult=1%20Address%20matches%2c%20postal%20code%20doesn%27t...avsResultRaw=1...posEntryMode=MKE...", "Result": "Success" }, "SaleData": { "SaleTransactionID": {...} } } } } ``` 5. If you enabled AVS, check the `avsResult` and `avsResultRaw` against our [list of AVS responses for point of sale](/point-of-sale/avs-responses-pos). It is possible the issuer authorized the payment even though the AVS check was inconclusive. 6. When the issuer authorized the payment, decide whether you trust the transaction. If not, [cancel the authorization](/point-of-sale/capturing-payments#cancel-authorisation). If you do not cancel the transaction, the payment will be captured. Be aware that when you cancel the authorization 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)](/development-resources/testing/risk-features/#address-verification-system-avs). These test cards can be used for both online and point-of-sale AVS tests. ## See also * [AVS responses for point of sale](/point-of-sale/avs-responses-pos) * [Add information to a payment](/point-of-sale/add-data) * [Delayed capture](/point-of-sale/capturing-payments#delayed-capture) * [Risk management for point of sale](/point-of-sale/risk-management-pos) * [MOTO on standalone terminals](/point-of-sale/standalone/standalone-use#moto)