Finance & Accounting
Handle bills, payments, journal entries, and financial reporting. Track accounts payable, record payments, and maintain your general ledger.
List bills
Retrieve a paginated list of all bills (accounts payable).
Optional parameters
- Name
status- Type
- string
- Description
Filter by status:
draft,pending,paid,overdue.
- Name
vendor_id- Type
- string
- Description
Filter by vendor/supplier ID.
- Name
limit- Type
- integer
- Description
Maximum number of records to return.
Request
curl https://api.umbraerp.com/v1/finance/bills \
-H "Authorization: Bearer <your_access_token>"
Response
{
"result": "success",
"bills": [
{
"id": "bill_001",
"vendor_id": "vendor_abc",
"amount": 50000,
"currency": "USD",
"status": "pending",
"due_date": "2026-03-15",
"created_at": "2026-02-15T10:30:00Z"
}
]
}
Create bill
Create a new bill (accounts payable entry).
Required attributes
- Name
vendor_id- Type
- string
- Description
The vendor/supplier this bill is from.
- Name
items- Type
- array
- Description
Array of line items, each with
description,quantity, andunit_price.
- Name
currency- Type
- string
- Description
Three-letter ISO currency code.
- Name
due_date- Type
- string
- Description
Payment due date (
YYYY-MM-DD).
Request
curl -X POST https://api.umbraerp.com/v1/finance/bills \
-H "Authorization: Bearer <your_access_token>" \
-H "Content-Type: application/json" \
-d '{
"vendor_id": "vendor_abc",
"items": [
{
"description": "Office Supplies",
"quantity": 1,
"unit_price": 50000
}
],
"currency": "USD",
"due_date": "2026-03-15"
}'
Response
{
"result": "success",
"bill_id": "bill_001",
"message": "Bill created successfully."
}
Get bill
Retrieve details of a specific bill.
Request
curl https://api.umbraerp.com/v1/finance/bills/bill_001 \
-H "Authorization: Bearer <your_access_token>"
Record payment
Record a payment against a bill.
Required attributes
- Name
amount- Type
- integer
- Description
Payment amount in the smallest currency unit.
- Name
payment_method- Type
- string
- Description
Payment method:
bank_transfer,cash,check,mobile_money.
- Name
payment_date- Type
- string
- Description
Date of payment (
YYYY-MM-DD).
Request
curl -X POST https://api.umbraerp.com/v1/finance/bills/bill_001/pay \
-H "Authorization: Bearer <your_access_token>" \
-H "Content-Type: application/json" \
-d '{
"amount": 50000,
"payment_method": "bank_transfer",
"payment_date": "2026-03-10"
}'
Response
{
"result": "success",
"message": "Payment recorded successfully.",
"bill_status": "paid"
}
List journal entries
Retrieve journal entries for the general ledger.
Optional parameters
- Name
start_date- Type
- string
- Description
Filter by start date (
YYYY-MM-DD).
- Name
end_date- Type
- string
- Description
Filter by end date (
YYYY-MM-DD).
- Name
account- Type
- string
- Description
Filter by account code.
Request
curl https://api.umbraerp.com/v1/finance/journal \
-H "Authorization: Bearer <your_access_token>"
Response
{
"result": "success",
"entries": [
{
"id": "je_001",
"date": "2026-03-10",
"description": "Payment for Office Supplies",
"debits": [{"account": "5000", "amount": 50000}],
"credits": [{"account": "1000", "amount": 50000}],
"created_at": "2026-03-10T14:00:00Z"
}
]
}
Sales Schedule
Retrieve a sales schedule report showing invoiced revenue grouped by time period. Includes per-invoice detail, grouped subtotals with cumulative running totals, a summary, and the current VAT threshold status for your business.
Required parameters
- Name
startDate- Type
- string
- Description
Start date for the report period (
YYYY-MM-DD).
- Name
endDate- Type
- string
- Description
End date for the report period (
YYYY-MM-DD).
Optional parameters
- Name
groupBy- Type
- string
- Description
Grouping interval:
month,quarter, oryear. Defaults tomonth.
- Name
currency- Type
- string
- Description
Filter by three-letter ISO currency code.
Request
curl "https://api.umbraerp.com/v1/get/salesSchedule?startDate=2026-01-01&endDate=2026-03-31&groupBy=month" \
-H "Authorization: Bearer <your_access_token>"
Response
{
"result": "success",
"data": {
"items": [
{
"invoiceId": "inv_abc123",
"invoiceNumber": "INV-0042",
"clientName": "Acme Corp",
"issueDate": "2026-01-15",
"amount": 150000,
"currency": "USD",
"status": "paid"
}
],
"periods": [
{
"period": "2026-01",
"label": "January 2026",
"revenue": 150000,
"invoiceCount": 1,
"cumulative": 150000
},
{
"period": "2026-02",
"label": "February 2026",
"revenue": 220000,
"invoiceCount": 3,
"cumulative": 370000
}
],
"summary": {
"totalRevenue": 370000,
"totalInvoices": 4,
"currency": "USD"
},
"vatThreshold": {
"configured": true,
"thresholdAmount": 5000000,
"currentRevenue": 370000,
"percentageReached": 7.4,
"registered": false
}
}
}
VAT Threshold Config
Retrieve the VAT threshold configuration for the authenticated business. Returns the threshold amount, alert settings, and registration status. Returns null for data if no threshold has been configured.
Request
curl https://api.umbraerp.com/v1/get/vatThreshold \
-H "Authorization: Bearer <your_access_token>"
Response
{
"result": "success",
"data": {
"publicId": "vat_th_abc123",
"country": "ZW",
"thresholdAmount": 5000000,
"currency": "USD",
"periodType": "annual",
"alertAtPercentage": 80,
"alertEmail": "finance@example.com",
"registered": false,
"registrationDate": null,
"registrationNumber": null,
"createdAt": "2026-01-10T08:00:00Z",
"updatedAt": "2026-01-10T08:00:00Z"
}
}
Create VAT Threshold
Create a VAT threshold configuration for your business. This sets the revenue threshold at which VAT registration becomes mandatory, and configures alert notifications.
Required attributes
- Name
country- Type
- string
- Description
Two-letter ISO country code for the jurisdiction.
- Name
thresholdAmount- Type
- integer
- Description
VAT registration threshold amount in the smallest currency unit (cents).
- Name
currency- Type
- string
- Description
Three-letter ISO currency code.
- Name
periodType- Type
- string
- Description
Threshold period:
annual,quarterly, orrolling_12_months.
- Name
alertAtPercentage- Type
- integer
- Description
Percentage of threshold at which to send an alert (e.g.,
80for 80%).
- Name
alertEmail- Type
- string
- Description
Email address to receive threshold alerts.
Request
curl -X POST https://api.umbraerp.com/v1/create/vatThreshold \
-H "Authorization: Bearer <your_access_token>" \
-H "Content-Type: application/json" \
-d '{
"country": "ZW",
"thresholdAmount": 5000000,
"currency": "USD",
"periodType": "annual",
"alertAtPercentage": 80,
"alertEmail": "finance@example.com"
}'
Response
{
"result": "success",
"data": {
"publicId": "vat_th_abc123",
"country": "ZW",
"thresholdAmount": 5000000,
"currency": "USD",
"periodType": "annual",
"alertAtPercentage": 80,
"alertEmail": "finance@example.com",
"registered": false,
"registrationDate": null,
"registrationNumber": null,
"createdAt": "2026-01-10T08:00:00Z",
"updatedAt": "2026-01-10T08:00:00Z"
}
}
Update VAT Threshold
Update an existing VAT threshold configuration. You can modify any of the configurable fields.
Optional attributes
- Name
thresholdAmount- Type
- integer
- Description
Updated threshold amount in the smallest currency unit (cents).
- Name
periodType- Type
- string
- Description
Updated threshold period:
annual,quarterly, orrolling_12_months.
- Name
alertAtPercentage- Type
- integer
- Description
Updated alert percentage (e.g.,
90for 90%).
- Name
alertEmail- Type
- string
- Description
Updated email address for threshold alerts.
- Name
currency- Type
- string
- Description
Updated three-letter ISO currency code.
- Name
country- Type
- string
- Description
Updated two-letter ISO country code.
Request
curl -X PUT https://api.umbraerp.com/v1/update/vatThreshold/vat_th_abc123 \
-H "Authorization: Bearer <your_access_token>" \
-H "Content-Type: application/json" \
-d '{
"thresholdAmount": 7500000,
"alertAtPercentage": 90
}'
Response
{
"result": "success",
"data": {
"publicId": "vat_th_abc123",
"country": "ZW",
"thresholdAmount": 7500000,
"currency": "USD",
"periodType": "annual",
"alertAtPercentage": 90,
"alertEmail": "finance@example.com",
"registered": false,
"registrationDate": null,
"registrationNumber": null,
"createdAt": "2026-01-10T08:00:00Z",
"updatedAt": "2026-03-07T12:00:00Z"
}
}
Mark VAT Registered
Mark a business as VAT registered. This records the registration date and number against the VAT threshold configuration, and updates the registration status.
Required attributes
- Name
registrationDate- Type
- string
- Description
Date of VAT registration (
YYYY-MM-DD).
- Name
registrationNumber- Type
- string
- Description
Official VAT registration number issued by the tax authority.
Request
curl -X POST https://api.umbraerp.com/v1/update/vatThreshold/vat_th_abc123/markRegistered \
-H "Authorization: Bearer <your_access_token>" \
-H "Content-Type: application/json" \
-d '{
"registrationDate": "2026-03-01",
"registrationNumber": "VAT-2026-001234"
}'
Response
{
"result": "success",
"data": {
"publicId": "vat_th_abc123",
"country": "ZW",
"thresholdAmount": 7500000,
"currency": "USD",
"periodType": "annual",
"alertAtPercentage": 90,
"alertEmail": "finance@example.com",
"registered": true,
"registrationDate": "2026-03-01",
"registrationNumber": "VAT-2026-001234",
"createdAt": "2026-01-10T08:00:00Z",
"updatedAt": "2026-03-07T14:30:00Z"
}
}
Revenue Calculator
Calculate revenue metrics for your business including year-to-date revenue, rolling 12-month revenue, monthly average, and projected annual revenue. When a VAT threshold is configured, the response includes a comparison showing how close you are to the threshold.
Optional parameters
- Name
asOfDate- Type
- string
- Description
Calculate metrics as of this date (
YYYY-MM-DD). Defaults to today.
Request
curl "https://api.umbraerp.com/v1/get/revenueCalculator?asOfDate=2026-03-07" \
-H "Authorization: Bearer <your_access_token>"
Response
{
"result": "success",
"data": {
"ytdRevenue": 1250000,
"rolling12MonthRevenue": 4800000,
"monthlyAverage": 400000,
"projectedAnnual": 4800000,
"currency": "USD",
"asOfDate": "2026-03-07",
"vatThreshold": {
"configured": true,
"thresholdAmount": 7500000,
"percentageReached": 64.0,
"registered": true,
"registrationNumber": "VAT-2026-001234"
}
}
}

