Skip to content

Money API

Chris Shingler edited this page Nov 24, 2025 · 33 revisions

Use the Money API to create bills, office debits & credits, and client debits & credits in Unity

Money API

The Money API provides integrators with the following features:

  • Get Case Financial Information e.g. Balances , Unpaid Bills , WIP & Credit Limit
  • Get Case Ledgers Transactions e.g. Office , Client , Deposit & Time
  • Create Bill with fee, disbursement, and expense detail
  • Create Office Debit e.g. disbursement / expense paid out of Office
  • Create Client Debit e.g. disbursement / expense paid out of Client
  • Create Office Credit e.g. funds received to pay a bill
  • Create Client Credit e.g. mortgage lender funds received to client

Only POST methods are supported i.e. you can only create new items. You cannot update (PUT) or delete (DELETE) via this API. So, any updates or deletes can be managed manually by the user within the Unity UI.

GET Case Financial Information

This endpoint allows the integrator to the financial overview of the case.

The screenshot below is an example of how we display the case information within our web application and could be used as a guide on how to structure the JSON response in your UI.

Case Info

curl --location 'https://{{baseUrl}}/api/{{tenantName}}/case/{{caseId}}/money' \
--header 'Accept: application/json' \
--header 'Authorization: {Token}'

GET {{baseUrl}}/api/{{tenantName}}/case/{{caseId}}/money

Example

https://github.com/quillpinpoint/interactive-api/blob/main/curl-examples/money-api/case-information

Lookup Endpoints

  • Case ID :GET /quillapi5/Cases/TRU0011 (This is a CRM API endpoint so please structure your request the same as the lookups in CRM documentation) use this request to return the OrqaID of the case. Example "OrqaId": "2014-05-06_8TYZ-1SV7-N7C0")

Ledgers - Office , Client , Deposit

The ledgers endpoint allows integrators to mimic the same functionality as the ledgers pages within Unity

The screenshot below is an example of how we display ledgers within our web application and could be used as a guide on how to structure the JSON response in your UI.

Ledgers Example

curl --location -- GET 'https://i3.{quill-domain}.com/api/{tenantUri}/case/{caseId}/ledger/office \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {token}'

GET /api/{{tenantName}}/case/{{caseId}}/ledger/{{ledgerType}}

Path Parameters

Parameter Type Description Example
caseId str (25) Unique "ORQA" ID of the case 2025-01-01_YK6C-0VPH-M3T1
ledgerType string Type of ledger. One of: office, client, deposit client

Query Parameters

Parameter Type Description Allowed Values / Example
includeEchits boolean Whether to include e-chits (uncommitted transations) in the response true or false
period str Defines the time range for the ledger data all, Last12Months, Last6Months, Last2Months
orderBy str Determines sorting of results (Post by default) posted, postedNewest, date, reference, Narrative
pageSize int Number of records to return per page (100 max) e.g. 10,25,50,100
page int Page number for paginated results e.g. 1
  • Example Parameters - ?includeEchits=true&period=all&orderBy=posted&pageSize=100&page=1

Reference Mappings

Order By Options

Key API Value Description
posted posted Order by posted sequence
newestPosted postedNewest Order by posted date (descending)
date date Order by transaction date
ref reference Order by reference number
narrative Narrative Order by narrative text

Period Options

Key API Value Description
all all Include all time
year Last12Months Last 12 months of data
six Last6Months Last 6 months of data
two Last2Months Last 2 months of data

Example

https://github.com/quillpinpoint/interactive-api/blob/main/curl-examples/money-api/get-OCD-ledgers

Lookup Endpoints

  • Case Id : GET /quillapi5/Cases/SMI0011 (This is a CRM API endpoint so please structure your request the same as the lookups in CRM documentation) use this request to return the OrqaID of the case. Example "OrqaId": "2025-01-01_YK6C-0VPH-M3T1")

Ledgers - Time

The ledgers endpoint allows integrators to mimic the same functionality as the ledgers pages within Unity. The Time ledger is slightly different to the Office , Client & Deposit ledgers hence the need for its own section.

The screenshot below is an example of how we display the time ledger within our web application and could be used as a guide on how to structure the JSON response in your UI.

Time Ledger

curl --location -- GET 'https://i3.{quill-domain}.com/api/{tenantUri}/case/{caseId}/ledger/time\
--header 'Accept: application/json' \
--header 'Authorization: Bearer {token}'

