Cash Management Schema

Solink tags video to cash management events based on a unique place and time pairing. Time is absolute and must adhere to the convention defined here.

Cash management events capture cash movements and shift-lifecycle changes at a till, safe, or register. Two enumerated fields: cashAction and shiftAction describe what occurred.

Required Object Fields

FieldTypeDescription
dataSourceIdStringA unique identifier representing the source of the cash management data, typically a point-of-sale (POS) register, cash recycler, or safe within the environment. This ID helps differentiate where each event originated within the site.
dataTypeStringMust be set to "cash-management" to specify which data type the current event is.
endTimeNumber / StringEnd time of the event in either Unix time format milliseconds or ISO-8601 compliant format.
eventUniqueIdStringUnique ID which identifies the event in the originating software. Used for de-duplication.

The schema rejects the following characters: ! * ' ( ) ; : @ & = + $ , / ? % # [ ]

WARNING: Events sharing the same eventUniqueId will be upserted, meaning the latest data will overwrite the previous record.
itemsArrayThe list of items, actions or events processed in the event. Pass an empty array [] when there are no items.
schemaVersionStringMust be set to "1" to specify which version of the schema is being used for this event (e.g. "1", "2", etc).
siteExternalIdStringUnique location identifier within the customer's set of locations.
startTimeNumber / StringStart time of the event in either Unix time format milliseconds or ISO-8601 compliant format.

Optional Object Fields

FieldTypeDescription
acceptedCashDepositNumberCash amount accepted by the device.
cashActionStringType of cash movement. May be one of the following allowed values:

"STARTING_AMOUNT": Opening cash declared at the start of a shift.

"TILL_DELIVERY": Additional float (change) added to the till during a shift.

"REMOVE_TENDER": Counted cash removed from the till.

"TILL_DROP": Uncounted cash dropped into the floor safe.

"BANK_DROP": Cash moved from the safe to the bank.

"BANK_DELIVERY": Cash moved from the bank to the safe.

"INCOME_EXPENSE": Non-sale cash in or out of the till.

"TENDER_DECLARATION": Declared cash count without finalizing the shift.

"NO_SALE": Drawer opened without an associated transaction.

"CASH_IN": Generic cash added to the till.

"CASH_OUT": Generic cash removed from the till.
cashAmountNumberMonetary amount associated with the action.
cashDispensedNumberCash amount dispensed.
declaredCashDepositsNumberCash amount declared as deposited.
depositErrorBooleanWhether a deposit error occurred.
depositIdStringIdentifier of the deposit transaction.
dispenseIdStringIdentifier of the dispense transaction.
employeeIdStringUnique employee id to identify the employee associated with the event.
employeeNameStringThe name of the employee associated with the event.
eventTypeStringLegacy free-text event type. Superseded by cashAction / shiftAction, and retained for backwards compatibility.
notesStringAdditional notes or comments about the event.
rejectedCashDepositNumberCash amount rejected by the device.
safeIdStringIdentifier of the safe involved in the event.
servicingIdStringIdentifier of a device servicing event.
shiftActionStringShift-lifecycle state. May be one of the following allowed values:

"OPEN_SHIFT": Shift opened; register session started.

"BLIND_CLOSE_SHIFT": Shift parked without a full cash count.

"CLOSE_SHIFT": Shift finalized; totals and variance recorded.
shiftIdStringIdentifier of the shift the event belongs to.
statusStringStatus of the event.
tillIdStringIdentifier of the till / drawer involved in the event.

Required Item Object Fields

FieldTypeDescription
descriptionStringHuman-readable description of the item.
timeNumber / StringTime of the item in either Unix time format milliseconds or ISO-8601 compliant format.
typeStringItem type. For example: "PAYMENT" or "CHANGE_DUE".

Optional Item Object Fields

FieldTypeDescription
cardNumberLast4StringFor credit/debit/gift card payment/refund/void. Last four digits of the card number.
categoryStringUsed to track Item Category.
currencyStringCurrency code. For example: "USD".
denominationNumberDenomination of the counted cash. May be one of the following allowed values, or null:

0.01, 0.02, 0.05, 0.1, 0.2, 0.25, 0.5, 1, 2, 5, 10, 20, 50, 100, 200, 500, 1000, 2000, 5000, 10000
quantityNumberQuantity of the item.
skuStringSKU or other unique item identifier.
trayStringIdentifier of the drawer tray / compartment the counted cash belongs to (e.g. the till insert or coin tray).
unitPriceNumberPer unit price of the item.

JSON Example

{
  "dataType": "cash-management",
  "schemaVersion": "1",
  "startTime": "2026-06-16T14:32:00Z",
  "endTime": "2026-06-16T14:32:45Z",
  "siteExternalId": "123",
  "dataSourceId": "1",
  "eventUniqueId": "cm-93688-2026061614",
  "employeeId": "27",
  "employeeName": "MICHELLE",
  "cashAction": "TENDER_DECLARATION",
  "shiftId": "SHIFT-4471",
  "tillId": "TILL-02",
  "cashAmount": 340.00,
  "status": "COMPLETED",

  "items": [
    {
      "type": "PAYMENT",
      "description": "Twenty dollar bills",
      "quantity": 15,
      "unitPrice": 20,
      "denomination": 20,
      "currency": "USD",
      "tray": "INSERT",
      "time": "2026-06-16T14:32:30Z"
    },
    {
      "type": "PAYMENT",
      "description": "Quarters",
      "quantity": 160,
      "unitPrice": 0.25,
      "denomination": 0.25,
      "currency": "USD",
      "tray": "COIN",
      "time": "2026-06-16T14:32:40Z"
    }
  ]
}