Skip to content
Create account
or
Sign in
The Stripe Docs logo
/
Ask AI
Create account
Sign in
Get started
Payments
Finance automation
Platforms and marketplaces
Money management
Developer tools
Get started
Payments
Finance automation
Get started
Payments
Finance automation
Platforms and marketplaces
Money management
Overview
About Stripe payments
Upgrade your integration
Payments analytics
Online payments
OverviewFind your use caseManaged Payments
Use Payment Links
Build a checkout page
Build an advanced integration
Build an in-app integration
Payment methods
Add payment methods
Manage payment methods
Faster checkout with Link
Payment interfaces
Payment Links
Checkout
Web Elements
In-app Elements
Payment scenarios
Custom payment flows
Flexible acquiring
Orchestration
In-person payments
Terminal
    Overview
    Accept in-person payments
    Integration design
    Select your reader
    Design an integration
    Quickstart
    Example applications
    Testing
    Terminal setup
    Set up your integration
    Connect to a reader
    Accepting a payment
    Collect card payments
    Additional payment methods
    Accept offline payments
    Mail order and telephone order payments
      Process MOTO payments
      Saving cards using MOTO
    Regional considerations
    During checkout
    Collect tips
    Collect and save payment details for future use
    Flexible authorizations
    After checkout
    Refund transactions
    Provide receipts
    Customize checkout
    Cart display
    Collect on-screen inputs
    Collect swiped data
    Collect tapped data for NFC instruments
    Apps on devices
    Manage readers
    Order, return, replace readers
    Register readers
    Manage locations and zones
    Configure readers
    Encryption
    References
    API references
    Mobile readers
    Smart readers
    SDK migration guide
    Deployment checklist
    Stripe Terminal reader product sheets
Other Stripe products
Financial Connections
Crypto
Climate
HomePaymentsTerminalMail order and telephone order payments

Process MOTO payments

Process mail order and telephone order (MOTO) payments.

Copy page

Note

MOTO payments are a gated feature. To request access, contact Stripe support. After we enable the feature, you must activate it by disconnecting from and reconnecting to your readers.

To process MOTO payments with the Android SDK, you must:

  1. Create a PaymentIntent.
  2. Collect a PaymentMethod.
  3. Confirm and capture the payment.

Note

If you’re displaying cart details using the setReaderDisplay method, you must reset the reader’s display from a line item interface to the splash screen before collecting a MOTO payment.

MOTO payment collection screenshots

MOTO payment collection flow

Create a PaymentIntent

To begin collecting a MOTO payment, you must create a PaymentIntent with payment_method_types that includes card.

PaymentActivity.kt
Kotlin
val params = PaymentIntentParameters.Builder( listOf(PaymentMethodType.CARD) ) .setAmount(1000) .setCurrency("usd") .build() Terminal.getInstance().createPaymentIntent( params, object : PaymentIntentCallback { override fun onSuccess(paymentIntent: PaymentIntent) { // Placeholder for handling successful operation } override fun onFailure(e: TerminalException) { // Placeholder for handling exception } } )

Collect a payment method

After you’ve created a PaymentIntent, you can collect a PaymentMethod with the SDK. To collect a MOTO payment, your app must connect to a reader.

Set moto to true in the CollectConfiguration object when calling collectPaymentMethod.

After the request, the connected reader prompts you to enter the cardholder’s number, CVC, expiration date, and postal code.

PaymentActivity.kt
Kotlin
val config = CollectConfiguration.Builder().setMoto(true).build() Terminal.getInstance().collectPaymentMethod( paymentIntent, config, object : PaymentIntentCallback { override fun onSuccess(paymentIntent: PaymentIntent) { // Placeholder for handling successful operation } override fun onFailure(e: TerminalException) { // Placeholder for handling exception } } )

Confirm and capture payment

You can follow the usual procedure to confirm and capture the PaymentIntent.

Was this page helpful?
YesNo
Need help? Contact Support.
Join our early access program.
Check out our changelog.
Questions? Contact Sales.
LLM? Read llms.txt.
Powered by Markdoc