A computer implemented method for determining the change in the contents of a cash tray in a cash drawer over a transaction, the method comprising measuring at least a first force signal and a second force signal, the first force signal representative of the force exerted by the cash tray at a first location, and the second force signal representative of the force exerted by the cash tray at a second location the method further comprising, during the transaction, whilst the cash drawer is open: determining an occurrence of one or more cash token events (606a,b,c) occurring in the transaction based on analysis of the measured force signals each event (606a,b,c) comprising the addition or removal of one or more cash tokens (600a,b,c) from the cash tray; and for each cash token event (606a,b,c): determining a measured weight change of the cash tray for the event based on analysis of the measured force signals generating a plurality of possible event combinations based on all possible combinations of cash tokens (600a,b,c) that can be added to and/or removed from the tray, each possible event combination including one or more cash token (600a,b,c); and generating an event combination probability for each possible event combination, the event combination probability being the probability that that combination is the correct combination of cash tokens (600a,b,c) added and/or removed from the tray during the event, wherein generating an event combination probability for each possible event combination comprises: determining an expected weight change of the cash tray for the event combination; comparing the expected weight change to the measured weight change; and based on the comparison, determining a probability that the event combination is correct; the method further comprising, after the transaction is complete: determining the total change in weight of the cash tray in the transaction based on analysis of the measured force signals generating a plurality of possible transaction combinations of cash tokens (600a,b,c) added and/or removed from the cash tray in the transaction, based on all possible combinations of the event combinations for all events occurring in the transaction; for each transaction combination, generating a transaction combination probability based on one or more of: the event combination probabilities and the total weight change; and identifying the transaction combination with the highest transaction combination probability as the change in contents of the cash tray. determining an occurrence of one or more cash token events (606a,b,c) occurring in the transaction based on analysis of the measured force signals each event (606a,b,c) comprising the addition or removal of one or more cash tokens (600a,b,c) from the cash tray; and for each cash token event (606a,b,c): determining a measured weight change of the cash tray for the event based on analysis of the measured force signals generating a plurality of possible event combinations based on all possible combinations of cash tokens (600a,b,c) that can be added to and/or removed from the tray, each possible event combination including one or more cash token (600a,b,c); and generating an event combination probability for each possible event combination, the event combination probability being the probability that that combination is the correct combination of cash tokens (600a,b,c) added and/or removed from the tray during the event, wherein generating an event combination probability for each possible event combination comprises: determining an expected weight change of the cash tray for the event combination; comparing the expected weight change to the measured weight change; and based on the comparison, determining a probability that the event combination is correct; determining a measured weight change of the cash tray for the event based on analysis of the measured force signals generating a plurality of possible event combinations based on all possible combinations of cash tokens (600a,b,c) that can be added to and/or removed from the tray, each possible event combination including one or more cash token (600a,b,c); and generating an event combination probability for each possible event combination, the event combination probability being the probability that that combination is the correct combination of cash tokens (600a,b,c) added and/or removed from the tray during the event, wherein generating an event combination probability for each possible event combination comprises: determining an expected weight change of the cash tray for the event combination; comparing the expected weight change to the measured weight change; and based on the comparison, determining a probability that the event combination is correct; determining an expected weight change of the cash tray for the event combination; comparing the expected weight change to the measured weight change; and based on the comparison, determining a probability that the event combination is correct; determining the total change in weight of the cash tray in the transaction based on analysis of the measured force signals generating a plurality of possible transaction combinations of cash tokens (600a,b,c) added and/or removed from the cash tray in the transaction, based on all possible combinations of the event combinations for all events occurring in the transaction; for each transaction combination, generating a transaction combination probability based on one or more of: the event combination probabilities and the total weight change; and identifying the transaction combination with the highest transaction combination probability as the change in contents of the cash tray.