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 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
Save the uploaded customers GET
Step 2 of the bulk import. Persists the customers that were validated by importCustomers, identified by the correlationId returned there. Separating validation from the write keeps a partially inva…
List invoices GET
Lists your invoices, with pagination. Combine the filters to narrow the list down — for example paymentStatus=unpaid together with a date range to find everything still outstanding this month.