---
title: "Transaction API"
source_url: https://docs.rapyd.net/en/transaction-api.html
lang: en
---

# Transaction API

### Standard card transactions

```java

// Minimal — no extra parameters
Api.startTransaction(amount, TransactionType.SALE, context);

// With parameters
HashMap<String, String> params = new HashMap<>();
params.put(Parameters.CORRELATION_ID, "order-123");
params.put(Parameters.REFERENCE_ID,   "ref-456");
params.put(Parameters.DISABLE_PRINTING, "true");

Api.startTransaction(amount, TransactionType.SALE, params, context);
```

**Supported transaction types:** `SALE`, `REFUND`, `PREAUTH`, `TOPUP`, `CASHBACK`, `CASH_ADVANCE`

**Response:** `TRANSACTION_RESULT_ACTION` or `TRANSACTION_CANCELLED_ACTION`

### PAX A8700 — dual-display devices

On the PAX A8700 the transaction UI must be shown on the customer-facing display (display ID 1). Pass `MODEL = "A8700"` in the parameters map. Printing is automatically disabled on this device.

```java

params.put(Parameters.MODEL, "A8700");
Api.startTransaction(amount, TransactionType.SALE, params, context);
```

### MOTO transactions (manual card entry)

MOTO (Mail Order / Telephone Order) allows card details to be typed in manually — no physical card required.

```java

HashMap<String, String> params = new HashMap<>();
params.put(Parameters.CORRELATION_ID, "order-789");

Api.startMotoTransaction(amount, TransactionType.SALE, params, context);
```

**Supported transaction types:** `SALE`, `REFUND`, `PREAUTH`

**Response:** `TRANSACTION_RESULT_ACTION` or `TRANSACTION_CANCELLED_ACTION`

> **Note:**
>
> MOTO must be enabled in the merchant configuration (`moto = true`).

### APM transactions (Alternative Payment Methods / Pay by Link)

APM transactions use QR codes, digital wallets, or other non-card payment methods.

```java

HashMap<String, String> params = new HashMap<>();
params.put(Parameters.CORRELATION_ID, "order-101");

Api.startApmTransaction(amount, params, context);
```

**Response:** `TRANSACTION_RESULT_ACTION` or `TRANSACTION_CANCELLED_ACTION`

> **Note:**
>
> APM must be enabled (`payByLink = true` in the `Config`). Contact Rapyd to configure APM for your terminal.

### Card check

Verifies that a card is readable and supported by the terminal without charging the customer. Internally initiates a zero-amount `PREAUTH`.

```java

HashMap<String, String> params = new HashMap<>();
params.put(Parameters.CORRELATION_ID, "check-001");

Api.startCardCheck(context, params);
```

**Response:** `TRANSACTION_RESULT_ACTION` — check `transactionResponse` for the card check outcome. Core also broadcasts `ACTION_CARD_DATA` during card check with raw card data.

```java

case Messages.ACTION_CARD_DATA: {
    String cardData = intent.getStringExtra(Messages.CARD_DATA);
    String uti      = intent.getStringExtra(Messages.TRANSACTION_UTI);
    break;
}
```

### Cancel a transaction

Cancels the active transaction. If no transaction is in progress this is a no-op.

```java

Api.cancelTransaction(context);
```

**Note:** Cancellation is not possible while EMV chip processing is active. If the cancel could not be applied, Core broadcasts `ACTION_CANCEL_TRANSACTION_FAILED`.

### Check if a transaction is in progress

```java

Api.checkIfTransactionInProgress(context);

// In your receiver:
case Messages.ACTION_GET_TRANSACTION_IN_PROGRESS_RESULT: {
    boolean inProgress = intent.getBooleanExtra(
        Messages.ACTION_GET_TRANSACTION_IN_PROGRESS_RESULT, false);
    break;
}
```
