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

# Create an order

> Create a payment order and get the payment options available for it

Creates an order and returns it along with the payment methods available for its currency. This
is the first of the [three operations](/index#the-three-operations) — nothing is charged yet.

## Endpoint

```
POST https://api-v4.reeple.ai/charge/order/create
```

Authenticate with your **public key**. See [Authentication](/api-reference/authentication).

## Request body

The body is a single [encrypted](/encryption) field:

| Field  | Type   | Description                                              |
| ------ | ------ | -------------------------------------------------------- |
| `data` | String | **Required.** The RSA-encrypted payload described below. |

## Payload (before encryption)

| Field         | Type   | Description                                                                              |
| ------------- | ------ | ---------------------------------------------------------------------------------------- |
| `customer`    | Object | **Required.** See [Customer object](#customer-object).                                   |
| `order`       | Object | **Required.** See [Order object](#order-object).                                         |
| `payment`     | Object | **Required.** See [Payment object](#payment-object).                                     |
| `paymentMeta` | Object | Optional. See [Payment meta object](#payment-meta-object). Forwarded to fraud detection. |

### Customer object

| Field       | Type   | Description                                                   |
| ----------- | ------ | ------------------------------------------------------------- |
| `firstname` | String | **Required.**                                                 |
| `lastname`  | String | **Required.**                                                 |
| `email`     | String | **Required.** Receipts and notifications go here.             |
| `mobile`    | String | **Required.** In international format, e.g. `+2348158200000`. |
| `country`   | String | **Required.** Two-letter country code, e.g. `NG`.             |

### Order object

| Field         | Type   | Description                                                                                   |
| ------------- | ------ | --------------------------------------------------------------------------------------------- |
| `amount`      | Number | **Required.** In the currency's standard unit — see [Amount units](/currencies#amount-units). |
| `reference`   | String | **Required.** Your own unique reference for this order.                                       |
| `currency`    | String | **Required.** See [Supported currencies](/currencies).                                        |
| `description` | String | **Required.** Shown to the customer; returned as `narration`.                                 |

### Payment object

| Field         | Type   | Description                                                                                                           |
| ------------- | ------ | --------------------------------------------------------------------------------------------------------------------- |
| `RedirectUrl` | String | **Required.** Where the customer is sent after paying. See [Callbacks and verification](/callbacks-and-verification). |

### Payment meta object

| Field       | Type   | Description                                  |
| ----------- | ------ | -------------------------------------------- |
| `ipAddress` | String | Optional. The customer's IP address.         |
| `UserAgent` | String | Optional. The customer's browser user agent. |

## Payload example

```json theme={null}
{
  "customer": {
    "firstname": "Ada",
    "lastname": "Lovelace",
    "mobile": "+2348158200000",
    "country": "NG",
    "email": "ada@example.com"
  },
  "order": {
    "amount": 500,
    "reference": "order-2026-0001",
    "description": "Order #0001",
    "currency": "NGN"
  },
  "payment": {
    "RedirectUrl": "https://yourdomain.com/payment/callback"
  },
  "paymentMeta": {
    "ipAddress": "127.0.0.1",
    "UserAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)"
  }
}
```

## Request example

```bash theme={null}
curl -X POST https://api-v4.reeple.ai/charge/order/create \
  -H "Content-Type: application/json" \
  -H "api-key: YOUR_PUBLIC_KEY" \
  -d '{ "data": "YOUR_ENCRYPTED_PAYLOAD" }'
```

## Response

```json theme={null}
{
  "data": {
    "order": {
      "reference": "order-2026-0001",
      "processorReference": "RPL-A3B844129BE911F1ADC6026C64B362BB",
      "orderPaymentReference": null,
      "amount": 500,
      "fee": 0,
      "feeRate": null,
      "statusId": 1,
      "status": "Initiated",
      "currency": "NGN",
      "narration": "Order #0001"
    },
    "subsidiary": {
      "id": 1,
      "name": "Your Business",
      "country": "NG",
      "supportEmail": "support@yourdomain.com",
      "customization": []
    },
    "customer": {
      "email": "ada@example.com",
      "firstName": "Ada",
      "lastName": "Lovelace",
      "mobile": "+2348158200000",
      "country": "NG"
    },
    "payment": {
      "code": null,
      "source": null,
      "selectedOption": null,
      "accountNumber": null,
      "bankProviderName": null
    },
    "otherPaymentOptions": [
      { "code": "C", "name": "Card Payment", "currency": "NGN" },
      { "code": "BANK-TRANSFER", "name": "Pay With Bank Transfer", "currency": "NGN" }
    ],
    "savedCards": [],
    "subsidiaryOrderSummary": {
      "orderName": "Your Business Order order-2026-0001",
      "totalAmount": 500,
      "reference": "order-2026-0001",
      "currency": "NGN",
      "orderItems": [{ "name": "Summary", "amount": 500 }]
    }
  },
  "status": "success",
  "statusCode": "01",
  "message": "Created order successfully"
}
```

### Response fields

| Field                    | Description                                                                      |
| ------------------------ | -------------------------------------------------------------------------------- |
| `order`                  | The created order. `statusId: 1` / `status: "Initiated"` — nothing charged yet.  |
| `otherPaymentOptions`    | The methods available for this currency. Render these as the customer's choices. |
| `savedCards`             | Cards previously saved for this customer, chargeable via `savedCardId`.          |
| `subsidiary`             | Your business details, for display on a checkout page.                           |
| `subsidiaryOrderSummary` | A pre-formatted order summary you can render directly.                           |

<Warning>
  `otherPaymentOptions` varies by currency and by what's enabled for your account — a USD order
  typically offers card only. Never hard-code the list.
</Warning>

<Tip>
  `fee` is `0` at creation because no method has been chosen yet. Use
  [Get order fee](/api-reference/orders/get-order-fee) to quote the real total for a given
  method before the customer commits.
</Tip>

## Next steps

<Card title="Pay an order" href="/api-reference/orders/pay-order">
  Charge the order with the method the customer picked.
</Card>
