Sales & Invoicing

Manage the full sales pipeline from quotes to invoices. Create quotes for prospective deals, convert approved quotes into invoices, and track payment status.


GET/v1/sales/quotes

List quotes

Retrieve a paginated list of all quotes for your organization.

Optional parameters

  • Name
    status
    Type
    string
    Description

    Filter by status: draft, sent, accepted, rejected.

  • Name
    limit
    Type
    integer
    Description

    Maximum number of records to return (default: 50).

  • Name
    offset
    Type
    integer
    Description

    Number of records to skip for pagination.

Request

GET
/v1/sales/quotes
curl https://api.umbraerp.com/v1/sales/quotes \
  -H "Authorization: Bearer <your_access_token>"

Response

{
  "result": "success",
  "quotes": [
    {
      "id": "qt_a1b2c3d4",
      "customer_id": "cust_123",
      "status": "draft",
      "total": 150000,
      "currency": "USD",
      "items": [],
      "created_at": "2026-01-15T10:30:00Z"
    }
  ],
  "total_count": 1
}

POST/v1/sales/quotes

Create quote

Create a new sales quote.

Required attributes

  • Name
    customer_id
    Type
    string
    Description

    The customer this quote is for.

  • Name
    items
    Type
    array
    Description

    Array of line items, each with description, quantity, and unit_price.

  • Name
    currency
    Type
    string
    Description

    Three-letter ISO currency code (e.g., USD).

Optional attributes

  • Name
    notes
    Type
    string
    Description

    Additional notes for the quote.

  • Name
    valid_until
    Type
    string
    Description

    Expiry date for the quote (YYYY-MM-DD).

  • Name
    tax_rate
    Type
    number
    Description

    Tax rate as a percentage (e.g., 15 for 15%).

Request

POST
/v1/sales/quotes
curl -X POST https://api.umbraerp.com/v1/sales/quotes \
  -H "Authorization: Bearer <your_access_token>" \
  -H "Content-Type: application/json" \
  -d '{
    "customer_id": "cust_123",
    "items": [
      {
        "description": "Consulting Services",
        "quantity": 10,
        "unit_price": 15000
      }
    ],
    "currency": "USD",
    "tax_rate": 15,
    "valid_until": "2026-04-01"
  }'

Response

{
  "result": "success",
  "quote_id": "qt_a1b2c3d4",
  "message": "Quote created successfully."
}

GET/v1/sales/quotes/:id

Get quote

Retrieve details of a specific quote by its ID.

Request

GET
/v1/sales/quotes/qt_a1b2c3d4
curl https://api.umbraerp.com/v1/sales/quotes/qt_a1b2c3d4 \
  -H "Authorization: Bearer <your_access_token>"

POST/v1/sales/quotes/:id/convert

Convert to invoice

Convert an accepted quote into an invoice. The quote must have a status of accepted.

Request

POST
/v1/sales/quotes/qt_a1b2c3d4/convert
curl -X POST https://api.umbraerp.com/v1/sales/quotes/qt_a1b2c3d4/convert \
  -H "Authorization: Bearer <your_access_token>"

Response

{
  "result": "success",
  "invoice_id": "inv_x1y2z3",
  "message": "Quote converted to invoice successfully."
}

GET/v1/sales/invoices

List invoices

Retrieve a paginated list of all invoices.

Optional parameters

  • Name
    status
    Type
    string
    Description

    Filter by status: draft, sent, paid, overdue, cancelled.

  • Name
    limit
    Type
    integer
    Description

    Maximum number of records to return.

Request

GET
/v1/sales/invoices
curl https://api.umbraerp.com/v1/sales/invoices \
  -H "Authorization: Bearer <your_access_token>"

Response

{
  "result": "success",
  "invoices": [
    {
      "id": "inv_x1y2z3",
      "customer_id": "cust_123",
      "status": "sent",
      "total": 172500,
      "currency": "USD",
      "due_date": "2026-04-01",
      "created_at": "2026-01-15T10:30:00Z"
    }
  ]
}

GET/v1/sales/invoices/:id

Get invoice

Retrieve details of a specific invoice by its ID.

Request

GET
/v1/sales/invoices/inv_x1y2z3
curl https://api.umbraerp.com/v1/sales/invoices/inv_x1y2z3 \
  -H "Authorization: Bearer <your_access_token>"

Was this page helpful?