Mail Order or Telephone Order {#pax-aio-payment-txn-moto-sale-task}
===================================================================

Use this information to process a mail order or telephone order (MOTO) sale and other transactions. This is a card-not-present transaction so the customer does not present the payment card at the terminal.
Instructions for processing various MOTO transaction types are shown in step 2 of the code example.  
Follow these steps to process a MOTO transaction.

1. Create a `TransactionParameters` object and provide the required information for the payment.

2. Retrieve the `transactionIntent` variable from the `mposUi` object and use the `startActivity` method to initiate the transaction flow.

   ```
   val transactionParameters = TransactionParameters.Builder()
               // Use for Sale
               .charge(BigDecimal("1.00"), Currency.EUR)
               // Use for Account Verification
               // .verification(Currency.EUR)      
               .customIdentifier("yourReferenceForTheTransaction")
               // Use for Pre-Authorization
               // .autoCapture(false)
               .workflow(new WorkflowConfiguration.Builder()
                     .moto()
                     // Set to false to toggle CVV as optional
                     .cvvRequired(true)
                     // Set to false to toggle address as optional 
                     .addressRequired(true)
                     // Set to true to show transaction review screen
                     .reviewRequired(false)
                     .build())
               .build()

   val transactionIntent = mposUi.createTransactionIntent(transactionParameters)
   startActivityForResult(transactionIntent, MposUi.REQUEST_CODE_PAYMENT)
   ```
3. After the transaction is complete and the Summary screen is dismissed, the `onActivityResult` method is triggered. This action returns information about the last transaction.

   ```
   Override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) 
   {
       super.onActivityResult(requestCode, resultCode, data)
    
       if (requestCode == MposUi.REQUEST_CODE_PAYMENT) {
           when (resultCode) {
               // Result code from a successful transaction
               MposUi.RESULT_CODE_APPROVED -&gt; {
                  val transactionIdentifier = data?.getStringExtra(MposUi.RESULT_EXTRA_TRANSACTION_IDENTIFIER)
                  Toast.makeText(findViewById(android.R.id.content),”Transaction approved!\nIdentifier: $transactionIdentifier”, Toast.LENGTH_LONG).show()
               }
               // Result code from a declined, aborted or failed transaction
               MposUi.RESULT_CODE_FAILED -&gt; {
                  Toast.makeText(findViewById(android.R.id.content), “Transaction was declined, aborted, or failed”, Toast.LENGTH_LONG).show()
               }
           }
       }
   }
   ```
4. Get the full transaction object by retrieving the `latestTransaction` property from the mposUi object.

   ```
   val transactionObject = mposUi.latestTransaction
   ```

