Nomod
Invoices/Create Invoice

Create Invoice

posthttps://api.nomod.com/v1/invoices

Generate 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

currencystringrequired

ISO 4217 currency code for the invoice. Supported: AED, USD, EUR, GBP and SAR. Retrieve codes from the /currencies endpoint.

Max length: 3

itemsarrayrequired

List of items associated with this invoice, including name and amount.

discount_percentageinteger

Discount percentage.

Max: 100

Min: 0

customerstring <uuid>required

Customer ID, Get the customer id from /customer api

invoice_numberstring

Invoice number

Max length: 30

titlestring

Invoice title

Max length: 50

notestring

A note to describle what you're selling

Max length: 280

due_datestring <date>required

Invoice due date

service_datestring <date>

Invoice service date

custom_fieldsarray

Custom fields to add. Maximum of 5 allowed

allow_tabbyboolean

Whether to enable Tabby payment method for the link. Default == true

allow_tamaraboolean

Whether to enable Tamara payment method for the link. Default == true

allow_service_feeboolean

Whether 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-only

Currency-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-only
reference_idstringrequiredread-only
createdstring <date-time>requiredread-only
titlestringrequiredread-only
codestringrequiredread-only
urlstring <uri>requiredread-only

URL of the link or invoice,

amountstring <decimal>requiredread-only
currencystringrequired
statusobjectrequiredread-only
discountstring <decimal>requiredread-only
service_feestring <decimal>
taxstring <decimal>requiredread-only
shipping_address_requiredbooleanrequiredread-only
itemsarrayrequiredread-only
taxesarray
notestringrequiredread-only
expirystring <date-time>requiredread-only
discount_percentagestring <decimal>
service_fee_percentagestring <decimal>
tip_percentagestring <decimal>
userobjectrequired
tipstring <decimal>requiredread-only
invoice_numberstringrequiredread-only
service_datestring <date-time>requiredread-only
due_datestring <date-time>requiredread-only
interval_countintegerrequiredread-only
starts_atstring <date-time>requiredread-only
ends_atstring <date-time>requiredread-only
due_daysintegerrequiredread-only
emailstring <email>
custom_fieldsarray
sourceobjectrequiredread-only
success_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_sourcestring
allow_tabbyboolean
allow_tamaraboolean
allow_service_feeboolean
max_allowed_charges_countinteger
filesarrayrequiredread-only
remindersarrayrequiredread-only
eventsarrayrequired
customerobjectrequiredread-only

Example 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": ""
  }
}