Skip to main content
Login
Apus Platform
Docs contents
fin

Finance & Accounting

Accounts receivable and payable, payments, the general ledger and the closing cycle — invoices, journal entries, the chart of accounts, cost centers, fiscal periods, tax codes and exchange rates. The system of record for money owed and money owing. Feed an e-invoice provider, a bank reconciliation tool or an external BI warehouse from these endpoints.

GET/v1/fin/invoicesScope: finance:read

List invoices

Returns a cursor-paginated list of invoices. Filter by lifecycle status, partner or direction (receivable vs payable).

Query parameters
limitoptionalintegerPage size, 1–200 (default 50).
cursoroptionalstringPagination cursor from a previous response.
statusoptionalstringFilter by status: open, paid, overdue or void.
partner_idoptionalstringFilter by partner (customer or supplier).
directionoptionalstringreceivable (sales) or payable (purchase).
Request
curl "https://api.apusplatform.com/v1/fin/invoices" \
  -H "Authorization: Bearer $APUS_TOKEN"
Response
{
  "data": [
    {
      "id": "inv_1a2b",
      "number": "INV-2026-000142",
      "direction": "receivable",
      "partner_id": "prt_1a2b",
      "status": "open",
      "issue_date": "2026-07-20",
      "due_date": "2026-08-19",
      "total": {
        "amount": 13750000,
        "currency": "VND"
      },
      "balance": {
        "amount": 13750000,
        "currency": "VND"
      },
      "updated_at": "2026-07-20T04:20:11Z"
    }
  ],
  "has_more": true,
  "next_cursor": "crsr_9a10"
}
POST/v1/fin/invoicesScope: finance:write

Create an invoice

Creates a draft invoice. Totals and tax are computed from the lines; the number is assigned on posting.

Body
partner_idrequiredstringCustomer (receivable) or supplier (payable).
directionrequiredstringreceivable or payable.
linesrequiredstringLine items: { description, quantity, unit_price, tax_code }.
due_dateoptionalstringPayment due date (YYYY-MM-DD).
Request
curl -X POST "https://api.apusplatform.com/v1/fin/invoices" \
  -H "Authorization: Bearer $APUS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "partner_id": "prt_1a2b",
    "direction": "receivable",
    "due_date": "2026-08-19",
    "lines": [
      {
        "description": "Steel bracket 8mm",
        "quantity": 100,
        "unit_price": {
          "amount": 125000,
          "currency": "VND"
        },
        "tax_code": "VAT10"
      }
    ]
  }'
Response
{
  "id": "inv_1a2b",
  "number": "INV-2026-000142",
  "status": "open",
  "total": {
    "amount": 13750000,
    "currency": "VND"
  },
  "created_at": "2026-07-20T02:10:00Z"
}
GET/v1/fin/invoices/{id}Scope: finance:read

Retrieve an invoice

Returns a single invoice with its lines and running balance.

Path parameters
idrequiredstringInvoice id.
Request
curl "https://api.apusplatform.com/v1/fin/invoices/inv_1a2b" \
  -H "Authorization: Bearer $APUS_TOKEN"
Response
{
  "id": "inv_1a2b",
  "number": "INV-2026-000142",
  "direction": "receivable",
  "partner_id": "prt_1a2b",
  "status": "open",
  "issue_date": "2026-07-20",
  "due_date": "2026-08-19",
  "lines": [
    {
      "description": "Steel bracket 8mm",
      "quantity": 100,
      "unit_price": {
        "amount": 125000,
        "currency": "VND"
      },
      "tax_code": "VAT10",
      "subtotal": {
        "amount": 12500000,
        "currency": "VND"
      }
    }
  ],
  "subtotal": {
    "amount": 12500000,
    "currency": "VND"
  },
  "tax": {
    "amount": 1250000,
    "currency": "VND"
  },
  "total": {
    "amount": 13750000,
    "currency": "VND"
  },
  "balance": {
    "amount": 13750000,
    "currency": "VND"
  },
  "updated_at": "2026-07-20T04:20:11Z"
}
PATCH/v1/fin/invoices/{id}Scope: finance:write

Update an invoice

Updates mutable fields of an invoice while it is still open. Only supplied fields change; a paid or void invoice is read-only.

Path parameters
idrequiredstringInvoice id.
Body
due_dateoptionalstringPayment due date (YYYY-MM-DD).
linesoptionalstringReplacement line items: { description, quantity, unit_price, tax_code }.
memooptionalstringInternal note shown on the document.
Request
curl -X PATCH "https://api.apusplatform.com/v1/fin/invoices/inv_1a2b" \
  -H "Authorization: Bearer $APUS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "due_date": "2026-09-03"
  }'
Response
{
  "id": "inv_1a2b",
  "number": "INV-2026-000142",
  "status": "open",
  "updated_at": "2026-07-20T02:12:00Z"
}
POST/v1/fin/invoices/{id}/voidScope: finance:write

Void an invoice

