Physical Sale
OpenAPI SpecTest this endpoint live
Open the same request directly in API Explorer.
Server URL
Starts an in-person sale on a physical payment terminal connected to a Softpay point of sale.
Physical transactions are processed using operation type SALE, which functions as an instant capture making sales function as both an AUTHORIZATION and CAPTURE in a single atomic operation. These transactions therefor cannot be voided.
This endpoint creates the transaction immediately.
The transaction returned in the response confirms that the sale request was accepted and created, but not that the cardholder has completed the payment yet.
If terminal.id is provided, ePay targets that specific terminal.
If terminal is omitted, ePay automatically routes the sale to the fallback terminal for the given point of sale.
The pointOfSaleId must refer to a physical Softpay point of sale that belongs to your account.
Refunds
Physical transactions does not support card-not-present online refunds. Meaing the refund operation is not supported for physical transactions.
To refund a previous purchase a PAYOUT transaction must be initiated instead by setting "type": "PAYOUT", which will initiate a transaction on the terminal sending funds to the card placed on the terminal.
Notification
You’ll receive the outcome of the payment on the notificationUrl you provide within the request, making it the primary way to track the result of this payment. Webhooks can be used separately if you need broader, system-wide updates.
Early rejections, such as the SoftPay terminal being wrongly configured or blocked by another transaction will return a transaction response with state FAILED. If the transaction fails due to early rejections, the final state is returned in the response and no notification is sent to the notificationUrl.
Authorization
BearerAuth In: header
Header Parameters
Ensures that a request can be safely retried without causing duplicate operations. Typically used for actions like payment creation and operations such as refund and void to prevent accidental double processing.
- If a response is replayed due to using the same key, the response will include the header
Idempotent-Replayed: true. - Idempotency keys are scoped by [Key, Endpoint, HTTP Verb]; the same key on a different endpoint or method will not replay the original response.
- Responses are cached for 24 hours. After that, the cache is cleared, so idempotency is only guaranteed within 24 hours of the initial request.
Request Body
application/json
Physical sale request payload.
TypeScript Definitions
Use the request body type in TypeScript.
Physical sale data used to create the terminal transaction.
Response Body
application/json
application/json
application/json
application/json
MOTO Authorization
PCI-DSS Compliance As this endpoint receives raw payment data, the integrator is required to provide documentation for PCI-DSS compliance before access can be granted. This endpoint creates and processes an online MOTO transaction and returns the authorization result in the response. This is typically used within the travel industry, where it is more common for customers to provide their card info over the phone when booking a vacation. This can be used by merchants to automate authorizations when receiving card info from brokers such as hotels.com and booking.com. We recommend a minimum timeout of 60 seconds.
Abort Payment
Abort an unpaid CARD_TERMINAL transaction, such as a SoftPay transaction, before the card is tapped on the terminal. This endpoint is only for stopping a payment before card tap. It is not a way to cancel an already paid transaction, and it is not a refund or a void. The endpoint returns an error after card tap, when the terminal has started processing the payment. The endpoint also returns an error if the transaction has not yet reached the terminal.