1. Merchant Checkout
Kutanapay Merchant API
  • Getting Started
  • Authentication
  • Use the API in your application
  • Webhooks
    • Webhooks Events
  • Merchant Checkout
    • Create checkout
      POST
    • List checkouts
      GET
    • Get checkout
      GET
    • Cancel checkout
      POST
    • Create checkout button embed session
      POST
  • Webhook Events
    • Checkout created
    • Checkout paid
    • Customer says they paid
    • Checkout approved
    • Checkout rejected
    • Checkout failed
    • Checkout timed out
    • Checkout expired
    • Checkout refunded
    • A second collection arrived
    • Test event
  • Schemas
    • RequestBodies
      • CheckoutEvent
    • DetailError
    • WebhookEnvelope
    • CheckoutEventData
  1. Merchant Checkout

Create checkout

POST
/api/v1/merchants/checkouts
Create a hosted checkout and return a checkout_url. Fulfil the order on checkout.paid, which means the funds are confirmed. A bank-transfer customer click emits checkout.payment_claimed first and is not proof of payment. expires_in_minutes accepts 30, 60, 180, 1440, 4320, or 10080. Omit it for 24 hours. The merchant needs an active wallet in currency_code. Omit customer_phone and the customer enters it. Send customer_phone with customer_phone_editable false to lock that number.

Request

Header Params

Body Params application/jsonRequired

Examples

Responses

🟢200
application/json
Successful Response
Bodyapplication/json

🟠422
Request Request Example
Shell
JavaScript
Java
Swift
curl --location '/api/v1/merchants/checkouts' \
--header 'x-api-key: mk_a8Kp2mN9xQv7sL4wR1yT6uH3jF0cB5dE8gZ12' \
--header 'Content-Type: application/json' \
--data-raw '{
    "customer_email": "user@example.com",
    "customer_name": "string",
    "customer_phone": "string",
    "customer_phone_editable": true,
    "amount": 1,
    "currency_code": "GHS",
    "description": "string",
    "expires_in_minutes": 30,
    "meta_data": {
        "property1": "string",
        "property2": "string"
    }
}'
Response Response Example
200 - Success
{
    "data": {
        "id": "c4e8b1a2-9f3d-4e7a-b6c5-1d2e3f4a5b6c",
        "payment_reference": "PAY-K7M2Q9X4",
        "checkout_url": "https://app.kutanaafrica.com/public/checkouts/PAY-K7M2Q9X4#token=9f3e2a1b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2",
        "amount": 150,
        "currency_code": "GHS",
        "status": "pending",
        "customer_email": "ama.mensah@acmecustomer.com",
        "customer_name": "Ama Mensah",
        "customer_phone": "+233241234567",
        "customer_phone_editable": false,
        "description": "Order #ORD-7842",
        "expires_at": "2026-03-27T12:30:00",
        "paid_at": null,
        "created_at": "2026-03-26T12:30:00"
    },
    "message": "Checkout created",
    "status": "success"
}
Modified at 2026-10-03 13:17:29
Previous
Merchant Checkout
Next
List checkouts
Built with