> ## Documentation Index
> Fetch the complete documentation index at: https://docs.monieswitch.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Cards

> Card payment channel details and integration guide.

Card payments enable your customers to pay using their debit or credit cards, providing a fast and familiar checkout experience. Monieswitch supports all major card networks, ensuring broad coverage and secure processing.

## Key Features

* **Wide Card Network Support:** Accepts Visa, Mastercard, Verve, and other major card brands.
* **Secure Transactions:** PCI DSS compliant processing with advanced fraud detection.
* **Instant Payment Confirmation:** Receive real-time updates on payment status.
* **International Payments:** Accept payments from both local and international cards.

## How It Works

1. **Customer selects card payment** at checkout.
2. **Customer enters card details** on the secure payment form provided by Monieswitch.
3. **Monieswitch processes the payment** and performs necessary security checks (including 3D Secure if required).
4. **Payment is authorized or declined** instantly.
5. **You receive a webhook notification** with the payment result for order fulfillment.

## Integration Steps

1. **Initiate a Payment Request**

   Send a payment initiation request to the Monieswitch API specifying `card` as the payment channel.

   ```json theme={"system"}
   {
     "amount": 5000,
     "currency": "NGN",
     "customer": {
       "name": "Jane Doe",
       "email": "jane@example.com"
     },
     "channel": "card"
   }
   ```

2. **Redirect or Display Payment Form**

   Use the API response to redirect the customer to the Monieswitch hosted payment page or embed the payment form in your checkout flow.

3. **Handle Payment Confirmation**

   Listen for webhook notifications from Monieswitch to confirm when the payment is successful.

   ```js Example webhook handler (Node.js/Express) theme={"system"}
   app.post("/webhook", (req, res) => {
     const event = req.body;
     if (event.type === "payment.success" && event.data.channel === "card") {
       // Fulfill the order
     }
     res.sendStatus(200);
   });
   ```

## Best Practices

* Always use HTTPS and ensure your integration is PCI DSS compliant.
* Verify payment status via webhook before fulfilling orders.
* Provide clear error messages for declined or failed transactions.
* Test your integration in the sandbox environment before going live.

<Snippet file="api-reference-link.mdx" />
