Card Present (Swipe) Transactions
A Card Present (CP) swipe transaction lets you process payments by reading card data from the magnetic stripe on the cardholder's card. The cardholder physically swipes their card through a compatible magstripe reader at the point of sale.
Unlike EMV chip transactions that generate a unique cryptogram per payment, swipe transactions read static card data from the magnetic stripe. Use swipe only when chip or contactless entry is unavailable — it carries a higher fraud risk and typically results in higher interchange rates.
Common use cases include:
- Fallback Entry: EMV chip read fails and the terminal prompts a swipe as a fallback.
- Cards Without a Chip: The cardholder's card does not have an embedded chip and only supports magnetic stripe.
- Magstripe-Only Environments: The merchant's hardware supports magnetic stripe reading only.
How it Works
Swipe CP transactions require you to set cardPresent to true and populate the posData object with the correct swipe-specific values. Two configurations are supported depending on whether you intend to capture the payment immediately or at a later time.
Swipe Authorization (Preauthorization)
Use this configuration when performing an authorization-only transaction that will be captured later. Set authorizationIndicator to "Undefined" and transactionStatus to "Preauthorization".
{
"cardPresent": true,
"authorizationIndicator": "Undefined",
"posData": {
"cardholderPresence": "Present",
"deviceAttendance": "Attended",
"deviceInputCapability": "Swipe",
"deviceLocation": "OnPremise",
"panCaptureMethod": "Swipe",
"partialApprovalSupport": "Supported",
"transactionStatus": "Preauthorization"
}
}Swipe Sale
Use this configuration when the transaction is intended to be finalized immediately. Set authorizationIndicator to "Final" and transactionStatus to "Normal".
{
"cardPresent": true,
"authorizationIndicator": "Final",
"posData": {
"cardholderPresence": "Present",
"deviceAttendance": "Attended",
"deviceInputCapability": "Swipe",
"deviceLocation": "OnPremise",
"panCaptureMethod": "Swipe",
"partialApprovalSupport": "Supported",
"transactionStatus": "Normal"
}
}Understanding Partial Approvals
The partialApprovalSupport field determines whether the issuing bank can approve a portion of the requested amount when the card has insufficient funds for the full transaction.
| Value | Description | When to use |
|---|---|---|
Supported | The issuer can approve a partial amount. Your application collects the remaining balance using another payment method. | Use when your application supports split-tender payments. |
NotSupported | The transaction is declined if insufficient funds are available. No partial approval is returned. | Use when your application does not support multiple payment methods for a single transaction. |
Example: Purchase amount is $100. Available funds on the card are $60. The issuer approves $60, and the merchant collects the remaining $40 using another payment method.
Best Practices
| Practice | Description |
|---|---|
| Use swipe only as a fallback | Swipe carries a higher fraud risk and higher interchange rates than chip or contactless. Always prefer EMV chip or NFC contactless when the card and hardware support it. |
Set panCaptureMethod to "Swipe" | Passing an incorrect capture method will result in interchange downgrade or network decline. |
Accurately reflect the transaction environment in posData | Each posData field must match the actual transaction context. Incorrect values cause interchange downgrades or network declines. |
| Handle partial approvals explicitly | If your application supports split-tender payments, set partialApprovalSupport to "Supported" and handle partial approval responses in your integration logic. |