GET /api/{{tenantName}}/case/{{caseId}}/ledger/time

Path Parameters

Parameter Type Description Example
caseId str (25) Unique "ORQA" ID of the case 2025-01-01_YK6C-0VPH-M3T1

Query Parameters

Parameter Type Description Allowed Values / Example
period str Defines the time range for the ledger data all, Last12Months, Last6Months, Last2Months
status str Filters the ledger entries by status all, allIncludePending, billedOnly, writeOffsOnly, wipOnly
pageSize int Number of records to return per page e.g. 10,25,50,100
page int Page number for paginated results e.g. 1
orderBy str Determines sorting of results posted, postedNewest, date, attendenceCode, feeEarner
  • Example Parameters - ?status=allIncludePending&period=all&orderBy=posted&pageSize=100&page=1'

Order By Options

Key API Value Description
posted posted Order by posted sequence
newest postedNewest Order by posted date (descending)
date date Order by transaction date
OrderByType attendenceCode Order by attendance code
feeEarner feeEarner Order by fee earner

Period Options

Key API Value Description
all all Include all time
year Last12Months Last 12 months of data
six Last6Months Last 6 months of data
two Last2Months Last 2 months of data

Status Options

Key API Value Description
all all Show all ledger entries
allIncludePending allIncludePending Include all entries, including pending time entries
billed billedOnly Show billed-only items
writeoffs writeOffsOnly Show write-offs only
wip wipOnly Show work-in-progress entries only

A pending time entry is a piece of time that is not yet submitted to the ledgers , the result with have a empty postedId and only a PendingId


Example

https://github.com/quillpinpoint/interactive-api/blob/main/curl-examples/money-api/get-time-ledger

Lookup Endpoints

  • Case Id : GET /quillapi5/Cases/SMI0011 ( This is a CRM API endpoint so please structure your request the same as the lookups in CRM documentation) use this request to return the OrqaID of the case. Example "OrqaId": "2025-01-01_YK6C-0VPH-M3T1")

Create Bills

The /Bills endpoint allows integrators to mimic the same functionality as the Bill Echit in Unity.

Supported areas of the Bill are:

  • Profit Costs - with Fees received
  • Manage Expenses - with Expenses received
  • Manage Disbursements - with Disbursements received

Un-supported areas of the Bill are:

  • Profit Costs split, uplift, WIP
  • TT Charges
  • Misc Charges

The screenshot below shows which fields are expected (see the "Parameters" section below to see how the data in these fields needs to be provided)

money-bills

POST /api/{tenant-uri}/money/bills/

Name Type Description
displayCode str(12) Required. Case code
narrative str Required. details about the transaction
reference str Required. The Bill’s Reference. If using auto-referencing then a value of “AUTO” must be provided, otherwise a custom reference of up to 6 characters can be provided
notes str Optional. This is a notes section that can be used for additional information to the cashier for example.
feeItems feeItem[] Optional. Fee items are equivalent to the "Profit Cost" rows (see screenshot above) and consist of { Cost (decimal); vatRateId (char); vatValue (decimal); FeeEarnerCode (integer) } if feeItems are provided, Cost, VatRate and Vat value properties are required per item. The fee earner ID is optional, if the ID is not provided, the default FE of the display code will be used.
expenseItems expenseItem[] Required, can be passed as empty. Expense items are equivalent to the "Manage Expenses" rows (see screenshot above) and consist of { date (dateTime); description (str); cost (decimal); vatRateId (char); vatValue (decimal) } if expenseItems are provided, all properties except date are required per item
disbursementItems disbursementItem[] Required, can be passed as empty. Disbursement items are equivalent to the "Manage Disbursement" rows (see screenshot above) and consist of { date (dateTime); description (str); cost (decimal); vatRateId (char); vatValue (decimal) } if disbursementItems are provided, all properties except date are required per item

Lookup dependencies

  • VAT Rate Id: GET /Money/TaxRates
  • Fee Earner Id (Code) : GET /Case-Attributes/Fee-Earners ( Retrieved from the CRM API )

Example

Response

  • Status: 201 = Created
  • Status: 400 = Bad request

Create Office Debits

e.g. pay a disbursement/expense out of the office ledger; or pay a supplier; or pay out of a nominal ledger (such as rent)

The /Office/Debits endpoint allows integrators to mimic the same functionality as the Office Debit Echit in Unity.

The screenshot below shows which fields are expected (see the "Parameters" section below to see how the data in these fields needs to be provided)

