> ## 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.

# Banks

> Bank transfer payment channel details and integration guide.

Bank transfers allow your customers to pay directly from their bank accounts, providing a secure and familiar payment experience. Monieswitch supports instant bank transfers with real-time confirmation and settlement, making it a reliable option for both businesses and customers.

## Key Features

* **Instant Settlement:** Receive payments in real time as soon as the transfer is completed.
* **Wide Bank Coverage:** Supports transfers from all major banks.
* **Secure Processing:** All transactions are encrypted and comply with industry security standards.
* **Automated Reconciliation:** Easily match incoming payments to customer orders using unique references.

## How It Works

1. **Customer selects bank transfer** as the payment method at checkout.
2. **Monieswitch provides a unique account number** or payment reference for the transaction.
3. **Customer initiates the transfer** from their banking app or internet banking platform.
4. **Monieswitch detects the incoming payment** and confirms the transaction instantly.
5. **You receive a webhook notification** with the payment details for order fulfillment.

## Integration Steps

1. **Initiate a Payment Request**

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

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

2. **Display Payment Instructions**

   Use the API response to display the unique account number or payment reference to your customer.

3. **Handle Payment Confirmation**

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

   ```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 === "bank_transfer"
     ) {
       // Fulfill the order
     }
     res.sendStatus(200);
   });
   ```

## Best Practices

* Always verify payment status via webhook before fulfilling orders.
* Display clear instructions and references to avoid payment errors.
* Test your integration in the sandbox environment before going live.

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