Skip to main content

Overview

The removeCard() method removes an enrolled card. The card will no longer be available for new intents. The card can be re-enrolled later via collectPAN().
Existing active intents using this card are not automatically cancelled — delete them explicitly if needed.

Method Signature

prava.removeCard(params: { cardId: string }): Promise<RemoveCardResult>

Parameters

cardId
string
required
Card ID to remove (from collectPAN() or listCards())

Return Value

result
RemoveCardResult

Example

import { PravaSDK } from '@prava-sdk/core';

function CardItem({ card, onRemoved }) {
  const prava = new PravaSDK({ publishableKey: 'pk_live_xxx' });

  async function handleRemove() {
    if (!confirm(`Remove card ending in ${card.last4}?`)) return;

    try {
      await prava.removeCard({ cardId: card.cardId });
      onRemoved(card.cardId);
    } catch (error) {
      alert(`Failed to remove card: ${error.message}`);
    }
  }

  return (
    <div>
      <span>{card.brand} •••• {card.last4}</span>
      <button onClick={handleRemove}>Remove</button>
    </div>
  );
}

Use Cases

Card Management

const cards = await prava.listCards();

async function handleRemove(cardId: string) {
  await prava.removeCard({ cardId });
  // Refresh the card list
  const updated = await prava.listCards();
  setCards(updated);
}

Remove and Re-enroll

// Remove old card
await prava.removeCard({ cardId: 'enr_old123' });

// Enroll new card
const session = await createSessionOnServer();
const newCard = await prava.collectPAN({
  sessionToken: session.session_token,
  iframeUrl: session.iframe_url,
  container: '#card-form',
});

Error Handling

CodeCauseResolution
CARD_NOT_FOUNDCard ID doesn’t exist or already removedRefresh card list
Best practice: Always show a confirmation dialog before calling removeCard() to prevent accidental deletions.

Next Steps