money-office-debits

POST /api/{tenant-uri}/money/office/debits/

Name Type Description
paymentMethod str(6) Required. The Id of the Payment Method. Lookup value: Payment Method Id
account obj Object containing displayCode; nominalBranch and nominalCode; or supplierCode
- displayCode str(12) The Display Code of the Case. If displayCode is provided, an "account type" of "Matter" is assumed
- nominalBranch int The Id of the Nominal Branch. If nominalBranch and nominalCode are provided, an "account type" of "Nominal" is assumed
- nominalCode str The Id of the Nominal. If nominalCode and nominalBranch are provided, an "account type" of "Nominal" is assumed
- supplierCode int The Id of the Supplier. If supplierCode is provided, an "account type" of "Supplier" is assumed
bank lookup str Required. The Id of the Bank. Lookup value: Bank Account Id
disbCategory lookup int Required. The Id of the Disbursement Category. Lookup value: Disbursement Category Id
disbType lookup str Required. The Id of the Disbursement Type. Lookup value: Disbursement Type Id
amount obj Object containing vatable, vat, net and total
- vat decimal VAT amount. Not applicable if account type = "Supplier"
- vatRateId char VAT Rate Id. Not applicable if account type = "Supplier"
- net decimal Net amount. Required if account type = "Matter" or "Nominal"
- total decimal Total (gross) amount. Required if account type = "Supplier"
date dateTime Required. Date transaction occurred
reference str(8) Required. Transaction reference
payee str(100) Required. Payee
paymentDetails obj Object containing accountNumber, sortCode, iban, bicCode and paymentReference
- accountNumber str bank account number. If accountNumber and sortCode are provided, a Payment Destination of "Domestic" is assumed
- sortCode str bank sortcode. If accountNumber and sortCode are provided, a Payment Destination of "Domestic" is assumed
- iban str Net amount. if iban and bicCode
- bicCode str Total (gross) amount. Required if account type = "Supplier"
- paymentReference str(18) "Reference supplied to the Bank"
narrative str(200) Required. details about the transaction
notes str notes about the transaction

Lookup dependencies

  • Payment Method: GET /Money/PaymentMethods
  • Bank Account: GET /Money/BankAccounts
  • Disbursement Type: GET /Money/DisbursementTypes
  • Disbursement Category: GET /Money/DisbursementCategories
  • VAT Rate: GET /Money/TaxRates

Examples

Response

  • Status: 201 = Created
  • Status: 400 = Bad request if any of the following occur:
    • The displayCode provided is not found within the system
    • The net amount provided for a Matter or Nominal account is 0
    • The nominalBranch provided does not belong to the given nominal
    • The total amount provided for a Supplier account is 0
    • The account type could not be inferred by the account information provided i.e. if displayCode AND supplierCode are sent
    • Both domestic AND international payment details are provided

Create Client Debits

e.g. pay out funds from the client ledger account

The /Client/Debits endpoint allows integrators to mimic the Client Debit Echit in Unity.

The screenshot below shows which fields are expected (see the "Parameters" section below to see how the data in these fields needs to be provided)

money-client-debits

Lookup dependencies

  • Payment Method Id: GET /Money/PaymentMethods
  • Bank Account Id: GET /Money/BankAccounts

POST /api/{tenant-uri}/money/client/debits/

Name Type Description
paymentMethod str(6) Required. The Id of the Payment Method. Lookup value: Payment Method Id
account str Required. displayCode of the Case (aka Matter)
bank lookup str Required. The Id of the Bank. Lookup value: Bank Account Id
amount decimal Required. the amount of the payment
date dateTime Required. Date transaction occurred
reference str(8) Required. Transaction reference
payee str(100) Required. full name of the payee - the entity that will receive the money
paymentDetails obj Object containing accountNumber, sortCode, iban, bicCode and paymentReference
- accountNumber str bank account number. If accountNumber and sortCode are provided, a Payment Destination of "Domestic" is assumed
- sortCode str bank sortcode. If accountNumber and sortCode are provided, a Payment Destination of "Domestic" is assumed
- iban str Net amount. if iban and bicCode
- bicCode str Total (gross) amount. Required if account type = "Supplier"
- paymentReference str(18) Reference supplied to the Bank
narrative str(200) Required. details about the transaction
notes str notes about the transaction

Examples

https://github.com/quillpinpoint/interactive-api/blob/main/curl-examples/money-api/post-client-debit

