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

# Payment methods

> The payment options available, and the payload each one expects

[Create an order](/api-reference/orders/create-order) returns `otherPaymentOptions` — the
methods available for that order's currency. Render those as the customer's choices, then send
the matching payload to [Pay an order](/api-reference/orders/pay-order).

## Available options

| `code`          | Name                   | Payload page                                                               |
| --------------- | ---------------------- | -------------------------------------------------------------------------- |
| `C`             | Card Payment           | [Pay with a card](/api-reference/payments/pay-with-card)                   |
| `BANK-TRANSFER` | Pay With Bank Transfer | [Pay with a bank transfer](/api-reference/payments/pay-with-bank-transfer) |
| `USSD`          | USSD                   | [Pay with USSD](/api-reference/payments/pay-with-ussd)                     |

<Warning>
  Do not hard-code this list. Availability depends on the order's currency and on what is
  enabled for your account — always read `otherPaymentOptions` from the create-order response.
  An NGN order typically offers card and bank transfer; a USD order typically offers card only.
</Warning>

<Note>
  The `code` values returned in `otherPaymentOptions` are uppercase (`BANK-TRANSFER`), while the
  `paymentoption` field in a pay-order payload is matched case-insensitively — both
  `bank-transfer` and `BANK-TRANSFER` are accepted. Card is `C` in both places.
</Note>

## Choosing a flow

|                           | Card             | Bank transfer     | USSD          |
| ------------------------- | ---------------- | ----------------- | ------------- |
| Customer leaves your page | Yes — 3-D Secure | No                | No            |
| Time to settle            | Seconds          | Minutes to hours  | Minutes       |
| You must display          | The redirect     | An account number | A dial string |
| Can be saved for reuse    | Yes              | No                | No            |

### Card

You collect the card details, encrypt them, and send them. The response carries a
`redirectUrl`; send the customer there to authenticate. Cards can be saved for later
one-click charges — see [Save a card](/api-reference/orders/save-card) and
[Tokenized charge](/api-reference/tokenized/tokenized-charge).

### Bank transfer

You send a bank code from [List banks](/api-reference/banks/list-banks). The response carries a
`recipientAccount` — a temporary account number the customer transfers to. Display it, then
poll for status; the order settles when the bank notifies Reeple.

### USSD

The customer dials a string on their phone to authorise the payment.

<Note>
  USSD is listed as a supported method but the provider has not published a pay-order payload
  for it, and `GET /charge/banks?paymentmethod=ussd` currently returns an empty list on sandbox.
  Confirm availability with Reeple before building against it. See
  [Pay with USSD](/api-reference/payments/pay-with-ussd).
</Note>

## What every payload has in common

Whatever the method, the encrypted pay-order payload always carries these three fields:

| Field           | Type   | Description                                                   |
| --------------- | ------ | ------------------------------------------------------------- |
| `reference`     | String | **Required.** The order reference you chose at create time.   |
| `paymentoption` | String | **Required.** The `code` of the chosen method.                |
| `country`       | String | Optional. Two-letter country code for the payment instrument. |

Everything else is method-specific.
