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

# Alternative Payment Methods

> Process alternative payments through Host-to-Host API including bank transfers, digital wallets, and BNPL options

# Alternative Payment Methods

Process alternative payment methods through the Host-to-Host API without requiring card details. This includes bank transfers, ACH payments, digital wallets, and buy-now-pay-later options.

## Overview

Alternative payment methods provide:

* **No Card Required**: Process payments without credit/debit card details
* **Simplified Flow**: Reduced customer data requirements
* **Regional Support**: Local payment methods for different markets
* **Lower Fees**: Often lower processing fees than card payments
* **Bank Integration**: Direct bank account payments

## Required Parameters

### Customer Information

| Parameter     | Description               | Required | Example                                       |
| ------------- | ------------------------- | -------- | --------------------------------------------- |
| `name`        | Customer full name        | YES      | "Jane Smith"                                  |
| `email`       | Customer email address    | YES      | "[jane@example.com](mailto:jane@example.com)" |
| `phoneNumber` | Customer phone number     | YES      | "+1234567890"                                 |
| `address`     | Customer address          | YES      | "456 Oak Avenue"                              |
| `city`        | Customer city             | YES      | "Los Angeles"                                 |
| `state`       | State or province         | YES      | "CA"                                          |
| `postalCode`  | ZIP or postal code        | YES      | "90210"                                       |
| `country`     | Country code (ISO 3166-1) | YES      | "US"                                          |

### Transaction Details

| Parameter      | Description        | Required | Example             |
| -------------- | ------------------ | -------- | ------------------- |
| `amount`       | Payment amount     | YES      | 150.00              |
| `unit`         | Currency code      | YES      | "USD"               |
| `originDomain` | Merchant domain    | YES      | "store.example.com" |
| `referenceId`  | Merchant reference | NO       | "INV-67890"         |

## Complete Request Example

```json theme={null}
{
  "name": "Jane Smith",
  "email": "jane@example.com",
  "phoneNumber": "+1234567890",
  "address": "456 Oak Avenue",
  "city": "Los Angeles",
  "state": "CA",
  "postalCode": "90210",
  "country": "US",
  "amount": 150.00,
  "unit": "USD",
  "originDomain": "store.example.com",
  "referenceId": "INV-67890",
  "notifyUrl": "https://api.example.com/webhook",
  "successUrl": "https://store.example.com/success",
  "failureUrl": "https://store.example.com/failure"
}
```

## Implementation Example

```javascript theme={null}
async function processAlternativePayment(paymentData) {
  const apiEndpoint = process.env.Caibo_H2H_ENDPOINT;
  const apiKey = process.env.Caibo_API_KEY;
  
  try {
    const response = await fetch(apiEndpoint, {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
        'X-API-Key': apiKey
      },
      body: JSON.stringify({
        name: paymentData.customerName,
        email: paymentData.customerEmail,
        phoneNumber: paymentData.customerPhone,
        address: paymentData.customerAddress.street,
        city: paymentData.customerAddress.city,
        state: paymentData.customerAddress.state,
        postalCode: paymentData.customerAddress.postalCode,
        country: paymentData.customerAddress.country,
        amount: paymentData.amount,
        unit: paymentData.currency,
        originDomain: paymentData.merchantDomain,
        referenceId: paymentData.invoiceId,
        notifyUrl: paymentData.webhookUrl,
        successUrl: paymentData.successUrl,
        failureUrl: paymentData.failureUrl
      })
    });
    
    const result = await response.json();
    
    if (response.ok) {
      return {
        success: true,
        paymentRequestId: result.paymentRequestId,
        redirectUrl: result.redirectUrl,
        status: result.status
      };
    } else {
      return {
        success: false,
        error: result.error,
        message: result.message
      };
    }
  } catch (error) {
    return {
      success: false,
      error: 'NETWORK_ERROR',
      message: error.message
    };
  }
}
```

## Supported Methods

### Bank Transfers

* **ACH Payments**: Direct bank account transfers
* **Wire Transfers**: International bank transfers
* **SEPA**: European bank transfers
* **Faster Payments**: UK instant bank transfers

### Digital Wallets

* **PayPal**: PayPal account payments
* **Skrill**: Skrill wallet payments
* **Neteller**: Neteller wallet payments
* **Regional Wallets**: Local digital wallet solutions

### Buy Now, Pay Later

* **Klarna**: Klarna payment plans
* **Afterpay**: Afterpay installments
* **Affirm**: Affirm financing
* **Sezzle**: Sezzle payment plans

## Error Handling

### Common Error Codes

* **INVALID\_BANK\_ACCOUNT**: Invalid bank account details
* **INSUFFICIENT\_FUNDS**: Insufficient funds in account
* **BANK\_DECLINED**: Bank declined the transaction
* **PAYMENT\_METHOD\_UNAVAILABLE**: Selected method not available

## Next Steps

<Card title="UPI Payments" icon="mobile" href="/h2h/payments/upi">
  Learn about UPI payment integration
</Card>

<Card title="Payment Status" icon="chart-line" href="/ipg/payment-requests/payment-status">
  Track alternative payment status
</Card>
