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.

ValueDescriptionWhen to use
SupportedThe issuer can approve a partial amount. Your application collects the remaining balance using another payment method.Use when your application supports split-tender payments.
NotSupportedThe 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

PracticeDescription
Use swipe only as a fallbackSwipe 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 posDataEach posData field must match the actual transaction context. Incorrect values cause interchange downgrades or network declines.
Handle partial approvals explicitlyIf your application supports split-tender payments, set partialApprovalSupport to "Supported" and handle partial approval responses in your integration logic.


.readme-logo { display: none !important; }