1. Payments
  • Jokoor API Documentation
  • Getting started
    • Authentication
    • Pagination
    • Quick Start
    • Error Handling
    • Response Format
  • Payments
    • Payment Links
    • Checkouts
    • Payment Status
  • SMS
    • SMS Templates
    • Resending SMS Messages
    • Message Segments
    • SMS Contact Groups
    • SMS Contacts
    • SMS Campaigns
    • Sending SMS Messages
  • Billing
    • Invoices
    • Invoice Payments (Offline/Manual Recording)
    • Receipts
    • Subscriptions
  • Resources
    • Donations
    • Customers
    • Products
    • Transactions
    • Refunds
  • Payouts
    • Payout Requests
    • Bank Accounts
    • Recipient Payouts
    • Payout Recipients
    • Payout Reversals
    • Payout Balance
  • Webhooks
    • Webhook Events
    • Webhook Endpoints
  • APIs
    • Health
      • Health check
    • SMS
      • Send SMS message
      • List SMS messages
      • Get SMS message details
      • Send a draft SMS message
      • Resend failed SMS
      • Batch resend failed messages
    • SMS Templates
      • Create SMS template
      • List SMS templates
      • Get SMS template
      • Update SMS template
      • Delete SMS template
    • SMS Contacts
      • Create contact
      • List contacts
      • Get contact
      • Update contact
      • Delete contact
    • SMS Contact Groups
      • Create contact group
      • List contact groups
      • Get contact group
      • Update contact group
      • Delete contact group
      • Add contacts to group
      • Remove contacts from group
    • SMS Campaigns
      • Create SMS campaign
      • List SMS campaigns
      • Get SMS campaign
      • Update SMS campaign
      • Delete SMS campaign
      • Send SMS campaign
      • Send draft SMS campaign
      • Send campaign asynchronously
      • Get campaign messages
      • Get campaign statistics
      • Resend failed campaign messages
    • SMS Analytics
      • Get segment analytics
      • Preview message segments
    • Checkouts
      • Create checkout session
      • Get checkout session
      • Cancel checkout
    • Payment Links
      • Create payment link
      • List payment links
      • Get payment link
      • Update payment link
      • Delete payment link
    • Invoices
      • Create invoice
      • List invoices
      • Get invoice
      • Update invoice
      • Cancel invoice
      • Finalize draft invoice
      • Send invoice via email
      • Download invoice PDF
      • Record invoice payment
      • List invoice payments
      • Get invoice receipts
    • Receipts
      • List receipts
      • Get receipt by ID
      • Get receipt by number
      • Download receipt PDF
    • Transactions
      • List transactions
      • Get transaction
    • Refunds
      • Refund transaction
      • List refunds
      • Get refund
    • Customers
      • Create or retrieve customer
      • List customers
      • Get customer
      • Update customer
      • Delete customer
    • Products
      • Create product
      • List products
      • Get product
      • Update product
      • Delete product
    • Donations
      • Create donation campaign
      • List donation campaigns
      • Get donation campaign
      • Update donation campaign
      • Delete donation campaign
    • Subscriptions
      • Create subscription
      • List subscriptions
      • Get subscription
      • Update subscription
      • Cancel subscription
      • List subscription invoices
      • Trigger subscription processing
    • Payouts
      • Get payout balance
      • List bank accounts
      • Create payout request
      • List payout requests
      • Get payout request
      • Cancel payout request
    • Payout Recipients
      • Create payout recipient
      • List payout recipients
      • Get payout recipient
      • Update payout recipient
      • Delete payout recipient
      • Send payout to recipient
      • List recipient payouts
      • Get recipient payout
      • Reverse or cancel recipient payout
    • Webhooks
      • Create webhook endpoint
      • List webhook endpoints
      • Get webhook endpoint
      • Update webhook endpoint
      • Delete webhook endpoint
      • Test webhook endpoint
    • Webhook Events
      • List webhook events
      • Get webhook event
      • Retry webhook event
  • Schemas
    • Schemas
      • ErrorResponse
      • HealthResponse
      • SendSMSRequest
      • SMSMessageResponse
      • SMSMessageListResponse
      • BatchResendResponse
      • SMSDashboardResponse
      • SMSPlansListResponse
      • CreateSMSTemplateRequest
      • UpdateSMSTemplateRequest
      • SMSTemplateResponse
      • SMSTemplateListResponse
      • CreateSMSContactRequest
      • UpdateSMSContactRequest
      • SMSContactResponse
      • SMSContactListResponse
      • CreateSMSContactGroupRequest
      • UpdateSMSContactGroupRequest
      • SMSContactGroupResponse
      • SMSContactGroupListResponse
      • CreateSenderIDRequest
      • UpdateSenderIDRequest
      • SenderIDResponse
      • SenderIDListResponse
      • CreateSMSCampaignRequest
      • UpdateSMSCampaignRequest
      • SMSCampaignResponse
      • SMSCampaignListResponse
      • CreateCheckoutRequest
      • CheckoutResponse
      • InitializePaymentRequest
      • InitializePaymentResponse
      • PaymentStatusResponse
      • PaymentSessionResponse
      • CreatePaymentLinkRequest
      • UpdatePaymentLinkRequest
      • PaymentLinkResponse
      • PaymentLinkListResponse
      • CreateInvoiceRequest
      • UpdateInvoiceRequest
      • RecordInvoicePaymentRequest
      • InvoiceResponse
      • InvoiceListResponse
      • InvoicePaymentListResponse
      • InvoiceReceiptInfo
      • Receipt
      • ListReceiptsResponse
      • CreateSubscriptionRequest
      • SubscriptionResponse
      • SubscriptionListResponse
      • UpdateSubscriptionRequest
      • TransactionResponse
      • TransactionListResponse
      • RefundResponse
      • RefundListResponse
      • CreateCustomerRequest
      • UpdateCustomerRequest
      • CustomerResponse
      • CustomerListResponse
      • CreateProductRequest
      • UpdateProductRequest
      • ProductResponse
      • ProductListResponse
      • CreateDonationCampaignRequest
      • UpdateDonationCampaignRequest
      • DonationCampaignResponse
      • DonationCampaignListResponse
      • PayoutBalanceResponse
      • CreateBankAccountRequest
      • BankAccountResponse
      • CreatePayoutRequest
      • PayoutRequestResponse
      • PayoutRequestListResponse
      • CreatePayoutRecipientRequest
      • UpdatePayoutRecipientRequest
      • PayoutRecipientResponse
      • PayoutRecipientListResponse
      • SendRecipientPayoutRequest
      • RecipientPayoutResponse
      • RecipientPayoutListResponse
      • CreateWebhookEndpointRequest
      • UpdateWebhookEndpointRequest
      • WebhookEndpointResponse
      • WebhookEndpointListResponse
      • WebhookEventResponse
      • WebhookEventListResponse
  1. Payments

