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

# Payment Initialization

> Payment initialization is the first step in processing any payment through the Juice API. This guide covers the core concepts, supported payment methods, and common parameters required for initializing payments.

export const payment_method_0 = "bank_account"

## Overview

Before capturing a payment, you must first initialize a payment session with customer and transaction details. The initialization process:

1. Validates the payment request
2. Creates a session identifier
3. Sets up the appropriate payment flow
4. Returns payment session details

## Supported Payment Methods

<CardGroup cols={3}>
  <Card title="Cards" icon="credit-card">
    Credit and Debit cards\[Visa & Mastercard]
  </Card>

  <Card title="Bank Transfers" icon="building-columns">
    Direct bank transfers.

    * NGN bank accounts.
    * International wires.
    * ACH transfers.
  </Card>

  <Card title="Stablecoins" icon="coins">
    Cryptocurrency Stablecoins

    *
  </Card>

  <Card title="Binance Pay" icon="wallet">
    Direct Binance integration.

    * Multiple currencies.
    * Instant settlement.
  </Card>

  <Card title="Interac e-Transfer" icon="money-bill-transfer">
    Canadian bank transfers via Interac.

    * Email money transfer.
    * Instant deposits.
  </Card>

  <Card title="Mobile Money" icon="mobile-screen">
    **Coming soon!**

    * Multiple providers.
    * Regional support.
  </Card>
</CardGroup>

## Universal Parameters

These parameters are required for all payment initializations regardless of the payment method:

<ParamField body="amount" type="integer" required>
  Payment amount in minor units (e.g., cents, kobo)

  * Minimum: 100

  * Must be positive integer

  * Example: 10000 = \$100.00 USD
</ParamField>

<ParamField body="currency" type="string" required>
  ISO currency code

  * Supported: NGN, USD, CAD, USDT, USDC

  * Must match payment method

  * Example: "USD"
</ParamField>

<ParamField body="customer" type="object" required>
  Customer information object

  <Expandable title="Customer Fields">
    <ParamField body="email" type="string" required>
      Valid email address
    </ParamField>

    <ParamField body="first_name" type="string" required>
      Customer's first name
    </ParamField>

    <ParamField body="last_name" type="string" required>
      Customer's last name
    </ParamField>

    <ParamField body="phone_number" type="string" required>
      Phone number in E.164 format
    </ParamField>

    <ParamField body="billing_address" type="object" required>
      Billing address details
    </ParamField>

    <ParamField body="type" type="string" required>
      Must be of type `business` or `individual`
    </ParamField>

    <ParamField body="ip_address" type="string" required>
      Customer's ip address

      * Must be ipv4 e.g 127.0.0.1
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="description" type="string" required>
  Payment description

  * Maximum length: 200 characters

  * Will appear on statements
</ParamField>

<ParamField body="reference" type="string" required>
  Unique transaction reference

  * Must be unique per transaction

  * Maximum length: 50 characters
</ParamField>

<ParamField body="payment_method" type="object" required>
  Payment method details

  <ParamField body="type" type="string" required>
    * Must be of type: "{payment_method_0}"
  </ParamField>
</ParamField>

<ParamField body="order" type="object" required>
  Order information object

  <Expandable title="Order Fields">
    <ParamField body="identifier" type="string" required>
      Unique identifier
    </ParamField>

    <ParamField body="items" type="object[]" required>
      <Expandable title="Items Fields">
        <ParamField type="string" body="name" required />

        <ParamField type="string" body="type" required>
          type must be one of digital,physical
        </ParamField>
      </Expandable>
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="metadata" type="object">
  Optional additional data

  * Nested objects allowed
</ParamField>

## Required Headers

| Header        | Description          | Example            |
| ------------- | -------------------- | ------------------ |
| Authorization | Your API key         | `skabc123...`      |
| Content-Type  | Request content type | `application/json` |

<Warning>
  Never expose your API key in client-side code. Always make API calls from your server.
</Warning>

## Basic Flow

<Steps>
  <Step title="Initialize Payment">
    Create payment session with customer and transaction details
  </Step>

  <Step title="Handle Authentication">
    Complete any required authentication steps (3DS, OTP, etc.)
  </Step>

  <Step title="Capture Payment">
    Finalize the payment after successful authentication
  </Step>

  <Step title="Handle Response">
    Process success/failure and update your system
  </Step>
</Steps>

## Method-Specific Guides

For detailed implementation steps for each payment method, see:

* [Card Payments](/payments/initialize-payment/cards)
* [Bank Transfers](/payments/initialize-payment/bank-transfers)
* [Stablecoins](/payments/initialize-payment/stablecoins-transfer)
* [Binance Pay](/payments/initialize-payment/binance-pay)
* [Interac e-Transfer](/payments/initialize-payment/interac-e-transfer)

<Card title="Need Help?">
  - See our

    [API Reference](/api-reference/overview)
  - Contact

    [support@juicyway.com](mailto:support@juicyway.com)
</Card>
