# Database Schema Draft - QRIS Soundbox Platform v1 ## 1. merchants - id - merchant_code - legal_name - brand_name - status - onboarding_status - fee_profile_id - settlement_account_reference - settlement_account_type - payout_mode - created_at - updated_at ## 2. merchant_documents - id - merchant_id - document_type - document_url - verification_status - created_at ## 3. outlets - id - merchant_id - outlet_code - name - address - status - created_at - updated_at ## 4. terminals - id - outlet_id - terminal_code - qr_mode - partner_reference - status - created_at - updated_at ## 5. devices - id - device_code - serial_number - vendor - model - firmware_version - communication_mode - capability_profile_json - auth_method - status - last_seen_at - created_at - updated_at ## 6. device_bindings - id - device_id - merchant_id - outlet_id - terminal_id - active_flag - bound_at - unbound_at ## 7. device_heartbeats - id - device_id - received_at - network_strength - battery_level - firmware_version - state - payload_json ## 8. device_configs - id - device_id - config_version - config_json - active_flag - created_at ## 9. device_commands - id - device_id - command_name - command_payload_json - command_status - requested_by - requested_at - ack_at ## 10. transactions - id - transaction_code - merchant_id - outlet_id - terminal_id - device_id - qr_mode - initiation_mode - partner_reference - amount - currency - status - created_at - paid_at - expired_at - updated_at ## 11. transaction_events - id - transaction_id - event_type - source - payload_json - created_at ## 12. notifications - id - transaction_id - device_id - delivery_channel - payload_type - delivery_status - retry_count - ack_status - sent_at - ack_at ## 13. ledger_entries - id - merchant_id - transaction_id - entry_type - amount - direction - balance_effect - created_at ## 14. settlements - id - merchant_id - settlement_period_start - settlement_period_end - gross_amount - fee_amount - net_amount - payout_status - payout_reference - created_at - paid_at ## 15. settlement_items - id - settlement_id - transaction_id - gross_amount - fee_amount - net_amount ## 16. payout_attempts - id - settlement_id - partner_reference - amount - status - response_payload_json - attempted_at ## 17. reconciliation_records - id - reconciliation_type - entity_type - entity_id - external_reference - internal_amount - external_amount - status - notes - created_at ## 18. audit_logs - id - actor_type - actor_id - action - entity_type - entity_id - before_json - after_json - source_ip - created_at ## 19. users - id - name - email - password_hash - role_id - status - created_at ## 20. roles - id - name - permissions_json - created_at ## 21. Index penting - transactions(partner_reference) - transactions(merchant_id, created_at) - notifications(device_id, delivery_status) - device_heartbeats(device_id, received_at) - device_bindings(device_id, active_flag) - settlements(merchant_id, payout_status) - ledger_entries(merchant_id, created_at)