Checkouts

Checkouts#

Direct payment checkout sessions that support both hosted pages and custom integrations.

Create Checkout#

Create a checkout session for accepting payments.
Endpoint: POST /v1/checkouts
Authentication: Required
Request Body:
FieldTypeRequiredDescription
amountstringNo*Amount in decimal format (e.g., "100.00"). Optional if items provided.
currencystringNoCurrency code (default: "GMD")
itemsarrayNoItemized line items (if provided, amount is calculated from items)
items[].product_idstringNoProduct ID (optional)
items[].descriptionstringNoItem description
items[].quantityintegerYesItem quantity
items[].unit_pricestringNoUnit price per item
payment_method_typesarrayNoRestrict to specific payment methods (e.g., ["wave", "card"])
automatic_payment_methodsbooleanNoAuto-enable payment methods (default: true)
payment_methodstringNoPayment method to initialize with (card, wave, afrimoney, qmoney). When provided, checkout is ready immediately - no separate initialization needed.
customer_idstringNoLink to existing customer
customer_phonestringNoCustomer phone number (prefill)
customer_emailstringNoCustomer email address (prefill)
customer_namestringNoCustomer full name (prefill)
expires_inintegerNoSession expiration in seconds (60-86400, default: 86400)
metadataobjectNoCustom metadata
descriptionstringNoCheckout description
referencestringNoExternal reference ID
idempotency_keystringNoIdempotency key to prevent duplicate checkouts
success_urlstringNoURL to redirect on successful payment
failure_urlstringNoURL to redirect on failed payment
*Either amount or items required
Example:
HTTP
TypeScript
Python
Success Response (201):
{
  "data": {
    "id": "cs_abc123",
    "amount": "100.00",
    "currency": "GMD",
    "status": "pending",
    "payment_url": "https://pay.jokoor.com/checkout/cs_abc123",
    "available_payment_methods": ["wave", "afrimoney", "card"],
    "automatic_payment_methods": true,
    "customer_id": null,
    "customer_phone": "",
    "customer_email": null,
    "customer_name": null,
    "expires_at": "2025-11-16T10:30:00Z",
    "description": "Service payment",
    "reference": null,
    "items": null,
    "metadata": {},
    "livemode": false,
    "transaction": null,
    "created_at": "2025-11-15T10:30:00Z"
  }
}