Voids an invoice, reversing its ledger impact. Only an invoice with no settled payments can be voided.

Path parameters
idrequiredstringInvoice id.
Body
reasonoptionalstringReason recorded in the audit trail.
Request
curl -X POST "https://api.apusplatform.com/v1/fin/invoices/inv_1a2b/void" \
  -H "Authorization: Bearer $APUS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "reason": "Issued to the wrong partner"
  }'
Response
{
  "id": "inv_1a2b",
  "number": "INV-2026-000142",
  "status": "void",
  "voided_at": "2026-07-20T02:18:00Z"
}
GET/v1/fin/paymentsScope: finance:read

List payments

Returns a cursor-paginated list of payments and receipts. Filter by the invoice they settle or by method.

Query parameters
limitoptionalintegerPage size, 1–200 (default 50).
cursoroptionalstringPagination cursor from a previous response.
invoice_idoptionalstringReturn only payments applied to this invoice.
methodoptionalstringFilter by method: bank_transfer, cash or card.
Request
curl "https://api.apusplatform.com/v1/fin/payments" \
  -H "Authorization: Bearer $APUS_TOKEN"
Response
{
  "data": [
    {
      "id": "pay_6h7i",
      "invoice_id": "inv_1a2b",
      "amount": {
        "amount": 13750000,
        "currency": "VND"
      },
      "method": "bank_transfer",
      "paid_at": "2026-07-22T03:00:00Z",
      "reference": "FT26073300142"
    }
  ],
  "has_more": false,
  "next_cursor": null
}
POST/v1/fin/paymentsScope: finance:write

Record a payment

Records a payment or receipt against an invoice and applies it to the outstanding balance. Marks the invoice paid once fully settled.

Body
invoice_idrequiredstringInvoice being settled.
amountrequiredobject{ amount (minor units), currency }.
methodrequiredstringbank_transfer, cash or card.
paid_atoptionalstringRFC 3339 timestamp of settlement (defaults to now).
Request
curl -X POST "https://api.apusplatform.com/v1/fin/payments" \
  -H "Authorization: Bearer $APUS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "invoice_id": "inv_1a2b",
    "amount": {
      "amount": 13750000,
      "currency": "VND"
    },
    "method": "bank_transfer",
    "paid_at": "2026-07-22T03:00:00Z"
  }'
Response
{
  "id": "pay_6h7i",
  "invoice_id": "inv_1a2b",
  "invoice_status": "paid",
  "created_at": "2026-07-22T03:00:05Z"
}
GET/v1/fin/journal-entriesScope: finance:read

List journal entries

Returns a cursor-paginated list of general-ledger journal entries. Filter by the account they touch or by fiscal period.

Query parameters
limitoptionalintegerPage size, 1–200 (default 50).
cursoroptionalstringPagination cursor from a previous response.
accountoptionalstringReturn entries that post to this account code.
periodoptionalstringFiscal period, e.g. 2026-07.
Request
curl "https://api.apusplatform.com/v1/fin/journal-entries" \
  -H "Authorization: Bearer $APUS_TOKEN"
Response
{
  "data": [
    {
      "id": "je_3k4l",
      "date": "2026-07-20",
      "memo": "Sales invoice INV-2026-000142",
      "source": "inv_1a2b",
      "period": "2026-07",
      "posted": true
    }
  ],
  "has_more": true,
  "next_cursor": "crsr_7d8e"
}
POST/v1/fin/journal-entriesScope: finance:write

Create a journal entry

Posts a manual journal entry. Total debits must equal total credits and the target period must be open.

Body
daterequiredstringAccounting date (YYYY-MM-DD).
linesrequiredstringBalanced lines: { account, debit, credit }.
memooptionalstringDescription shown on the entry.
Request
curl -X POST "https://api.apusplatform.com/v1/fin/journal-entries" \
  -H "Authorization: Bearer $APUS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "date": "2026-07-20",
    "memo": "Cash sale receipt",
    "lines": [
      {
        "account": "111",
        "debit": {
          "amount": 13750000,
          "currency": "VND"
        },
        "credit": {
          "amount": 0,
          "currency": "VND"
        }
      },
      {
        "account": "511",
        "debit": {
          "amount": 0,
          "currency": "VND"
        },
        "credit": {
          "amount": 12500000,
          "currency": "VND"
        }
      },
      {
        "account": "3331",
        "debit": {
          "amount": 0,
          "currency": "VND"
        },
        "credit": {
          "amount": 1250000,
          "currency": "VND"
        }
      }
    ]
  }'
Response
{
  "id": "je_3k4l",
  "date": "2026-07-20",
  "period": "2026-07",
  "posted": true,
  "created_at": "2026-07-20T02:20:00Z"
}
GET/v1/fin/journal-entries/{id}Scope: finance:read

Retrieve a journal entry

Returns a single journal entry with its debit and credit lines.

Path parameters
idrequiredstringJournal entry id.
Request
curl "https://api.apusplatform.com/v1/fin/journal-entries/je_3k4l" \
  -H "Authorization: Bearer $APUS_TOKEN"
