Terminal
JavaScript
JavaScript API reference

JavaScript API reference

Use our API reference to navigate the Stripe Terminal JavaScript SDK.

API methods

StripeTerminal.create([options])

Creates an instance of StripeTerminal with the given options:

Option Description
onFetchConnectionToken

An event handler that fetches a connection token from your backend.

onUnexpectedReaderDisconnect

An event handler called when a reader disconnects from your app.

onConnectionStatusChange optional

An event handler called when the SDK’s ConnectionStatus changes.

onPaymentStatusChange optional

An event handler called when the SDK’s PaymentStatus changes.

discoverReaders([options])

Begins discovering readers with the given options:

Option Description
simulated optional

A boolean value indicating whether to discover a simulated reader. If left empty, this value defaults to false.

location optional

Return only readers assigned to the given location. This parameter is ignored when discovering a simulated reader.

For more information on using locations to filter discovered readers, see Fleet Management.

Returns a Promise that resolves to an object with the following fields:

  • discoveredReaders: A list of discovered Reader objects, if the command succeeded.
  • error: An error, if the command failed.

connectReader(Reader)

Attempts to connect to the given reader.

Returns a Promise that resolves to an object with the following fields:

  • reader: The connected Reader, if the command succeeded.
  • error: An error, if the command failed.

disconnectReader()

Disconnects from the connected reader.

getConnectionStatus()

Returns the current connection status.

ConnectionStatus can be one of connecting, connected, or not_connected.

getPaymentStatus()

Returns the reader’s payment status.

PaymentStatus can be one of not_ready, ready, waiting_for_input, or processing.

clearCachedCredentials()

Clears the current ConnectionToken, and any other cached credentials.

Use this method to switch accounts in your application (e.g., to switch between live and test Stripe API keys on your backend). To switch accounts, follow these steps:

  1. If a reader is connected, call disconnectReader.
  2. Configure your onFetchConnectionToken handler to return connection tokens for the new account.
  3. Call clearCachedCredentials.
  4. Reconnect to a reader. The SDK will request a new connection token from your onFetchConnectionToken handler.

collectPaymentMethod(client_secret)

Begins collecting a payment method for a PaymentIntent.

This method takes a single argument, the client_secret field from a PaymentIntent object created on your backend. For more information, learn to create a PaymentIntent and pass its client secret.

Returns a Promise that resolves to an object with the following fields:

For more information on collecting payments, see our Collecting Payments guide.

cancelCollectPaymentMethod()

Cancels an outstanding collectPaymentMethod command.

Returns a Promise that resolves to an empty object once the command has been successfully canceled. If cancelation fails, the Promise resolves to an object with an error

processPayment(PaymentIntent)

Processes a payment after a payment method has been collected.

This method takes a single parameter, a PaymentIntent object obtained from a successful call to collectPaymentMethod.

Returns a Promise that resolves to an object with the following fields:

readReusableCard()

Reads a card for online reuse.

Online payments initiated from Terminal do not benefit from the lower pricing and liability shift given to standard Terminal payments. Most integrations do not need to use readReusableCard. To simply collect an in-person payment from a customer, use the standard flow.

Returns a Promise that resolves to an object with the following fields:

cancelReadReusableCard()

Cancels an outstanding readReusableCard command.

Returns a Promise that resolves to an empty object once the command has been successfully canceled. If cancelation fails, the Promise resolves to an object with an error.

setReaderDisplay(DisplayInfo)

Updates the reader display with cart details.

This method takes a DisplayInfo object as input.

{ type: 'cart', cart: { line_items: [ { description: string, amount: number, quantity: number, }, ], tax: number, total: number, currency: string, } }

Returns a Promise that resolves to an empty object if the command succeeds. If the command fails, the Promise resolves to an object with an error.

clearReaderDisplay()

If the reader is displaying cart details set with setReaderDisplay, this method clears the screen and resets it to the splash screen.

Returns a Promise that resolves to an empty object if the command succeeds. If the command fails, the Promise resolves to an object with an error.

setSimulatorConfiguration(configuration)

Sets the configuration object for the simulated card reader.

This method only takes effect when connected to the simulated reader; it performs no action otherwise.

The simulated reader will follow the specified configuration only until processPayment is complete. At that point, the simulated reader will revert to its default behavior.

Note that this method overwrites any currently active configuration object; to add specific key-value pairs to the object, make sure to use a combination of this method and getSimulatorConfiguration.

The configuration options available are:

Field Values Description
testCardNumber Refer to the Simulated test cards list. Configures the simulated reader to use a test card number as the payment method presented by the user. This can be used to test different scenarios in your integration, such as payments with different card brands or processing errors like a declined charge.
testPaymentMethod Refer to the Simulated test cards list. Serves the same purpose as testCardNumber, but relies on test payment methods instead.
payment_method_type deprecated
  • card_present (default)
  • interac_present