How Checkouts Work#

Create a checkout session, redirect customer to payment_url, and receive payment confirmation via webhook or status check.

Without payment_method - Less Control, More Flexibility#

When you create a checkout without payment_method, the customer chooses the payment method on the hosted payment page.
Control what methods are available:
TypeScript
Python
Best for:
You want customer to choose their preferred method
Simple integration with hosted payment page
All-in-one payment link (share the URL with customer)

With payment_method - More Control, Direct Flow#

When you create a checkout with payment_method specified, you get a payment URL ready for that specific method immediately.
No customer choice - direct to payment:
TypeScript
Python
Supported methods:
wave - Wave Mobile Money
card - Credit/debit cards with custom form
afrimoney - Afrimoney Mobile Money
Best for:
You have "Pay with Wave" / "Pay with Card" buttons
You know the payment method upfront
Building custom payment flows
Faster checkout (one less step for customer)
Quick Comparison
FeatureWithout payment_methodWith payment_method
Control levelLess (customer chooses)More (you decide)
payment_urlPayment method selection pageReady for specific method
Customer experienceChoose method → PayPay immediately
Method restrictionspayment_method_types or dashboardSingle method only
Use caseFlexible, all-in-one payment linkDirect, "Pay with X" buttons

Get Checkout#

Get details of a specific checkout session.
Endpoint: GET /v1/checkouts/{id}
Authentication: Required
Example:
HTTP
TypeScript
Python
Success Response (200):
{
  "data": {
    "id": "cs_abc123",
    "amount": "100.00",
    "currency": "GMD",
    "status": "pending",
    "payment_url": "https://pay.jokoor.com/checkout/cs_abc123",
    "available_payment_methods": ["wave", "afrimoney", "card"],
    "automatic_payment_methods": true,
    "customer_id": null,
    "customer_phone": "",
    "customer_email": null,
    "customer_name": null,
    "expires_at": "2025-11-16T10:30:00Z",
    "description": "Service payment",
    "reference": null,
    "items": null,
    "metadata": {},
    "livemode": false,
    "transaction": null,
    "created_at": "2025-11-15T10:30:00Z"
  }
}

Cancel Checkout#

Cancel a pending checkout session.
Endpoint: POST /v1/checkouts/{id}/cancel
Authentication: Required
Example:
HTTP
TypeScript
Python
Success Response (200):
{
  "data": {
    "id": "chk_abc123",
    "status": "cancelled",
    "cancelled_at": "2024-01-15T11:00:00Z"
  }
}
Modified at 2025-11-30 04:14:27
Previous
Payment Links
Next
Payment Status
Built with