KashierDevelopersKashier Developers

Create invoice

curl -X POST "https://test-api.kashier.io/v2/paymentRequest" \  -H "Content-Type: application/json" \  -d '{    "paymentType": "simple",    "totalAmount": 100,    "currency": "EGP",    "description": "Invoice for consulting services",    "customerName": "Ahmed Hassan",    "email": "[email protected]",    "phoneNumber": "+201000000000",    "referenceId": "REF-001",    "isManualCapture": false  }'
{  "body": {    "paymentRequestId": "PR-XXXXXXXXXX",    "merchantId": "MID-XXXX-XXXX",    "paymentType": "simple",    "totalAmount": 100,    "currency": "EGP",    "description": "Invoice for consulting services",    "customerName": "Ahmed Hassan",    "email": "[email protected]",    "referenceId": "REF-001",    "state": "submitted",    "paymentStatus": "unpaid",    "isManualCapture": false,    "availableAmountForRefund": 0,    "creationDate": "2026-07-30 09:12:44.201000+00:00",    "dueDate": null,    "transactions": []  },  "message": "success"}

Creates an invoice (payment request). Kashier mints the invoice identifier for you — PR-… for a simple request, INV-… for a professional invoice, and ORD-… for an order — and returns a payment link you can send to the customer. The invoice starts unpaid; use Share invoice to deliver it, or send the link yourself.

Authorization

secretKey
Authorization<token>

Merchant secret key used to identify the merchant, obtained from Kashier's dashboard. Pass the raw secret key value in the Authorization header (NOT a "Bearer" token).

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

The invoice to create. paymentType decides the shape — simple is a bare amount to collect, professional adds line items and a due date, and order is an order link.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

POST
/v2/paymentRequest