Response

  • Status: 201 = Created
  • Status: 400 = Bad request if any of the following occur:
    • The displayCode provided is not found within the system
    • The total amount provided is 0
    • Both domestic AND international payment details are provided

Create Office Credits

e.g. funds received from the client to pay a bill

The /Office/Credits endpoint allows integrators to mimic the same functionality as the Office Credit Echit in Unity.

The screenshot below shows which fields are expected (see the "Parameters" section below to see how the data in these fields needs to be provided)

money-office-credits

POST /api/{tenant-uri}/money/office/credits/

Name Type Description
paymentMethod str(6) Required. The Id of the Payment Method. Lookup value: Payment Method Id
account obj Object containing displayCode; or nominalBranch and nominalCode
- displayCode str(12) The Display Code of the Case. If displayCode is provided, an "account type" of "Matter" is assumed
- nominalBranch int The Id of the Nominal Branch. If nominalBranch and nominalCode are provided, an "account type" of "Nominal" is assumed
- nominalCode str The Id of the Nominal. If nominalCode and nominalBranch are provided, an "account type" of "Nominal" is assumed
bank lookup str Required. The Id of the Bank. Lookup value: Bank Account Id
amount decimal Required. amount of transaction
date dateTime Required. Date transaction occurred
receivedFrom str Required. full name of the payer - the entity that is paying
reference str(8) Required. Transaction reference
narrative str(200) Required. details about the transaction
notes str notes about the transaction

Lookup dependencies

  • Payment Method Id: GET /Money/PaymentMethods
  • Bank Account Id: GET /Money/BankAccounts

Example

https://github.com/quillpinpoint/interactive-api/blob/main/curl-examples/money-api/post-office-credit

Response

  • Status: 201 = Created
  • Status: 400 = Bad request if any of the following occur:
    • The displayCode provided is not found within the system
    • The net amount provided for a Matter or Nominal account is 0
    • The nominalBranch provided does not belong to the given nominal
    • The total amount provided for a Supplier account is 0
    • The account type could not be inferred by the account information provided i.e. if displayCode AND supplierCode are sent

Create Client Credits

e.g. mortgage lender funds received to client

The /Client/Credits endpoint allows integrators to mimic the same functionality as the Client Credit Echit in Unity.

The screenshot below shows which fields are expected (see the "Parameters" section below to see how the data in these fields needs to be provided)

money-client-credits

POST /api/{tenant-uri}/money/client/credits/

Name Type Description
paymentMethod str(6) Required. The Id of the Payment Method. Lookup value: Payment Method Id
account str Required. displayCode of the Case (aka Matter)
bank lookup str Required. The Id of the Bank. Lookup value: Bank Account Id
amount decimal Required. amount of transaction
date dateTime Required. Date transaction occurred
receivedFrom str Required. full name of the payer - the entity that is paying
reference str(8) Required. Transaction reference
narrative str(200) Required. details about the transaction
notes str notes about the transaction

Lookup dependencies

  • Payment Method Id: GET /Money/PaymentMethods
  • Bank Account Id: GET /Money/BankAccounts

Example

https://github.com/quillpinpoint/interactive-api/blob/main/curl-examples/money-api/post-client-credit

Response

  • Status: 201 = Created
  • Status: 400 = Bad request if any of the following occur:
    • The displayCode provided is not found within the system
    • The total amount provided is 0

Lookup endpoints

  • GET /quillapi5/Branches ( This is a CRM API endpoint so please structure your request the same as the lookups in CRM documentation)
  • GET /quillapi5/Case-Attributes/Fee-Earners ( This is a CRM API endpoint so please structure your request the same as the lookups in CRM documentation)
  • GET /Money/BankAccounts
    • /Money/BankAccounts?active=active
    • /Money/BankAccounts?active=false
  • GET /Money/DisbursementCategories
  • GET /Money/DisbursementTypes
    • /Money/DisbursementTypes?active=active
    • /Money/DisbursementTypes?active=false
  • GET /Money/ExpenseTypes
  • GET /Money/Nominals
  • GET /Money/PaymentMethods
  • GET /Money/Suppliers
  • GET /Money/TaxRates e.g. VAT rates

Examples

curl --location --request GET 'https://i3.{quill-domain}/api/{tenantUri}/Money/BankAccounts' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {token}'
curl --location --request GET 'https://i3.{quill-domain}/api/{tenantUri}/Money/TaxRates/' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {token}'


END

Clone this wiki locally