Repository navigation
Money API
Use the Money API to create bills, office debits & credits, and client debits & credits in Unity
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.
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.

curl --location 'https://{{baseUrl}}/api/{{tenantName}}/case/{{caseId}}/money' \
--header 'Accept: application/json' \
--header 'Authorization: {Token}'
https://github.com/quillpinpoint/interactive-api/blob/main/curl-examples/money-api/case-information
- 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")
CRM Documentation - https://github.com/quillpinpoint/interactive-api/wiki/CRM-API#case-object-returned
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.

curl --location -- GET 'https://i3.{quill-domain}.com/api/{tenantUri}/case/{caseId}/ledger/office \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {token}'
| 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 |
| 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
| 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 |
| 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 |
https://github.com/quillpinpoint/interactive-api/blob/main/curl-examples/money-api/get-OCD-ledgers
- 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")
CRM Documentation - https://github.com/quillpinpoint/interactive-api/wiki/CRM-API#case-object-returned
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.

curl --location -- GET 'https://i3.{quill-domain}.com/api/{tenantUri}/case/{caseId}/ledger/time\
--header 'Accept: application/json' \
--header 'Authorization: Bearer {token}'
| Parameter | Type | Description | Example |
|---|---|---|---|
caseId |
str (25) |
Unique "ORQA" ID of the case | 2025-01-01_YK6C-0VPH-M3T1 |
| 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'
| 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 |
| 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 |
| 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
https://github.com/quillpinpoint/interactive-api/blob/main/curl-examples/money-api/get-time-ledger
- 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")
CRM Documentation - https://github.com/quillpinpoint/interactive-api/wiki/CRM-API#case-object-returned
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)

| 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 |
- VAT Rate Id:
GET /Money/TaxRates - Fee Earner Id (Code) :
GET /Case-Attributes/Fee-Earners( Retrieved from the CRM API )
- https://github.com/quillpinpoint/interactive-api/blob/main/curl-examples/money-api/post-bill.sh
- https://github.com/quillpinpoint/interactive-api/blob/main/curl-examples/money-api/post-bill-fees-only.sh
- Status: 201 = Created
- Status: 400 = Bad request
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)

| 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 |
- 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
- https://github.com/quillpinpoint/interactive-api/blob/main/curl-examples/money-api/post-office-debit.sh
- https://github.com/quillpinpoint/interactive-api/blob/main/curl-examples/money-api/post-nominal-debit
- https://github.com/quillpinpoint/interactive-api/blob/main/curl-examples/money-api/post-supplier-debit
- 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
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)

- Payment Method Id: GET /Money/PaymentMethods
- Bank Account Id: GET /Money/BankAccounts
| 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 |
https://github.com/quillpinpoint/interactive-api/blob/main/curl-examples/money-api/post-client-debit
- 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
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)

| 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 |
- Payment Method Id: GET /Money/PaymentMethods
- Bank Account Id: GET /Money/BankAccounts
- 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
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)

| 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 |
- Payment Method Id: GET /Money/PaymentMethods
- Bank Account Id: GET /Money/BankAccounts
- 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
-
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/ExpenseTypesGET /Money/NominalsGET /Money/PaymentMethodsGET /Money/Suppliers-
GET /Money/TaxRatese.g. VAT rates
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