Skip to main content
Payment links are URLs you share with customers so they can pay you without any checkout integration on their side. When a customer opens the link, they see a hosted payment page pre-filled with the amount and your business details. They choose their preferred payment method — M-Pesa, card, or bank transfer — and complete the payment. You can create payment links from the dashboard or programmatically through the API. Log in to app.kulmipay.com, navigate to Collections → Payment Links, and click New Link. Fill in the title, amount, and currency, then copy the generated URL to share with your customer. Send a POST request to /api/v1/payment/collection/pay-requests/ to create a payment link programmatically. Kulmi Pay sends an email to the customer with the payment URL and returns the link details in the response.
curl -X POST https://app.kulmipay.com/api/v1/payment/collection/pay-requests/ \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 2500.00,
    "currency": "KES",
    "email": "customer@example.com",
    "first_name": "John",
    "last_name": "Mwangi",
    "reason": "Invoice #INV-2024-001 for web design services",
    "card_tarrif": "BUSINESS-PAYS"
  }'

Request fields

FieldTypeRequiredDescription
amountnumberYesAmount to request, in the specified currency.
currencystringYesCurrency code: KES, USD, EUR, or GBP.
emailstringYesCustomer’s email address. Kulmi Pay sends the payment link here.
first_namestringYesCustomer’s first name, used in the email greeting.
last_namestringYesCustomer’s last name.
reasonstringYesDescription of what the payment is for, e.g. Invoice #001.
card_tarrifstringNoBUSINESS-PAYS (default) or CUSTOMER-PAYS.
autosend_remidernumberNoDays after which to send a reminder email. Options: 0 (none), 1, 2, 3, 7.

Success response

{
  "detail": {
    "request_id": "PR-XXXXXXXX",
    "checkout": {
      "url": "https://app.kulmipay.com/checkout/<id>/express/",
      "amount": "2500.00",
      "currency": "KES",
      "email": "customer@example.com"
    },
    "reason": "Invoice #INV-2024-001 for web design services",
    "sent_status": "PENDING",
    "created_at": "2024-01-15T10:30:00Z"
  }
}
The checkout.url in the response is the URL you can share with your customer. Kulmi Pay also emails this link automatically to the email address you provided. To list all active payment requests for your account, send a GET request to the same endpoint:
curl https://app.kulmipay.com/api/v1/payment/collection/pay-requests/ \
  -H "Authorization: Bearer <token>"

Check a payment link’s status

Use the request_id from the creation response to look up a specific payment request:
curl https://app.kulmipay.com/api/v1/payment/collection/pay-requests/<request_id>/ \
  -H "Authorization: Bearer <token>"
The response includes a sent_status field that tracks the email delivery lifecycle: PENDINGSENTDELIVEREDOPENEDCLICKED. The checkout.paid field becomes true once the customer completes payment.