Create Invoice
https://api.nomod.com/v1/invoicesGenerate Invoice.
curl -X POST 'https://api.nomod.com/v1/invoices' \
-H 'X-API-KEY: $NOMOD_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"currency": "string",
"items": [
{
"name": "string",
"amount": "0.00",
"quantity": 1
}
],
"discount_percentage": 0,
"customer": "00000000-0000-0000-0000-000000000000",
"invoice_number": "string",
"title": "string",
"note": "string",
"due_date": "2026-01-01",
"service_date": "2026-01-01",
"custom_fields": [
{
"name": "string"
}
],
"allow_tabby": false,
"allow_tamara": false,
"allow_service_fee": false,
"success_url": "https://example.com",
"failure_url": "https://example.com"
}'Request body
currencystringrequiredISO 4217 currency code for the invoice. Supported: AED, USD, EUR, GBP and SAR. Retrieve codes from the /currencies endpoint.
Max length: 3
itemsarrayrequiredList of items associated with this invoice, including name and amount.
discount_percentageintegerDiscount percentage.
Max: 100
Min: 0
customerstring <uuid>requiredCustomer ID, Get the customer id from /customer api
invoice_numberstringInvoice number
Max length: 30
titlestringInvoice title
Max length: 50
notestringA note to describle what you're selling
Max length: 280
due_datestring <date>requiredInvoice due date
service_datestring <date>Invoice service date
custom_fieldsarrayCustom fields to add. Maximum of 5 allowed
allow_tabbybooleanWhether to enable Tabby payment method for the link. Default == true
allow_tamarabooleanWhether to enable Tamara payment method for the link. Default == true
allow_service_feebooleanWhether to enable service fee for the link. Default == true
success_urlstring <uri>URL to redirect to upon successful transaction completion
failure_urlstring <uri>URL to redirect to if the transaction fails.
Responses
payment_block_reasonstringread-onlyCurrency-only payment block reason. currency_unavailable means the link or invoice is open for payment but its currency is inactive. null means no currency block applies, including objects whose checkout status is already closed. It is not a guarantee that other payment eligibility checks pass. The existing status, currency and amounts are unchanged.
Enum: currency_unavailable, null
idstring <uuid>requiredread-onlyreference_idstringrequiredread-onlycreatedstring <date-time>requiredread-onlytitlestringrequiredread-onlycodestringrequiredread-onlyurlstring <uri>requiredread-onlyURL of the link or invoice,
amountstring <decimal>requiredread-onlycurrencystringrequiredstatusobjectrequiredread-onlydiscountstring <decimal>requiredread-onlyservice_feestring <decimal>taxstring <decimal>requiredread-onlyshipping_address_requiredbooleanrequiredread-onlyitemsarrayrequiredread-onlytaxesarraynotestringrequiredread-onlyexpirystring <date-time>requiredread-onlydiscount_percentagestring <decimal>service_fee_percentagestring <decimal>tip_percentagestring <decimal>userobjectrequiredtipstring <decimal>requiredread-onlyinvoice_numberstringrequiredread-onlyservice_datestring <date-time>requiredread-onlydue_datestring <date-time>requiredread-onlyinterval_countintegerrequiredread-onlystarts_atstring <date-time>requiredread-onlyends_atstring <date-time>requiredread-onlydue_daysintegerrequiredread-onlyemailstring <email>custom_fieldsarraysourceobjectrequiredread-onlysuccess_urlstring <uri>Redirects to the success URL after the invoice is completed.
failure_urlstring <uri>Redirects to the failure URL if the invoice payment fails.
payment_capture_sourcestringallow_tabbybooleanallow_tamarabooleanallow_service_feebooleanmax_allowed_charges_countintegerfilesarrayrequiredread-onlyremindersarrayrequiredread-onlyeventsarrayrequiredcustomerobjectrequiredread-onlyExample response
{
"payment_block_reason": "currency_unavailable",
"id": "00000000-0000-0000-0000-000000000000",
"reference_id": "string",
"created": "2026-01-01T00:00:00Z",
"title": "string",
"code": "string",
"url": "https://example.com",
"amount": "0.00",
"currency": "string",
"status": "paid",
"discount": "0.00",
"service_fee": "0.00",
"tax": "0.00",
"shipping_address_required": false,
"items": [
{
"id": "00000000-0000-0000-0000-000000000000",
"amount": "0.00",
"name": "string",
"total_amount": "0.00",
"quantity": 0,
"sku": "string"
}
],
"taxes": [
0
],
"note": "string",
"expiry": "2026-01-01T00:00:00Z",
"discount_percentage": "0.00",
"service_fee_percentage": "0.00",
"tip_percentage": "0.00",
"user": {
"id": "00000000-0000-0000-0000-000000000000",
"first_name": "string",
"last_name": "string"
},
"tip": "0.00",
"invoice_number": "string",
"service_date": "2026-01-01T00:00:00Z",
"due_date": "2026-01-01T00:00:00Z",
"interval_count": 0,
"starts_at": "2026-01-01T00:00:00Z",
"ends_at": "2026-01-01T00:00:00Z",
"due_days": 0,
"email": "string",
"custom_fields": [],
"source": "nomod_hosted",
"success_url": "https://example.com",
"failure_url": "https://example.com",
"payment_capture_source": "string",
"allow_tabby": false,
"allow_tamara": false,
"allow_service_fee": false,
"max_allowed_charges_count": 0,
"files": [
{
"id": "00000000-0000-0000-0000-000000000000",
"title": "string",
"content_type": "string",
"file": "https://example.com"
}
],
"reminders": [
{
"id": "00000000-0000-0000-0000-000000000000",
"days": 0,
"title": "string",
"invoice": 0,
"run_at": "2026-01-01T00:00:00Z"
}
],
"events": [
{
"created": "2026-01-01T00:00:00Z",
"type": "created",
"message": "string",
"user": {
"id": "00000000-0000-0000-0000-000000000000",
"first_name": "string",
"last_name": "string"
}
}
],
"customer": {
"first_name": "",
"last_name": "",
"business_name": "",
"email": "",
"phone_number": ""
}
}