Retail point of sale database schema

How an in-store point of sale is modelled: stores and registers, cashier shifts with opening float and closing count, sales with discounted lines, multi-tender payment, returns against the original sale, drawer movements and approved price overrides.

Retail POS ER diagram

Retail point of sale database schema n1 n1 n1 n1 n1 n1 n1 n1 n1 n1 n1 n1 n1 n1 n1 n1 n1 n1 n1 n1 11 n1 n1 stores idBIGINT codeVARCHAR nameVARCHAR address_lineVARCHAR currency_codeCHAR timezoneVARCHAR tax_rate_bpsINTEGER opened_atDATE registers idBIGINT store_idBIGINT codeVARCHAR device_serialVARCHAR has_cash_drawerTINYINT statusVARCHAR last_seen_atDATETIME employees idBIGINT store_idBIGINT staff_numberVARCHAR full_nameVARCHAR pin_hashVARCHAR roleVARCHAR activeTINYINT shifts idBIGINT register_idBIGINT employee_idBIGINT business_dateDATE opened_atDATETIME opening_float_min…INTEGER closed_atDATETIME counted_cash_minorINTEGER expected_cash_min…INTEGER variance_minorINTEGER statusVARCHAR products idBIGINT skuVARCHAR barcodeVARCHAR nameVARCHAR unit_price_minorINTEGER tax_rate_bpsINTEGER is_age_restrictedTINYINT sold_by_weightTINYINT activeTINYINT sales idBIGINT store_idBIGINT register_idBIGINT shift_idBIGINT receipt_numberVARCHAR business_dateDATE statusVARCHAR subtotal_minorINTEGER discount_minorINTEGER tax_minorINTEGER total_minorINTEGER currency_codeCHAR customer_referenceVARCHAR completed_atDATETIME sale_lines idBIGINT sale_idBIGINT line_numberINTEGER product_idBIGINT skuVARCHAR nameVARCHAR quantityDECIMAL unit_price_minorINTEGER discount_minorINTEGER discount_reasonVARCHAR tax_minorINTEGER total_minorINTEGER tenders idBIGINT sale_idBIGINT sequence_numberINTEGER tender_typeVARCHAR amount_minorINTEGER tendered_minorINTEGER change_minorINTEGER card_schemeVARCHAR card_last4CHAR auth_codeVARCHAR terminal_referenceVARCHAR captured_atDATETIME returns idBIGINT original_sale_idBIGINT store_idBIGINT register_idBIGINT shift_idBIGINT receipt_numberVARCHAR business_dateDATE reasonVARCHAR refund_total_minorINTEGER approved_byBIGINT processed_atDATETIME return_lines idBIGINT return_idBIGINT sale_line_idBIGINT skuVARCHAR quantityDECIMAL refund_minorINTEGER restockTINYINT cash_movements idBIGINT shift_idBIGINT movement_typeVARCHAR amount_minorINTEGER reasonVARCHAR performed_byBIGINT witnessed_byBIGINT occurred_atDATETIME price_overrides idBIGINT sale_line_idBIGINT original_price_mi…INTEGER new_price_minorINTEGER reason_codeVARCHAR noteVARCHAR requested_byBIGINT approved_byBIGINT approved_atDATETIME

Related database schemas