Determine the type of payment method created by the simulated reader when collectPaymentMethod is called.

getSimulatorConfiguration()

Returns the currently active configuration object.

The Stripe Terminal JavaScript SDK may overwrite this value as necessary, including (but not limited to) resetting the value after processPayment is complete, and removing unknown key-value pairs.

collectRefundPaymentMethod(charge_id, amount, currency, options)

Begins collecting a payment method to be refunded. The method takes two required parameters:

  • charge_id, the ID of the charge that will be refunded.
  • amount: a number that represents the amount, in cents, that will be refunded from the charge. This number must be less than or equal to the amount that was charged in the original payment.
  • currency: Three-letter ISO code for the currency, in lowercase. Must be a supported currency.
  • options: an optional object containing additional refund parameters.
Option Description
refund_application_fee

Optional, defaults to false. Connect only.

Boolean indicating whether the application fee should be refunded when refunding this charge. If a full charge refund is given, the full application fee will be refunded. Otherwise, the application fee will be refunded in an amount proportional to the amount of the charge refunded.

An application fee can be refunded only by the application that created the charge.

reverse_transfer

Optional, defaults to false. Connect only.

Boolean indicating whether the transfer should be reversed when refunding this charge. The transfer will be reversed proportionally to the amount being refunded (either the entire or partial amount).

A transfer can be reversed only by the application that created the charge.

Returns a Promise that resolves to either:

  • an empty object if the payment method collection was successful, or
  • an object with an error field if there was an error while collecting the refund payment method.

processRefund()

Processes an in-progress refund. This method can only be successfully called after collectRefundPaymentMethod has returned successfully.

Returns a Promise that resolves to either:

  • a refund object if the refund was successful, or
  • an object with an error field if there was an error while processing the refund.

cancelCollectRefundPaymentMethod()

Cancels an outstanding collectRefundPaymentMethod command.

Returns a Promise that resolves to an empty object if the cancellation was successful. If the cancellation fails, the Promise resolves to an object with an error field.

Errors

Errors returned by the JavaScript SDK include an error code, as well as a human-readable message.

For methods involving a PaymentIntent like processPayment, the error may also include a payment_intent object.

Error codes

Code Description
no_established_connection The command failed because no reader is connected.
no_active_collect_payment_method_attempt cancelCollectPaymentMethod can only be called when collectPaymentMethod is in progress.
no_active_read_reusable_card_attempt cancelCollectReusableCard can only be called when readReusableCard is in progress.
canceled The command was canceled
cancelable_already_completed Cancelation failed because the operation has already completed.
cancelable_already_canceled Cancelation failed because the operation has already been canceled.
network_error An unknown error occurred when communicating with the server or reader over the network. Refer to the error message for more information.
network_timeout The request timed out when communicating with the server or reader over the network. Make sure both your device and the reader are connected to the network with stable connections.
already_connected connectReader failed because a reader is already connected.
failed_fetch_connection_token Failed to fetch a connection token. Make sure your connection token handler returns a promise that resolves to the connection token.
discovery_too_many_readers discoverReaders returned too many readers. Use Locations to filter discovered readers by location.
invalid_reader_version The reader is running an unsupported software version. Please allow the reader to update and try again.
reader_error The reader returned an error while processing the request. Refer to the error message for more information.
command_already_in_progress The action cannot be performed, because there is an in-progress action preventing it.

Changelog

If you are using an earlier version of the JavaScript SDK (before June 7, 2019), update to the latest release by changing the URL of the script your integration includes.

<script src="https://js.stripe.com/terminal/v1/"></script>

For more information on migrating from the Stripe Terminal beta, see the Terminal Beta Migration Guide.

v1

  • Renamed confirmPaymentIntent to processPayment.
  • Renamed the values for PaymentStatus. PaymentStatus can be one of not_ready, ready, waiting_for_input, or processing.
  • Removed card details from the response to collectPaymentMethod, previously available in response.paymentIntent.payment_method.card_payment.
  • Receipt information is now located in the paymentIntent.charges[0].payment_method_details.card_present hash.
  • Changed the API for discovering a simulated reader to discoverReaders({ simulated: true }).
  • Renamed readSource to readReusableCard. A successful call to readReusableCard returns a PaymentMethod instead of a Source. Payment Methods must be used with Payment Intents. For more information, see the Payment Methods API overview.
  • Changed the response of connectReader to { reader: Reader }, removing the wrapper Connection object.
  • Removed the startReaderDiscovery and stopReaderDiscovery methods. To repeatedly discover readers, you can use the JavaScript setInterval method.
  • Renamed clearConnectionToken to clearCachedCredentials.
Was this page helpful?
Questions? Contact us.
Developer tutorials on YouTube.
You can unsubscribe at any time. Read our privacy policy.