Response
{
  "id": "je_3k4l",
  "date": "2026-07-20",
  "memo": "Sales invoice INV-2026-000142",
  "source": "inv_1a2b",
  "period": "2026-07",
  "posted": true,
  "lines": [
    {
      "account": "131",
      "debit": {
        "amount": 13750000,
        "currency": "VND"
      },
      "credit": {
        "amount": 0,
        "currency": "VND"
      }
    },
    {
      "account": "511",
      "debit": {
        "amount": 0,
        "currency": "VND"
      },
      "credit": {
        "amount": 12500000,
        "currency": "VND"
      }
    },
    {
      "account": "3331",
      "debit": {
        "amount": 0,
        "currency": "VND"
      },
      "credit": {
        "amount": 1250000,
        "currency": "VND"
      }
    }
  ]
}
GET/v1/fin/accountsScope: finance:read

List accounts

Returns the chart of accounts. Filter by account type.

Query parameters
typeoptionalstringFilter by type: asset, liability, equity, revenue or expense.
Request
curl "https://api.apusplatform.com/v1/fin/accounts" \
  -H "Authorization: Bearer $APUS_TOKEN"
Response
{
  "data": [
    {
      "code": "111",
      "name": "Cash on hand",
      "type": "asset",
      "parent": null
    },
    {
      "code": "112",
      "name": "Cash in banks",
      "type": "asset",
      "parent": null
    },
    {
      "code": "131",
      "name": "Trade receivables",
      "type": "asset",
      "parent": null
    }
  ]
}
GET/v1/fin/cost-centersScope: finance:read

List cost centers

Returns the cost centers used to tag expenses and revenue for management reporting.

No parameters.

Request
curl "https://api.apusplatform.com/v1/fin/cost-centers" \
  -H "Authorization: Bearer $APUS_TOKEN"
Response
{
  "data": [
    {
      "id": "cc_prod",
      "code": "PROD",
      "name": "Production",
      "active": true
    },
    {
      "id": "cc_sales",
      "code": "SALES",
      "name": "Sales & Marketing",
      "active": true
    }
  ]
}
GET/v1/fin/fiscal-periodsScope: finance:read

List fiscal periods

Returns the accounting calendar with each period's open or closed status.

No parameters.

Request
curl "https://api.apusplatform.com/v1/fin/fiscal-periods" \
  -H "Authorization: Bearer $APUS_TOKEN"
Response
{
  "data": [
    {
      "id": "fp_2026_06",
      "period": "2026-06",
      "status": "closed",
      "closed_at": "2026-07-05T09:00:00Z"
    },
    {
      "id": "fp_2026_07",
      "period": "2026-07",
      "status": "open",
      "closed_at": null
    }
  ]
}
POST/v1/fin/fiscal-periods/{id}/closeScope: finance:write

Close a fiscal period

Closes a fiscal period so no further entries can post to it. Fails if earlier periods are still open or unbalanced entries remain.

Path parameters
idrequiredstringFiscal period id.
Request
curl -X POST "https://api.apusplatform.com/v1/fin/fiscal-periods/fp_2026_07/close" \
  -H "Authorization: Bearer $APUS_TOKEN"
Response
{
  "id": "fp_2026_07",
  "period": "2026-07",
  "status": "closed",
  "closed_at": "2026-08-05T09:00:00Z"
}
GET/v1/fin/tax-codesScope: finance:read

List tax codes

Returns the configured VAT and withholding tax codes with their rates and posting accounts.

No parameters.

Request
curl "https://api.apusplatform.com/v1/fin/tax-codes" \
  -H "Authorization: Bearer $APUS_TOKEN"
Response
{
  "data": [
    {
      "code": "VAT10",
      "name": "VAT 10%",
      "rate": 0.1,
      "account": "3331",
      "active": true
    },
    {
      "code": "VAT8",
      "name": "VAT 8%",
      "rate": 0.08,
      "account": "3331",
      "active": true
    },
    {
      "code": "VAT0",
      "name": "VAT 0%",
      "rate": 0,
      "account": "3331",
      "active": true
    }
  ]
}
GET/v1/fin/exchange-ratesScope: finance:read

List exchange rates

Returns exchange rates against the base currency for a given date, used to translate foreign-currency documents.

Query parameters
baseoptionalstringBase currency (default VND).
dateoptionalstringRate date (YYYY-MM-DD); defaults to today.
Request
curl "https://api.apusplatform.com/v1/fin/exchange-rates" \
  -H "Authorization: Bearer $APUS_TOKEN"
Response
{
  "base": "VND",
  "date": "2026-07-20",
  "rates": [
    {
      "currency": "USD",
      "rate": 25450
    },
    {
      "currency": "EUR",
      "rate": 27680
    },
    {
      "currency": "JPY",
      "rate": 162
    }
  ]
}

Ready to build?

Create an API client in the Account Console to get your credentials, or talk to an integration engineer about your use case.

noindex