2026-05-05 10:11:49 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 10:11:49 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 10:11:49 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-05 10:11:49 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 10:11:49 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 10:11:49 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 10:11:49 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-05 10:11:49 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-05 10:14:05 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-05 10:14:05 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 10:14:05 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 10:14:05 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-05 10:14:05 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 10:14:05 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 10:14:05 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 10:14:05 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-05 10:14:05 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-05 10:14:05 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-05 10:14:35 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-05 10:14:35 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 10:14:35 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 10:14:35 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-05 10:14:35 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 10:14:35 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 10:14:35 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 10:14:35 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-05 10:14:35 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-05 10:14:35 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-05 10:14:59 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-05 10:14:59 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 10:14:59 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 10:14:59 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-05 10:14:59 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 10:14:59 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 10:14:59 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 10:14:59 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-05 10:14:59 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-05 10:14:59 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-05 10:32:30 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-05 10:32:30 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 10:32:31 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 10:32:31 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-05 10:32:31 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 10:32:31 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 10:32:31 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 10:32:31 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-05 10:32:31 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-05 10:32:31 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-05 10:34:47 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-05 10:34:47 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 10:34:47 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 10:34:47 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-05 10:34:47 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 10:34:47 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 10:34:47 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 10:34:47 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-05 10:34:47 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-05 10:34:47 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-05 10:45:35 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-05 10:45:35 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 10:45:35 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 10:45:35 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-05 10:45:35 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 10:45:35 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 10:45:35 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 10:45:35 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-05 10:45:35 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-05 10:45:35 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-05 10:54:01 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-05 10:54:01 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 10:54:01 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 10:54:01 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-05 10:54:01 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 10:54:01 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 10:54:01 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 10:54:01 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-05 10:54:01 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-05 10:54:01 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-05 10:56:53 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-05 10:56:53 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 10:56:53 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 10:56:53 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-05 10:56:53 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 10:56:53 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 10:56:53 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 10:56:53 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-05 10:56:53 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-05 10:56:53 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-05 11:16:54 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-05 11:16:54 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 11:16:54 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 11:16:54 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-05 11:16:54 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 11:16:54 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 11:16:54 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 11:16:54 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-05 11:16:54 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-05 11:16:54 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-05 11:18:08 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-05 11:18:08 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 11:18:08 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 11:18:08 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-05 11:18:08 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 11:18:08 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 11:18:08 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 11:18:08 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-05 11:18:08 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-05 11:18:08 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-05 11:31:04 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-05 11:31:04 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 11:31:04 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 11:31:04 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-05 11:31:04 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 11:31:04 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 11:31:04 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 11:31:04 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-05 11:31:04 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-05 11:31:04 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-05 11:41:13 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-05 11:41:13 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 11:41:13 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 11:41:13 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-05 11:41:13 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 11:41:13 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 11:41:13 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 11:41:13 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-05 11:41:13 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-05 11:41:13 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-05 11:47:30 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-05 11:47:30 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 11:47:30 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 11:47:30 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-05 11:47:30 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 11:47:30 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 11:47:30 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 11:47:30 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-05 11:47:30 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-05 11:47:30 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-05 11:48:25 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-05 11:48:25 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 11:48:25 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 11:48:25 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-05 11:48:25 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 11:48:25 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 11:48:25 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 11:48:25 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-05 11:48:25 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-05 11:48:25 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-05 11:52:15 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-05 11:52:15 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 11:52:15 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 11:52:15 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-05 11:52:15 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 11:52:15 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 11:52:15 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 11:52:15 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-05 11:52:15 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-05 11:52:15 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-05 12:01:14 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-05 12:01:14 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 12:01:14 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 12:01:14 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-05 12:01:15 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 12:01:15 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 12:01:15 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 12:01:15 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-05 12:01:15 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-05 12:01:15 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-05 14:40:03 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-05 14:40:03 - INFO --> Access token expired for store: pc00, refreshing... 2026-05-05 14:40:03 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-05-05 14:43:39 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-05 14:43:39 - INFO --> Access token expired for store: pc00, refreshing... 2026-05-05 14:43:39 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-05-05 14:43:49 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-05 14:43:49 - INFO --> Access token expired for store: pc00, refreshing... 2026-05-05 14:43:49 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-05-05 14:43:49 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-05 14:43:50 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 14:43:50 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 14:43:50 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-05 14:43:50 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 14:43:50 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 14:43:50 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 14:43:50 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-05 14:43:50 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-05 14:43:50 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-05 14:53:43 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-05 14:53:43 - INFO --> Access token expired for store: pc00, refreshing... 2026-05-05 14:53:43 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-05-05 14:53:53 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-05 14:53:53 - INFO --> Access token expired for store: pc00, refreshing... 2026-05-05 14:53:54 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-05-05 14:53:54 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-05 14:53:54 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 14:53:54 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 14:53:54 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-05 14:53:54 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 14:53:54 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 14:53:54 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 14:53:54 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-05 14:53:54 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-05 14:53:54 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-05 14:55:17 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-05 14:55:17 - INFO --> Access token expired for store: pc00, refreshing... 2026-05-05 14:55:18 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-05-05 14:55:18 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-05 14:55:18 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 14:55:18 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 14:55:18 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-05 14:55:18 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 14:55:18 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 14:55:18 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 14:55:18 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-05 14:55:18 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-05 14:55:18 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-05 18:21:48 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-05 18:21:48 - INFO --> Access token expired for store: pc00, refreshing... 2026-05-05 18:21:49 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-05-05 18:21:49 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-05 18:21:49 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 18:21:49 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 18:21:49 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-05 18:21:49 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 18:21:49 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 18:21:49 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 18:21:49 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-05 18:21:49 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-05 18:21:49 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-05 19:11:25 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-05 19:11:25 - INFO --> Access token expired for store: pc00, refreshing... 2026-05-05 19:11:25 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-05-05 19:11:25 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-05 19:11:25 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 19:11:25 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 19:11:25 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-05 19:11:25 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 19:11:25 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 19:11:25 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 19:11:25 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-05 19:11:25 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-05 19:11:25 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-05 19:13:38 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-05 19:13:38 - INFO --> Access token expired for store: pc00, refreshing... 2026-05-05 19:13:38 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-05-05 19:13:38 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-05 19:13:39 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 19:13:39 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 19:13:39 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-05 19:13:39 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 19:13:39 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 19:13:39 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 19:13:39 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-05 19:13:39 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-05 19:13:39 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-05 19:32:40 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-05 19:32:40 - INFO --> Access token expired for store: pc00, refreshing... 2026-05-05 19:32:40 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-05-05 19:32:40 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-05 19:32:40 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 19:32:40 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 19:32:40 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-05 19:32:40 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 19:32:40 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 19:32:40 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-05 19:32:40 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-05 19:32:40 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-05 19:32:40 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-06 11:17:04 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-06 11:17:04 - INFO --> Access token expired for store: pc00, refreshing... 2026-05-06 11:17:04 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-05-06 11:17:04 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-06 11:17:04 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 11:17:04 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 11:17:04 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-06 11:17:04 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 11:17:04 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 11:17:04 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 11:17:04 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-06 11:17:04 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-06 11:17:04 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-06 11:29:40 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-06 11:29:40 - INFO --> Access token expired for store: pc00, refreshing... 2026-05-06 11:29:41 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-05-06 11:29:41 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-06 11:29:41 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 11:29:41 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 11:29:41 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-06 11:29:41 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 11:29:41 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 11:29:41 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 11:29:41 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-06 11:29:41 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-06 11:29:41 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-06 11:31:23 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-06 11:31:23 - INFO --> Access token expired for store: pc00, refreshing... 2026-05-06 11:31:23 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-05-06 11:31:23 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-06 11:31:23 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 11:31:23 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 11:31:23 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-06 11:31:23 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 11:31:23 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 11:31:23 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 11:31:23 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-06 11:31:23 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-06 11:31:23 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-06 11:36:13 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-06 11:36:13 - INFO --> Access token expired for store: pc00, refreshing... 2026-05-06 11:36:14 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-05-06 11:36:14 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-06 11:36:14 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 11:36:14 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 11:36:14 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-06 11:36:14 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 11:36:14 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 11:36:14 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 11:36:14 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-06 11:36:14 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-06 11:36:14 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-06 11:43:44 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-06 11:43:44 - INFO --> Access token expired for store: pc00, refreshing... 2026-05-06 11:43:44 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-05-06 11:43:44 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-06 11:43:44 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 11:43:44 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 11:43:44 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-06 11:43:44 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 11:43:44 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 11:43:44 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 11:43:44 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-06 11:43:44 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-06 11:43:44 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-06 11:46:30 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-06 11:46:30 - INFO --> Access token expired for store: pc00, refreshing... 2026-05-06 11:46:30 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-05-06 11:46:30 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-06 11:46:30 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 11:46:30 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 11:46:30 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-06 11:46:30 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 11:46:30 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 11:46:30 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 11:46:30 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-06 11:46:30 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-06 11:46:30 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-06 11:46:39 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-06 11:46:39 - INFO --> Access token expired for store: pc00, refreshing... 2026-05-06 11:46:40 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-05-06 11:46:40 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-06 11:46:40 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 11:46:40 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 11:46:40 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-06 11:46:40 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 11:46:40 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 11:46:40 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 11:46:40 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-06 11:46:40 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-06 11:46:40 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-06 11:48:09 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-06 11:48:09 - INFO --> Access token expired for store: pc00, refreshing... 2026-05-06 11:48:10 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-05-06 11:48:10 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-06 11:48:10 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 11:48:10 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 11:48:10 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-06 11:48:10 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 11:48:10 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 11:48:10 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 11:48:10 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-06 11:48:10 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-06 11:48:10 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-06 11:50:24 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-06 11:50:24 - INFO --> Access token expired for store: pc00, refreshing... 2026-05-06 11:50:24 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-05-06 11:50:24 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-06 11:50:24 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 11:50:24 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 11:50:24 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-06 11:50:24 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 11:50:24 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 11:50:24 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 11:50:24 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-06 11:50:24 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-06 11:50:24 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-06 12:40:01 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-06 12:40:01 - INFO --> Access token expired for store: pc00, refreshing... 2026-05-06 12:40:01 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-05-06 12:40:01 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-06 12:40:02 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 12:40:02 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 12:40:02 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-06 12:40:02 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 12:40:02 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 12:40:02 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 12:40:02 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-06 12:40:02 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-06 12:40:02 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-06 12:54:05 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-06 12:54:05 - INFO --> Access token expired for store: pc00, refreshing... 2026-05-06 12:54:06 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-05-06 12:54:06 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-06 12:54:06 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 12:54:06 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 12:54:06 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-06 12:54:06 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 12:54:06 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 12:54:06 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 12:54:06 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-06 12:54:06 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-06 12:54:06 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-06 15:07:24 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-06 15:07:24 - INFO --> Access token expired for store: pc00, refreshing... 2026-05-06 15:07:25 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-05-06 15:07:25 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-06 15:07:25 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 15:07:25 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 15:07:25 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-06 15:07:25 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 15:07:25 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 15:07:25 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-06 15:07:25 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-06 15:07:25 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-06 15:07:25 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-07 7:39:40 - ERROR --> Failed to stage entry: SQL mismatch for PDO::prepare call 0 Failed asserting that 'SELECT * FROM qb_account_mapping WHERE isActive = 1 AND qbAccountId IS NOT NULL' [ASCII](length: 79) contains "SELECT id, status FROM qb_staged_entries" [ASCII](length: 40). 2026-05-07 7:39:40 - ERROR --> Failed to stage entry: SQL mismatch for PDO::prepare call 0 Failed asserting that 'SELECT * FROM qb_account_mapping WHERE isActive = 1 AND qbAccountId IS NOT NULL' [ASCII](length: 79) contains "SELECT id, status FROM qb_staged_entries" [ASCII](length: 40). 2026-05-07 7:39:40 - ERROR --> Failed to stage entry: SQL mismatch for PDO::prepare call 0 Failed asserting that 'SELECT * FROM qb_account_mapping WHERE isActive = 1 AND qbAccountId IS NOT NULL' [ASCII](length: 79) contains "SELECT id, status FROM qb_staged_entries" [ASCII](length: 40). 2026-05-07 7:39:40 - ERROR --> Failed to stage entry: SQL mismatch for PDO::prepare call 0 Failed asserting that 'SELECT * FROM qb_account_mapping WHERE isActive = 1 AND qbAccountId IS NOT NULL' [ASCII](length: 79) contains "SELECT id, status FROM qb_staged_entries" [ASCII](length: 40). 2026-05-07 7:39:40 - ERROR --> Failed to stage entry: SQL mismatch for PDO::prepare call 0 Failed asserting that 'SELECT * FROM qb_account_mapping WHERE isActive = 1 AND qbAccountId IS NOT NULL' [ASCII](length: 79) contains "SELECT id, status FROM qb_staged_entries" [ASCII](length: 40). 2026-05-07 7:39:40 - ERROR --> Failed to stage entry: SQL mismatch for PDO::prepare call 0 Failed asserting that 'SELECT * FROM qb_account_mapping WHERE isActive = 1 AND qbAccountId IS NOT NULL' [ASCII](length: 79) contains "SELECT id, status FROM qb_staged_entries" [ASCII](length: 40). 2026-05-07 7:39:40 - ERROR --> Failed to stage entry: SQL mismatch for PDO::prepare call 0 Failed asserting that 'SELECT * FROM qb_account_mapping WHERE isActive = 1 AND qbAccountId IS NOT NULL' [ASCII](length: 79) contains "SELECT id, status FROM qb_staged_entries" [ASCII](length: 40). 2026-05-07 7:39:41 - ERROR --> Failed to stage entry: SQL mismatch for PDO::prepare call 1 Failed asserting that 'SELECT * FROM qb_account_mapping WHERE isActive = 1 AND qbAccountId IS NOT NULL' [ASCII](length: 79) contains "SELECT id, status FROM qb_staged_entries" [ASCII](length: 40). 2026-05-07 7:39:41 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-07 7:39:41 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-07 7:39:41 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-07 7:41:59 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 7:41:59 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 7:41:59 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-07 7:41:59 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 7:41:59 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 7:41:59 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-07 7:41:59 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-07 7:41:59 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 7:41:59 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 7:41:59 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-07 7:41:59 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-07 7:41:59 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-07 7:42:06 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-07 7:42:06 - INFO --> Access token expired for store: pc00, refreshing... 2026-05-07 7:42:06 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-05-07 7:42:06 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-07 7:42:07 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 7:42:07 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 7:42:07 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-07 7:42:07 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 7:42:07 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 7:42:07 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-07 7:42:07 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-07 7:42:07 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 7:42:07 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 7:42:07 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-07 7:42:07 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-07 7:42:07 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-07 7:42:13 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-07 7:42:13 - INFO --> Access token expired for store: pc00, refreshing... 2026-05-07 7:42:13 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-05-07 7:42:13 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-07 7:42:13 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 7:42:13 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 7:42:13 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-07 7:42:13 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 7:42:13 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 7:42:13 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-07 7:42:13 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-07 7:42:13 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 7:42:13 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 7:42:13 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-07 7:42:13 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-07 7:42:13 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-07 7:43:59 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 7:43:59 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 7:43:59 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-07 7:43:59 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 7:43:59 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 7:43:59 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-07 7:43:59 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-07 7:43:59 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 7:43:59 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 7:43:59 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-07 7:43:59 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-07 7:43:59 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-07 14:40:27 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-07 14:40:27 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-07 14:40:37 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-07 14:40:37 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-07 14:40:46 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-07 14:40:46 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-07 14:41:11 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-07 14:41:11 - INFO --> Access token expired for store: pc00, refreshing... 2026-05-07 14:41:12 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-05-07 14:41:12 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-07 14:41:12 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-07 14:41:12 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-07 14:41:12 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 14:41:12 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 14:41:12 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-07 14:41:12 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 14:41:12 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 14:41:12 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-07 14:41:12 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-07 14:41:12 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 14:41:12 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 14:41:12 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-07 14:41:12 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-07 14:41:12 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-07 14:59:18 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-07 14:59:31 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-07 14:59:41 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-07 14:59:41 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-07 14:59:41 - INFO --> Access token expired for store: pc00, refreshing... 2026-05-07 14:59:41 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-05-07 14:59:42 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-07 14:59:42 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-07 14:59:42 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-07 14:59:42 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 14:59:42 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 14:59:42 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-07 14:59:42 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 14:59:42 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 14:59:42 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-07 14:59:42 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-07 14:59:42 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 14:59:42 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 14:59:42 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-07 14:59:42 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-07 14:59:42 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-07 17:24:38 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 17:24:38 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 17:24:38 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-07 17:24:38 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 17:24:38 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 17:24:38 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-07 17:24:38 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-07 17:24:38 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 17:24:38 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 17:24:38 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-07 17:24:38 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-07 17:24:38 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-07 17:25:30 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 17:25:30 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 17:25:30 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-07 17:25:30 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 17:25:31 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 17:25:31 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-07 17:25:31 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-07 17:25:31 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 17:25:31 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 17:25:31 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-07 17:25:31 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-07 17:25:31 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-07 17:25:31 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 17:25:31 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 17:25:31 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 17:29:38 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 17:29:38 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 17:29:38 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-07 17:29:38 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 17:29:38 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 17:29:38 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-07 17:29:38 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-07 17:29:38 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 17:29:38 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 17:29:38 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-07 17:29:38 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-07 17:29:38 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-07 17:29:38 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 17:29:38 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 17:29:38 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 17:30:00 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 17:30:00 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 17:30:00 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-07 17:30:00 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 17:30:00 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 17:30:00 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-07 17:30:00 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-07 17:30:00 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 17:30:00 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 17:30:00 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-07 17:30:00 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-07 17:30:00 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-07 17:30:00 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 17:30:00 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 17:30:00 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 17:43:45 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 17:43:45 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 17:43:45 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-07 17:43:45 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 17:43:45 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 17:43:45 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-07 17:43:45 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-07 17:43:45 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 17:43:45 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 17:43:45 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-07 17:43:45 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-07 17:43:45 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-07 17:43:45 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 17:43:45 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-07 17:43:45 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-14 11:24:04 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-14 11:24:04 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-14 11:24:04 - INFO --> Access token expired for store: pc00, refreshing... 2026-05-14 11:24:04 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-05-14 11:24:04 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-14 11:24:04 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-14 11:24:04 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-14 11:24:04 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-14 11:24:04 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-14 11:24:04 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-14 11:24:04 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-14 11:24:04 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-14 11:24:04 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-14 11:24:04 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-14 11:24:04 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-14 11:24:04 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-14 11:24:04 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-14 11:24:04 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-14 11:24:04 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-14 11:24:04 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-14 11:24:04 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-14 11:24:04 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-14 12:01:29 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-14 12:01:29 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-14 12:01:29 - INFO --> Access token expired for store: pc00, refreshing... 2026-05-14 12:01:29 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-05-14 12:01:29 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-14 12:01:29 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-14 12:01:29 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-14 12:01:29 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-14 12:01:29 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-14 12:01:29 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-14 12:01:29 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-14 12:01:29 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-14 12:01:29 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-14 12:01:29 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-14 12:01:29 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-14 12:01:29 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-14 12:01:29 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-14 12:01:29 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-14 12:01:29 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-14 12:01:29 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-14 12:01:29 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-14 12:01:29 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-14 12:02:49 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-14 12:02:49 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-14 12:02:49 - INFO --> Access token expired for store: pc00, refreshing... 2026-05-14 12:02:49 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-05-14 12:02:50 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-14 12:02:50 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-14 12:02:50 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-14 12:02:50 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-14 12:02:50 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-14 12:02:50 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-14 12:02:50 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-14 12:02:50 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-14 12:02:50 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-14 12:02:50 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-14 12:02:50 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-14 12:02:50 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-14 12:02:50 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-14 12:02:50 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-14 12:02:50 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-14 12:02:50 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-14 12:02:50 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-14 12:02:50 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-14 12:04:08 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-14 12:04:08 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-14 12:04:08 - INFO --> Access token expired for store: pc00, refreshing... 2026-05-14 12:04:08 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-05-14 12:04:08 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-14 12:04:08 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-14 12:04:08 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-14 12:04:08 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-14 12:04:08 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-14 12:04:08 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-14 12:04:08 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-14 12:04:08 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-14 12:04:08 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-14 12:04:08 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-14 12:04:08 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-14 12:04:08 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-14 12:04:08 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-14 12:04:08 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-14 12:04:08 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-14 12:04:08 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-14 12:04:08 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-14 12:04:08 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-15 14:54:42 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-05-15 14:54:50 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-05-15 14:54:50 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-15 14:54:50 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-05-15 14:54:50 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-05-15 14:55:08 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-05-15 14:55:08 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-05-15 14:55:08 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-05-15 16:15:50 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-15 16:15:50 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-15 16:15:50 - INFO --> Access token expired for store: pc00, refreshing... 2026-05-15 16:15:50 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-05-15 16:15:50 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-15 16:15:50 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-15 16:15:50 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-15 16:15:50 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-05-15 16:15:50 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-05-15 16:15:50 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-05-15 16:15:50 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-05-15 16:15:50 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-05-15 16:15:50 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-05-15 16:15:50 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-05-15 16:15:50 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-05-15 16:15:50 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-05-15 16:15:50 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-05-15 16:15:50 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-15 16:15:50 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-15 16:15:50 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-15 16:15:50 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-15 16:15:50 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-15 16:15:50 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-15 16:15:50 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-15 16:15:50 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-15 16:15:50 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-15 16:15:50 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-15 16:15:50 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-15 16:15:50 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-15 16:15:50 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-15 16:15:50 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-15 16:15:50 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-18 14:14:57 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-18 14:14:57 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-18 14:14:57 - INFO --> Access token expired for store: pc00, refreshing... 2026-05-18 14:14:57 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-05-18 14:14:58 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-18 14:14:58 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-18 14:14:58 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-18 14:14:58 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-18 14:14:58 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-18 14:14:58 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-18 14:14:58 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-18 14:14:58 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-18 14:14:58 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-18 14:14:58 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-18 14:14:58 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-18 14:14:58 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-18 14:14:58 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-18 14:14:58 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-18 14:14:58 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-18 14:14:58 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-18 14:14:58 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-18 14:14:58 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 11:48:05 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-19 11:48:05 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-19 11:48:05 - INFO --> Access token expired for store: pc00, refreshing... 2026-05-19 11:48:06 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-05-19 11:48:06 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-05-19 11:48:06 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-05-19 11:48:06 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-19 11:48:06 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 11:48:06 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-05-19 11:48:06 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-05-19 11:48:06 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-05-19 11:48:06 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 11:48:06 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-05-19 11:48:06 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-05-19 11:48:06 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-05-19 11:48:06 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-05-19 11:48:06 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-05-19 11:48:06 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-19 11:48:06 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 11:48:06 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 11:48:06 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 11:48:06 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-05-19 11:48:06 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-19 11:48:06 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-19 11:48:06 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-05-19 11:48:06 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-05-19 11:48:06 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-05-19 11:48:06 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-05-19 11:48:06 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-05-19 11:48:06 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-05-19 11:48:06 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-05-19 11:48:06 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-05-19 11:48:06 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-05-19 11:48:06 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-05-19 11:48:06 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-05-19 11:48:06 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 11:48:06 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-05-19 11:48:06 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 11:48:06 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-05-19 11:48:06 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 11:48:06 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-05-19 11:48:06 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 11:48:06 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 11:48:06 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 11:48:06 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 11:48:06 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 11:48:06 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-19 11:48:06 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 11:48:06 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 11:48:06 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 11:48:06 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 11:48:06 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 11:48:06 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-19 11:48:06 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 11:48:06 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-19 11:48:06 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 11:48:06 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 11:48:06 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 11:48:06 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 11:48:06 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-19 11:48:06 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-19 11:48:06 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-19 11:48:06 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 11:48:06 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 11:48:06 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 11:48:06 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 12:06:54 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-19 12:06:54 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-19 12:06:54 - INFO --> Access token expired for store: pc00, refreshing... 2026-05-19 12:06:54 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-05-19 12:06:55 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-05-19 12:06:55 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-05-19 12:06:55 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-19 12:06:55 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:06:55 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-05-19 12:06:55 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-05-19 12:06:55 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-05-19 12:06:55 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:06:55 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-05-19 12:06:55 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-05-19 12:06:55 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-05-19 12:06:55 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-05-19 12:06:55 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-05-19 12:06:55 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-19 12:06:55 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:06:55 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:06:55 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:06:55 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-05-19 12:06:55 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-19 12:06:55 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-19 12:06:55 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-05-19 12:06:55 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-05-19 12:06:55 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-05-19 12:06:55 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-05-19 12:06:55 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-05-19 12:06:55 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-05-19 12:06:55 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-05-19 12:06:55 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-05-19 12:06:55 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-05-19 12:06:55 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-05-19 12:06:55 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-05-19 12:06:55 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:06:55 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-05-19 12:06:55 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:06:55 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-05-19 12:06:55 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:06:55 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-05-19 12:06:55 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:06:55 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 12:06:55 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:06:55 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 12:06:55 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:06:55 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-19 12:06:55 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:06:55 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 12:06:55 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:06:55 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 12:06:55 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:06:55 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-19 12:06:55 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:06:55 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-19 12:06:55 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:06:55 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 12:06:55 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:06:55 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 12:06:55 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-19 12:06:55 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-19 12:06:55 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-19 12:06:55 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 12:06:55 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 12:06:55 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:06:55 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 12:10:35 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-19 12:10:35 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-19 12:10:35 - INFO --> Access token expired for store: pc00, refreshing... 2026-05-19 12:10:35 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-05-19 12:10:35 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-05-19 12:10:35 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-05-19 12:10:35 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-19 12:10:35 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:10:35 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-05-19 12:10:35 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-05-19 12:10:35 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-05-19 12:10:35 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:10:35 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-05-19 12:10:35 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-05-19 12:10:35 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-05-19 12:10:35 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-05-19 12:10:35 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-05-19 12:10:35 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-19 12:10:36 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:10:36 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:10:36 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:10:36 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-05-19 12:10:36 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-19 12:10:36 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-19 12:10:36 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-05-19 12:10:36 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-05-19 12:10:36 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-05-19 12:10:36 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-05-19 12:10:36 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-05-19 12:10:36 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-05-19 12:10:36 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-05-19 12:10:36 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-05-19 12:10:36 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-05-19 12:10:36 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-05-19 12:10:36 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-05-19 12:10:36 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:10:36 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-05-19 12:10:36 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:10:36 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-05-19 12:10:36 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:10:36 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-05-19 12:10:36 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:10:36 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 12:10:36 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:10:36 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 12:10:36 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:10:36 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-19 12:10:36 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:10:36 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 12:10:36 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:10:36 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 12:10:36 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:10:36 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-19 12:10:36 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:10:36 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-19 12:10:36 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:10:36 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 12:10:36 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:10:36 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 12:10:36 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-19 12:10:36 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-19 12:10:36 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-19 12:10:36 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 12:10:36 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 12:10:36 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:10:36 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 12:15:03 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-19 12:15:03 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-19 12:15:03 - INFO --> Access token expired for store: pc00, refreshing... 2026-05-19 12:15:04 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-05-19 12:15:04 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-05-19 12:15:04 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-05-19 12:15:04 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-19 12:15:04 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:15:04 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-05-19 12:15:04 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-05-19 12:15:04 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-05-19 12:15:04 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:15:04 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-05-19 12:15:04 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-05-19 12:15:04 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-05-19 12:15:04 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-05-19 12:15:04 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-05-19 12:15:04 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-19 12:15:04 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:15:04 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:15:04 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:15:04 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-05-19 12:15:04 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-19 12:15:04 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-19 12:15:04 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-05-19 12:15:04 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-05-19 12:15:04 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-05-19 12:15:04 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-05-19 12:15:04 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-05-19 12:15:04 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-05-19 12:15:04 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-05-19 12:15:04 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-05-19 12:15:04 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-05-19 12:15:04 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-05-19 12:15:04 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-05-19 12:15:04 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:15:04 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-05-19 12:15:04 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:15:04 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-05-19 12:15:04 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:15:04 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-05-19 12:15:04 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:15:04 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 12:15:04 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:15:04 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 12:15:04 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:15:04 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-19 12:15:04 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:15:04 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 12:15:04 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:15:04 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 12:15:04 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:15:04 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-19 12:15:04 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:15:04 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-19 12:15:04 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:15:04 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 12:15:04 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:15:04 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 12:15:04 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-19 12:15:04 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-19 12:15:04 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-19 12:15:04 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 12:15:04 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 12:15:04 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:15:04 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 12:16:30 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-19 12:16:30 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-19 12:16:30 - INFO --> Access token expired for store: pc00, refreshing... 2026-05-19 12:16:30 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-05-19 12:16:30 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-05-19 12:16:30 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-05-19 12:16:30 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-19 12:16:30 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:16:30 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-05-19 12:16:30 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-05-19 12:16:30 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-05-19 12:16:30 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:16:30 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-05-19 12:16:30 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-05-19 12:16:30 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-05-19 12:16:30 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-05-19 12:16:30 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-05-19 12:16:30 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-19 12:16:30 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:16:30 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:16:30 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:16:31 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-05-19 12:16:31 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-19 12:16:31 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-19 12:16:31 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-05-19 12:16:31 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-05-19 12:16:31 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-05-19 12:16:31 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-05-19 12:16:31 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-05-19 12:16:31 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-05-19 12:16:31 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-05-19 12:16:31 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-05-19 12:16:31 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-05-19 12:16:31 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-05-19 12:16:31 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-05-19 12:16:31 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:16:31 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-05-19 12:16:31 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:16:31 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-05-19 12:16:31 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:16:31 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-05-19 12:16:31 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:16:31 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 12:16:31 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:16:31 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 12:16:31 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:16:31 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-19 12:16:31 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:16:31 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 12:16:31 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:16:31 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 12:16:31 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:16:31 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-19 12:16:31 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:16:31 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-19 12:16:31 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:16:31 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 12:16:31 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:16:31 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 12:16:31 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-19 12:16:31 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-19 12:16:31 - WARN --> QB_ENCRYPTION_KEY not configured - tokens will not be encrypted at rest 2026-05-19 12:16:31 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 12:16:31 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 12:16:31 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:16:31 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 12:44:16 - INFO --> Access token expired for store: pc00, refreshing... 2026-05-19 12:44:17 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-05-19 12:44:17 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-05-19 12:44:17 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-05-19 12:44:17 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-19 12:44:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:44:17 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-05-19 12:44:17 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-05-19 12:44:17 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-05-19 12:44:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:44:17 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-05-19 12:44:17 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-05-19 12:44:17 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-05-19 12:44:17 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-05-19 12:44:17 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-05-19 12:44:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:44:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:44:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:44:17 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-05-19 12:44:17 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-05-19 12:44:17 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-05-19 12:44:17 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-05-19 12:44:17 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-05-19 12:44:17 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-05-19 12:44:17 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-05-19 12:44:17 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-05-19 12:44:17 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-05-19 12:44:17 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-05-19 12:44:17 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-05-19 12:44:17 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-05-19 12:44:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:44:17 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-05-19 12:44:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:44:17 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-05-19 12:44:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:44:17 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-05-19 12:44:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:44:17 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 12:44:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:44:17 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 12:44:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:44:17 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-19 12:44:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:44:17 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 12:44:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:44:17 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 12:44:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:44:17 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-19 12:44:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:44:17 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-19 12:44:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:44:17 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 12:44:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:44:17 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 12:44:17 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-19 12:44:17 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-19 12:44:17 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 12:44:17 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 12:44:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 12:44:17 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 13:07:23 - INFO --> Access token expired for store: pc00, refreshing... 2026-05-19 13:07:23 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-05-19 13:07:23 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-05-19 13:07:23 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-05-19 13:07:23 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-19 13:07:23 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 13:07:23 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-05-19 13:07:23 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-05-19 13:07:23 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-05-19 13:07:23 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 13:07:23 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-05-19 13:07:23 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-05-19 13:07:23 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-05-19 13:07:23 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-05-19 13:07:23 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-05-19 13:07:23 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 13:07:23 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 13:07:23 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 13:07:23 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-05-19 13:07:23 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-05-19 13:07:23 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-05-19 13:07:23 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-05-19 13:07:23 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-05-19 13:07:23 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-05-19 13:07:23 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-05-19 13:07:23 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-05-19 13:07:23 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-05-19 13:07:23 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-05-19 13:07:23 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-05-19 13:07:23 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-05-19 13:07:23 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 13:07:23 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-05-19 13:07:23 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 13:07:23 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-05-19 13:07:23 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 13:07:23 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-05-19 13:07:23 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 13:07:23 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 13:07:23 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 13:07:23 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 13:07:23 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 13:07:23 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-19 13:07:24 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 13:07:24 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 13:07:24 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 13:07:24 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 13:07:24 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 13:07:24 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-19 13:07:24 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 13:07:24 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-19 13:07:24 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 13:07:24 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 13:07:24 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 13:07:24 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 13:07:24 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-19 13:07:24 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-19 13:07:24 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 13:07:24 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 13:07:24 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 13:07:24 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 13:42:49 - INFO --> Access token expired for store: pc00, refreshing... 2026-05-19 13:42:49 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-05-19 13:42:50 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-05-19 13:42:50 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-05-19 13:42:50 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-19 13:42:50 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 13:42:50 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-05-19 13:42:50 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-05-19 13:42:50 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-05-19 13:42:50 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 13:42:50 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-05-19 13:42:50 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-05-19 13:42:50 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-05-19 13:42:50 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-05-19 13:42:50 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-05-19 13:42:50 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 13:42:50 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 13:42:50 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 13:42:50 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-05-19 13:42:50 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-05-19 13:42:50 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-05-19 13:42:50 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-05-19 13:42:50 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-05-19 13:42:50 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-05-19 13:42:50 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-05-19 13:42:50 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-05-19 13:42:50 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-05-19 13:42:50 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-05-19 13:42:50 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-05-19 13:42:50 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-05-19 13:42:50 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 13:42:50 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-05-19 13:42:50 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 13:42:50 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-05-19 13:42:50 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 13:42:50 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-05-19 13:42:50 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 13:42:50 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 13:42:50 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 13:42:50 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 13:42:50 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 13:42:50 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-19 13:42:50 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 13:42:50 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 13:42:50 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 13:42:50 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 13:42:50 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 13:42:50 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-19 13:42:50 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 13:42:50 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-19 13:42:50 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 13:42:50 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 13:42:50 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 13:42:50 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 13:42:50 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-19 13:42:50 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-19 13:42:50 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 13:42:50 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 13:42:50 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 13:42:50 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 13:51:50 - INFO --> Access token expired for store: pc00, refreshing... 2026-05-19 13:51:50 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-05-19 13:51:51 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-05-19 13:51:51 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-05-19 13:51:51 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-19 13:51:51 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 13:51:51 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-05-19 13:51:51 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-05-19 13:51:51 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-05-19 13:51:51 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 13:51:51 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-05-19 13:51:51 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-05-19 13:51:51 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-05-19 13:51:51 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-05-19 13:51:51 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-05-19 13:51:51 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 13:51:51 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 13:51:51 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 13:51:51 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-05-19 13:51:51 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-05-19 13:51:51 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-05-19 13:51:51 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-05-19 13:51:51 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-05-19 13:51:51 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-05-19 13:51:51 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-05-19 13:51:51 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-05-19 13:51:51 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-05-19 13:51:51 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-05-19 13:51:51 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-05-19 13:51:51 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-05-19 13:51:51 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 13:51:51 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-05-19 13:51:51 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 13:51:51 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-05-19 13:51:51 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 13:51:51 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-05-19 13:51:51 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 13:51:51 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 13:51:51 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 13:51:51 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 13:51:51 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 13:51:51 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-19 13:51:51 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 13:51:51 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 13:51:51 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 13:51:51 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 13:51:51 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 13:51:51 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-19 13:51:51 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 13:51:51 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-19 13:51:51 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 13:51:51 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 13:51:51 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 13:51:51 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 13:51:51 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-19 13:51:51 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-19 13:51:51 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 13:51:51 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 13:51:51 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 13:51:51 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 14:00:48 - INFO --> Access token expired for store: pc00, refreshing... 2026-05-19 14:00:49 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-05-19 14:00:49 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-05-19 14:00:49 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-05-19 14:00:49 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-19 14:00:49 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 14:00:49 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-05-19 14:00:49 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-05-19 14:00:49 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-05-19 14:00:49 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 14:00:49 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-05-19 14:00:49 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-05-19 14:00:49 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-05-19 14:00:49 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-05-19 14:00:49 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-05-19 14:00:49 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 14:00:49 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 14:00:49 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 14:00:49 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-05-19 14:00:49 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-05-19 14:00:49 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-05-19 14:00:49 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-05-19 14:00:49 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-05-19 14:00:49 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-05-19 14:00:49 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-05-19 14:00:49 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-05-19 14:00:49 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-05-19 14:00:49 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-05-19 14:00:49 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-05-19 14:00:49 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-05-19 14:00:49 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 14:00:49 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-05-19 14:00:49 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 14:00:49 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-05-19 14:00:49 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 14:00:49 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-05-19 14:00:49 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 14:00:49 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 14:00:49 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 14:00:49 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 14:00:49 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 14:00:49 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-19 14:00:49 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 14:00:49 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 14:00:49 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 14:00:49 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 14:00:49 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 14:00:49 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-19 14:00:49 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 14:00:49 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-19 14:00:49 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 14:00:49 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 14:00:49 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 14:00:49 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 14:00:49 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-19 14:00:49 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-19 14:00:49 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 14:00:49 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 14:00:49 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 14:00:49 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 14:18:00 - INFO --> Access token expired for store: pc00, refreshing... 2026-05-19 14:18:00 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-05-19 14:18:00 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-05-19 14:18:00 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-05-19 14:18:00 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-19 14:18:00 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 14:18:00 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-05-19 14:18:00 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-05-19 14:18:00 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-05-19 14:18:00 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 14:18:00 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-05-19 14:18:00 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-05-19 14:18:00 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-05-19 14:18:00 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-05-19 14:18:00 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-05-19 14:18:00 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 14:18:00 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 14:18:00 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 14:18:00 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-05-19 14:18:01 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-05-19 14:18:01 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-05-19 14:18:01 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-05-19 14:18:01 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-05-19 14:18:01 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-05-19 14:18:01 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-05-19 14:18:01 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-05-19 14:18:01 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-05-19 14:18:01 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-05-19 14:18:01 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-05-19 14:18:01 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-05-19 14:18:01 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 14:18:01 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-05-19 14:18:01 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 14:18:01 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-05-19 14:18:01 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 14:18:01 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-05-19 14:18:01 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 14:18:01 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 14:18:01 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 14:18:01 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 14:18:01 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 14:18:01 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-19 14:18:01 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 14:18:01 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 14:18:01 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 14:18:01 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 14:18:01 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 14:18:01 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-19 14:18:01 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 14:18:01 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-19 14:18:01 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 14:18:01 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 14:18:01 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 14:18:01 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 14:18:01 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-19 14:18:01 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-19 14:18:01 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 14:18:01 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 14:18:01 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 14:18:01 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 14:45:22 - INFO --> Access token expired for store: pc00, refreshing... 2026-05-19 14:45:22 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-05-19 14:45:22 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-05-19 14:45:22 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-05-19 14:45:22 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-19 14:45:22 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 14:45:22 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-05-19 14:45:22 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-05-19 14:45:22 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-05-19 14:45:22 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 14:45:22 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-05-19 14:45:22 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-05-19 14:45:22 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-05-19 14:45:22 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-05-19 14:45:22 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-05-19 14:45:22 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 14:45:22 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 14:45:22 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 14:45:22 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-05-19 14:45:22 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-05-19 14:45:22 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-05-19 14:45:22 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-05-19 14:45:22 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-05-19 14:45:22 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-05-19 14:45:22 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-05-19 14:45:22 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-05-19 14:45:22 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-05-19 14:45:22 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-05-19 14:45:22 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-05-19 14:45:23 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-05-19 14:45:23 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 14:45:23 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-05-19 14:45:23 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 14:45:23 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-05-19 14:45:23 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 14:45:23 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-05-19 14:45:23 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 14:45:23 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 14:45:23 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 14:45:23 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 14:45:23 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 14:45:23 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-19 14:45:23 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 14:45:23 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 14:45:23 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 14:45:23 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 14:45:23 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 14:45:23 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-19 14:45:23 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 14:45:23 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-19 14:45:23 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 14:45:23 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 14:45:23 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 14:45:23 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 14:45:23 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-19 14:45:23 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-19 14:45:23 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 14:45:23 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-19 14:45:23 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-19 14:45:23 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-21 14:47:31 - INFO --> Access token expired for store: pc00, refreshing... 2026-05-21 14:47:31 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-05-21 14:47:32 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-05-21 14:47:32 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-05-21 14:47:32 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-21 14:47:32 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-21 14:47:32 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-05-21 14:47:32 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-05-21 14:47:32 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-05-21 14:47:32 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-21 14:47:32 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-05-21 14:47:32 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-05-21 14:47:32 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-05-21 14:47:32 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-05-21 14:47:32 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-05-21 14:47:32 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-21 14:47:32 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-21 14:47:32 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-21 14:47:32 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-05-21 14:47:32 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-05-21 14:47:32 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-05-21 14:47:32 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-05-21 14:47:32 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-05-21 14:47:32 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-05-21 14:47:32 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-05-21 14:47:32 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-05-21 14:47:32 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-05-21 14:47:32 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-05-21 14:47:32 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-05-21 14:47:32 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-05-21 14:47:32 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-21 14:47:32 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-05-21 14:47:32 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-21 14:47:32 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-05-21 14:47:32 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-21 14:47:32 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-05-21 14:47:32 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-21 14:47:32 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-21 14:47:32 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-21 14:47:32 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-21 14:47:32 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-21 14:47:32 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-21 14:47:32 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-21 14:47:32 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-21 14:47:32 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-21 14:47:32 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-21 14:47:32 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-21 14:47:32 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-21 14:47:32 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-21 14:47:32 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-21 14:47:32 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-21 14:47:32 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-21 14:47:32 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-21 14:47:32 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-21 14:47:32 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-21 14:47:32 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-21 14:47:32 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-21 14:47:32 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-21 14:47:32 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-21 14:47:32 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-21 14:55:44 - INFO --> Access token expired for store: pc00, refreshing... 2026-05-21 14:55:45 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-05-21 14:55:45 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-05-21 14:55:45 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-05-21 14:55:45 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-21 14:55:45 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-21 14:55:45 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-05-21 14:55:45 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-05-21 14:55:45 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-05-21 14:55:45 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-21 14:55:45 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-05-21 14:55:45 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-05-21 14:55:45 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-05-21 14:55:45 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-05-21 14:55:45 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-05-21 14:55:45 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-21 14:55:45 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-21 14:55:45 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-21 14:55:45 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-05-21 14:55:45 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-05-21 14:55:45 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-05-21 14:55:45 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-05-21 14:55:45 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-05-21 14:55:45 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-05-21 14:55:45 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-05-21 14:55:45 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-05-21 14:55:45 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-05-21 14:55:45 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-05-21 14:55:45 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-05-21 14:55:45 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-05-21 14:55:45 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-21 14:55:45 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-05-21 14:55:45 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-21 14:55:45 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-05-21 14:55:45 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-21 14:55:45 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-05-21 14:55:45 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-21 14:55:45 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-21 14:55:45 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-21 14:55:45 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-21 14:55:45 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-21 14:55:45 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-21 14:55:45 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-21 14:55:45 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-21 14:55:45 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-21 14:55:45 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-21 14:55:45 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-21 14:55:45 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-21 14:55:45 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-21 14:55:45 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-21 14:55:45 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-21 14:55:45 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-21 14:55:45 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-21 14:55:45 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-21 14:55:45 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-21 14:55:45 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-21 14:55:45 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-21 14:55:45 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-21 14:55:45 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-21 14:55:45 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-29 15:45:27 - INFO --> Access token expired for store: pc00, refreshing... 2026-05-29 15:45:28 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-05-29 15:45:28 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-05-29 15:45:28 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-05-29 15:45:28 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-29 15:45:28 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-29 15:45:28 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-05-29 15:45:28 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-05-29 15:45:28 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-05-29 15:45:28 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-29 15:45:28 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-05-29 15:45:28 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-05-29 15:45:28 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-05-29 15:45:28 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-05-29 15:45:28 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-05-29 15:45:28 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-29 15:45:28 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-29 15:45:28 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-29 15:45:28 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-05-29 15:45:28 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-05-29 15:45:28 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-05-29 15:45:28 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-05-29 15:45:28 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-05-29 15:45:28 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-05-29 15:45:28 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-05-29 15:45:28 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-05-29 15:45:28 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-05-29 15:45:28 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-05-29 15:45:28 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-05-29 15:45:28 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-05-29 15:45:28 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-29 15:45:28 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-05-29 15:45:28 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-29 15:45:28 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-05-29 15:45:28 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-29 15:45:28 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-05-29 15:45:28 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-29 15:45:28 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-29 15:45:28 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-29 15:45:28 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-29 15:45:28 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-29 15:45:28 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-05-29 15:45:28 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-29 15:45:28 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-29 15:45:28 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-29 15:45:28 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-29 15:45:28 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-29 15:45:28 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-29 15:45:28 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-29 15:45:28 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-05-29 15:45:28 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-29 15:45:28 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-29 15:45:28 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-29 15:45:28 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-29 15:45:28 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-05-29 15:45:28 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-05-29 15:45:28 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-29 15:45:28 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-05-29 15:45:28 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-05-29 15:45:28 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-06-01 13:27:43 - INFO --> Access token expired for store: pc00, refreshing... 2026-06-01 13:27:43 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-06-01 13:27:43 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-06-01 13:27:43 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-06-01 13:27:43 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-06-01 13:27:43 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:27:43 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-06-01 13:27:43 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-06-01 13:27:43 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-06-01 13:27:43 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:27:43 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-06-01 13:27:43 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-06-01 13:27:43 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-06-01 13:27:43 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-06-01 13:27:43 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-06-01 13:27:43 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:27:43 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:27:43 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:27:43 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-06-01 13:27:43 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-06-01 13:27:43 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-06-01 13:27:43 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-06-01 13:27:43 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-06-01 13:27:43 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-06-01 13:27:43 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-06-01 13:27:43 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-06-01 13:27:43 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-06-01 13:27:43 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-06-01 13:27:43 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-06-01 13:27:43 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-06-01 13:27:43 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:27:43 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-06-01 13:27:43 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:27:43 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-06-01 13:27:43 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:27:43 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-06-01 13:27:43 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:27:43 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-06-01 13:27:43 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:27:43 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-06-01 13:27:43 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:27:43 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-06-01 13:27:43 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:27:43 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-06-01 13:27:43 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:27:43 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-06-01 13:27:43 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:27:43 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-06-01 13:27:43 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:27:43 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-06-01 13:27:43 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:27:43 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-06-01 13:27:43 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:27:43 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-06-01 13:27:43 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-06-01 13:27:43 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-06-01 13:27:43 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-06-01 13:27:43 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-06-01 13:27:43 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:27:43 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-06-01 13:29:16 - INFO --> Access token expired for store: pc00, refreshing... 2026-06-01 13:29:17 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-06-01 13:29:17 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-06-01 13:29:17 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-06-01 13:29:17 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-06-01 13:29:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:29:17 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-06-01 13:29:17 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-06-01 13:29:17 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-06-01 13:29:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:29:17 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-06-01 13:29:17 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-06-01 13:29:17 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-06-01 13:29:17 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-06-01 13:29:17 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-06-01 13:29:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:29:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:29:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:29:17 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-06-01 13:29:17 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-06-01 13:29:17 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-06-01 13:29:17 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-06-01 13:29:17 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-06-01 13:29:17 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-06-01 13:29:17 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-06-01 13:29:17 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-06-01 13:29:17 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-06-01 13:29:17 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-06-01 13:29:17 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-06-01 13:29:17 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-06-01 13:29:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:29:17 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-06-01 13:29:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:29:17 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-06-01 13:29:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:29:17 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-06-01 13:29:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:29:17 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-06-01 13:29:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:29:17 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-06-01 13:29:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:29:17 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-06-01 13:29:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:29:17 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-06-01 13:29:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:29:17 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-06-01 13:29:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:29:17 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-06-01 13:29:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:29:17 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-06-01 13:29:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:29:17 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-06-01 13:29:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:29:17 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-06-01 13:29:17 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-06-01 13:29:17 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-06-01 13:29:17 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-06-01 13:29:17 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-06-01 13:29:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:29:17 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-06-01 13:30:45 - INFO --> Access token expired for store: pc00, refreshing... 2026-06-01 13:30:45 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-06-01 13:30:46 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-06-01 13:30:46 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-06-01 13:30:46 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-06-01 13:30:46 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:30:46 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-06-01 13:30:46 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-06-01 13:30:46 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-06-01 13:30:46 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:30:46 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-06-01 13:30:46 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-06-01 13:30:46 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-06-01 13:30:46 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-06-01 13:30:46 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-06-01 13:30:46 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:30:46 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:30:46 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:30:46 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-06-01 13:30:46 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-06-01 13:30:46 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-06-01 13:30:46 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-06-01 13:30:46 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-06-01 13:30:46 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-06-01 13:30:46 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-06-01 13:30:46 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-06-01 13:30:46 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-06-01 13:30:46 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-06-01 13:30:46 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-06-01 13:30:46 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-06-01 13:30:46 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:30:46 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-06-01 13:30:46 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:30:46 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-06-01 13:30:46 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:30:46 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-06-01 13:30:46 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:30:46 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-06-01 13:30:46 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:30:46 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-06-01 13:30:46 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:30:46 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-06-01 13:30:46 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:30:46 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-06-01 13:30:46 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:30:46 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-06-01 13:30:46 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:30:46 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-06-01 13:30:46 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:30:46 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-06-01 13:30:46 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:30:46 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-06-01 13:30:46 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:30:46 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-06-01 13:30:46 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-06-01 13:30:46 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-06-01 13:30:46 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-06-01 13:30:46 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-06-01 13:30:46 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:30:46 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-06-01 13:32:21 - INFO --> Access token expired for store: pc00, refreshing... 2026-06-01 13:32:21 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-06-01 13:32:22 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-06-01 13:32:22 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-06-01 13:32:22 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-06-01 13:32:22 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:32:22 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-06-01 13:32:22 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-06-01 13:32:22 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-06-01 13:32:22 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:32:22 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-06-01 13:32:22 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-06-01 13:32:22 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-06-01 13:32:22 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-06-01 13:32:22 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-06-01 13:32:22 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:32:22 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:32:22 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:32:22 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-06-01 13:32:22 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-06-01 13:32:22 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-06-01 13:32:22 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-06-01 13:32:22 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-06-01 13:32:22 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-06-01 13:32:22 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-06-01 13:32:22 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-06-01 13:32:22 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-06-01 13:32:22 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-06-01 13:32:22 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-06-01 13:32:22 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-06-01 13:32:22 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:32:22 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-06-01 13:32:22 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:32:22 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-06-01 13:32:22 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:32:22 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-06-01 13:32:22 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:32:22 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-06-01 13:32:22 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:32:22 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-06-01 13:32:22 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:32:22 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-06-01 13:32:22 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:32:22 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-06-01 13:32:22 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:32:22 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-06-01 13:32:22 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:32:22 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-06-01 13:32:22 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:32:22 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-06-01 13:32:22 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:32:22 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-06-01 13:32:22 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:32:22 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-06-01 13:32:22 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-06-01 13:32:22 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-06-01 13:32:22 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-06-01 13:32:22 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-06-01 13:32:22 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-01 13:32:22 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-06-02 15:41:55 - INFO --> Access token expired for store: pc00, refreshing... 2026-06-02 15:41:56 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-06-02 15:41:56 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-06-02 15:41:56 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-06-02 15:41:56 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-06-02 15:41:56 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-02 15:41:56 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-06-02 15:41:56 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-06-02 15:41:56 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-06-02 15:41:56 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-02 15:41:56 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-06-02 15:41:56 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-06-02 15:41:56 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-06-02 15:41:56 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-06-02 15:41:56 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-06-02 15:41:56 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-02 15:41:56 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-02 15:41:56 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-02 15:41:56 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-06-02 15:41:56 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-06-02 15:41:56 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-06-02 15:41:56 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-06-02 15:41:56 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-06-02 15:41:56 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-06-02 15:41:56 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-06-02 15:41:56 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-06-02 15:41:56 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-06-02 15:41:56 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-06-02 15:41:56 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-06-02 15:41:56 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-06-02 15:41:56 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-02 15:41:56 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-06-02 15:41:56 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-02 15:41:56 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-06-02 15:41:56 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-02 15:41:56 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-06-02 15:41:56 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-02 15:41:56 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-06-02 15:41:56 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-02 15:41:56 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-06-02 15:41:56 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-02 15:41:56 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-06-02 15:41:56 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-02 15:41:56 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-06-02 15:41:56 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-02 15:41:56 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-06-02 15:41:56 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-02 15:41:56 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-06-02 15:41:56 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-02 15:41:56 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-06-02 15:41:56 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-02 15:41:56 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-06-02 15:41:56 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-02 15:41:56 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-06-02 15:41:56 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-06-02 15:41:56 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-06-02 15:41:56 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-06-02 15:41:56 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-06-02 15:41:56 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-02 15:41:56 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-06-02 15:43:21 - INFO --> Access token expired for store: pc00, refreshing... 2026-06-02 15:43:21 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-06-02 15:43:21 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-06-02 15:43:21 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-06-02 15:43:21 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-06-02 15:43:21 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-02 15:43:21 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-06-02 15:43:21 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-06-02 15:43:21 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-06-02 15:43:21 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-02 15:43:21 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-06-02 15:43:21 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-06-02 15:43:21 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-06-02 15:43:21 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-06-02 15:43:21 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-06-02 15:43:21 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-02 15:43:21 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-02 15:43:21 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-02 15:43:22 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-06-02 15:43:22 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-06-02 15:43:22 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-06-02 15:43:22 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-06-02 15:43:22 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-06-02 15:43:22 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-06-02 15:43:22 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-06-02 15:43:22 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-06-02 15:43:22 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-06-02 15:43:22 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-06-02 15:43:22 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-06-02 15:43:22 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-06-02 15:43:22 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-02 15:43:22 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-06-02 15:43:22 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-02 15:43:22 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-06-02 15:43:22 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-02 15:43:22 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-06-02 15:43:22 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-02 15:43:22 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-06-02 15:43:22 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-02 15:43:22 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-06-02 15:43:22 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-02 15:43:22 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-06-02 15:43:22 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-02 15:43:22 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-06-02 15:43:22 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-02 15:43:22 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-06-02 15:43:22 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-02 15:43:22 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-06-02 15:43:22 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-02 15:43:22 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-06-02 15:43:22 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-02 15:43:22 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-06-02 15:43:22 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-02 15:43:22 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-06-02 15:43:22 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-06-02 15:43:22 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-06-02 15:43:22 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-06-02 15:43:22 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-06-02 15:43:22 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-06-02 15:43:22 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-11 12:56:13 - INFO --> Access token expired for store: pc00, refreshing... 2026-07-11 12:56:14 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-07-11 12:56:14 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-07-11 12:56:14 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-07-11 12:56:14 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-11 12:56:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-11 12:56:14 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-11 12:56:14 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-07-11 12:56:14 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-11 12:56:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-11 12:56:14 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-07-11 12:56:14 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-11 12:56:14 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-07-11 12:56:14 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-07-11 12:56:14 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-07-11 12:56:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-11 12:56:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-11 12:56:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-11 12:56:14 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-07-11 12:56:14 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-07-11 12:56:14 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-07-11 12:56:14 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-07-11 12:56:14 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-07-11 12:56:14 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-07-11 12:56:14 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-07-11 12:56:14 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-07-11 12:56:14 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-07-11 12:56:14 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-07-11 12:56:14 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-07-11 12:56:14 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-07-11 12:56:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-11 12:56:14 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-07-11 12:56:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-11 12:56:14 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-07-11 12:56:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-11 12:56:14 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-11 12:56:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-11 12:56:14 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-11 12:56:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-11 12:56:14 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-11 12:56:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-11 12:56:14 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-07-11 12:56:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-11 12:56:14 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-11 12:56:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-11 12:56:14 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-11 12:56:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-11 12:56:14 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-11 12:56:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-11 12:56:14 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-11 12:56:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-11 12:56:14 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-11 12:56:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-11 12:56:14 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-11 12:56:14 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-07-11 12:56:14 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-11 12:56:14 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-11 12:56:14 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-11 12:56:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-11 12:56:14 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-11 19:43:28 - INFO --> Access token expired for store: pc00, refreshing... 2026-07-11 19:43:28 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-07-11 19:43:28 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-07-11 19:43:28 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-07-11 19:43:28 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-11 19:43:28 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-11 19:43:28 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-11 19:43:28 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-07-11 19:43:28 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-11 19:43:28 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-11 19:43:28 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-07-11 19:43:28 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-11 19:43:28 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-07-11 19:43:28 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-07-11 19:43:28 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-07-11 19:43:28 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-11 19:43:28 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-11 19:43:28 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-11 19:43:28 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-07-11 19:43:28 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-07-11 19:43:28 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-07-11 19:43:28 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-07-11 19:43:28 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-07-11 19:43:28 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-07-11 19:43:28 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-07-11 19:43:28 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-07-11 19:43:28 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-07-11 19:43:28 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-07-11 19:43:28 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-07-11 19:43:28 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-07-11 19:43:28 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-11 19:43:28 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-07-11 19:43:28 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-11 19:43:28 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-07-11 19:43:28 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-11 19:43:28 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-11 19:43:28 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-11 19:43:28 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-11 19:43:28 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-11 19:43:28 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-11 19:43:28 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-11 19:43:28 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-07-11 19:43:28 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-11 19:43:28 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-11 19:43:28 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-11 19:43:28 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-11 19:43:28 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-11 19:43:28 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-11 19:43:28 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-11 19:43:28 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-11 19:43:28 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-11 19:43:28 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-11 19:43:28 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-11 19:43:28 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-11 19:43:28 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-07-11 19:43:28 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-11 19:43:28 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-11 19:43:28 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-11 19:43:28 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-11 19:43:28 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-11 22:31:43 - INFO --> Access token expired for store: pc00, refreshing... 2026-07-11 22:31:43 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-07-11 22:31:43 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-07-11 22:31:43 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-07-11 22:31:43 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-11 22:31:43 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-11 22:31:43 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-11 22:31:43 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-07-11 22:31:43 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-11 22:31:43 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-11 22:31:43 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-07-11 22:31:43 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-11 22:31:43 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-07-11 22:31:43 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-07-11 22:31:43 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-07-11 22:31:43 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-11 22:31:43 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-11 22:31:43 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-11 22:31:43 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-07-11 22:31:43 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-07-11 22:31:43 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-07-11 22:31:43 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-07-11 22:31:43 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-07-11 22:31:43 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-07-11 22:31:43 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-07-11 22:31:43 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-07-11 22:31:43 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-07-11 22:31:43 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-07-11 22:31:43 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-07-11 22:31:43 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-07-11 22:31:43 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-11 22:31:43 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-07-11 22:31:43 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-11 22:31:43 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-07-11 22:31:43 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-11 22:31:43 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-11 22:31:43 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-11 22:31:43 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-11 22:31:43 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-11 22:31:43 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-11 22:31:43 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-11 22:31:43 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-07-11 22:31:43 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-11 22:31:43 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-11 22:31:43 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-11 22:31:43 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-11 22:31:43 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-11 22:31:43 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-11 22:31:43 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-11 22:31:43 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-11 22:31:43 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-11 22:31:43 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-11 22:31:43 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-11 22:31:43 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-11 22:31:43 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-07-11 22:31:43 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-11 22:31:43 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-11 22:31:43 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-11 22:31:43 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-11 22:31:43 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-12 12:17:46 - INFO --> Access token expired for store: pc00, refreshing... 2026-07-12 12:17:46 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-07-12 12:17:46 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-07-12 12:17:46 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-07-12 12:17:46 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-12 12:17:46 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-12 12:17:46 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-12 12:17:46 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-07-12 12:17:46 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-12 12:17:46 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-12 12:17:46 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-07-12 12:17:46 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-12 12:17:46 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-07-12 12:17:46 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-07-12 12:17:46 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-07-12 12:17:46 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-12 12:17:46 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-12 12:17:46 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-12 12:17:46 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-07-12 12:17:47 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-07-12 12:17:47 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-07-12 12:17:47 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-07-12 12:17:47 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-07-12 12:17:47 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-07-12 12:17:47 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-07-12 12:17:47 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-07-12 12:17:47 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-07-12 12:17:47 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-07-12 12:17:47 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-07-12 12:17:47 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-07-12 12:17:47 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-12 12:17:47 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-07-12 12:17:47 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-12 12:17:47 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-07-12 12:17:47 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-12 12:17:47 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-12 12:17:47 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-12 12:17:47 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-12 12:17:47 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-12 12:17:47 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-12 12:17:47 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-12 12:17:47 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-07-12 12:17:47 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-12 12:17:47 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-12 12:17:47 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-12 12:17:47 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-12 12:17:47 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-12 12:17:47 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-12 12:17:47 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-12 12:17:47 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-12 12:17:47 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-12 12:17:47 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-12 12:17:47 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-12 12:17:47 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-12 12:17:47 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-07-12 12:17:47 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-12 12:17:47 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-12 12:17:47 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-12 12:17:47 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-12 12:17:47 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-12 12:19:13 - INFO --> Access token expired for store: pc00, refreshing... 2026-07-12 12:19:14 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-07-12 12:19:14 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-07-12 12:19:14 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-07-12 12:19:14 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-12 12:19:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-12 12:19:14 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-12 12:19:14 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-07-12 12:19:14 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-12 12:19:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-12 12:19:14 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-07-12 12:19:14 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-12 12:19:14 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-07-12 12:19:14 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-07-12 12:19:14 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-07-12 12:19:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-12 12:19:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-12 12:19:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-12 12:19:14 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-07-12 12:19:14 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-07-12 12:19:14 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-07-12 12:19:14 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-07-12 12:19:14 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-07-12 12:19:14 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-07-12 12:19:14 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-07-12 12:19:14 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-07-12 12:19:14 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-07-12 12:19:14 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-07-12 12:19:14 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-07-12 12:19:14 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-07-12 12:19:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-12 12:19:14 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-07-12 12:19:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-12 12:19:14 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-07-12 12:19:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-12 12:19:14 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-12 12:19:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-12 12:19:14 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-12 12:19:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-12 12:19:14 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-12 12:19:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-12 12:19:14 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-07-12 12:19:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-12 12:19:14 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-12 12:19:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-12 12:19:14 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-12 12:19:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-12 12:19:14 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-12 12:19:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-12 12:19:14 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-12 12:19:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-12 12:19:14 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-12 12:19:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-12 12:19:14 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-12 12:19:14 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-07-12 12:19:14 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-12 12:19:14 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-12 12:19:14 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-12 12:19:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-12 12:19:14 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-13 11:20:16 - INFO --> Access token expired for store: pc00, refreshing... 2026-07-13 11:20:17 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-07-13 11:20:17 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-07-13 11:20:17 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-07-13 11:20:17 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-13 11:20:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 11:20:17 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-13 11:20:17 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-07-13 11:20:17 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-13 11:20:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 11:20:17 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-07-13 11:20:17 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-13 11:20:17 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-07-13 11:20:17 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-07-13 11:20:17 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-07-13 11:20:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 11:20:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 11:20:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 11:20:17 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-07-13 11:20:17 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-07-13 11:20:17 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-07-13 11:20:17 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-07-13 11:20:17 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-07-13 11:20:17 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-07-13 11:20:17 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-07-13 11:20:17 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-07-13 11:20:17 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-07-13 11:20:17 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-07-13 11:20:17 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-07-13 11:20:17 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-07-13 11:20:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 11:20:17 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-07-13 11:20:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 11:20:17 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-07-13 11:20:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 11:20:17 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-13 11:20:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 11:20:17 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-13 11:20:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 11:20:17 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-13 11:20:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 11:20:17 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-07-13 11:20:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 11:20:17 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-13 11:20:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 11:20:17 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-13 11:20:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 11:20:17 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-13 11:20:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 11:20:17 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-13 11:20:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 11:20:17 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-13 11:20:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 11:20:17 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-13 11:20:17 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-07-13 11:20:17 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-13 11:20:17 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-13 11:20:17 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-13 11:20:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 11:20:17 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-13 13:05:28 - INFO --> Access token expired for store: pc00, refreshing... 2026-07-13 13:05:28 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-07-13 13:05:29 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-07-13 13:05:29 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-07-13 13:05:29 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-13 13:05:29 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 13:05:29 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-13 13:05:29 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-07-13 13:05:29 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-13 13:05:29 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 13:05:29 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-07-13 13:05:29 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-13 13:05:29 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-07-13 13:05:29 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-07-13 13:05:29 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-07-13 13:05:29 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 13:05:29 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 13:05:29 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 13:05:29 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-07-13 13:05:29 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-07-13 13:05:29 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-07-13 13:05:29 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-07-13 13:05:29 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-07-13 13:05:29 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-07-13 13:05:29 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-07-13 13:05:29 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-07-13 13:05:29 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-07-13 13:05:29 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-07-13 13:05:29 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-07-13 13:05:29 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-07-13 13:05:29 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 13:05:29 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-07-13 13:05:29 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 13:05:29 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-07-13 13:05:29 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 13:05:29 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-13 13:05:29 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 13:05:29 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-13 13:05:29 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 13:05:29 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-13 13:05:29 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 13:05:29 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-07-13 13:05:29 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 13:05:29 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-13 13:05:29 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 13:05:29 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-13 13:05:29 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 13:05:29 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-13 13:05:29 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 13:05:29 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-13 13:05:29 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 13:05:29 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-13 13:05:29 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 13:05:29 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-13 13:05:29 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-07-13 13:05:29 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-13 13:05:29 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-13 13:05:29 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-13 13:05:29 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 13:05:29 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-13 16:16:50 - INFO --> Access token expired for store: pc00, refreshing... 2026-07-13 16:16:50 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-07-13 16:16:50 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-07-13 16:16:50 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-07-13 16:16:50 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-13 16:16:50 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 16:16:50 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-13 16:16:50 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-07-13 16:16:50 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-13 16:16:50 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 16:16:50 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-07-13 16:16:50 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-13 16:16:50 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-07-13 16:16:50 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-07-13 16:16:50 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-07-13 16:16:50 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 16:16:50 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 16:16:50 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 16:16:50 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-07-13 16:16:51 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-07-13 16:16:51 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-07-13 16:16:51 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-07-13 16:16:51 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-07-13 16:16:51 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-07-13 16:16:51 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-07-13 16:16:51 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-07-13 16:16:51 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-07-13 16:16:51 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-07-13 16:16:51 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-07-13 16:16:51 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-07-13 16:16:51 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 16:16:51 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-07-13 16:16:51 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 16:16:51 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-07-13 16:16:51 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 16:16:51 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-13 16:16:51 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 16:16:51 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-13 16:16:51 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 16:16:51 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-13 16:16:51 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 16:16:51 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-07-13 16:16:51 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 16:16:51 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-13 16:16:51 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 16:16:51 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-13 16:16:51 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 16:16:51 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-13 16:16:51 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 16:16:51 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-13 16:16:51 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 16:16:51 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-13 16:16:51 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 16:16:51 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-13 16:16:51 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-07-13 16:16:51 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-13 16:16:51 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-13 16:16:51 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-13 16:16:51 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 16:16:51 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-13 17:34:08 - INFO --> Access token expired for store: pc00, refreshing... 2026-07-13 17:34:09 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-07-13 17:34:09 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-07-13 17:34:09 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-07-13 17:34:09 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-13 17:34:09 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 17:34:09 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-13 17:34:09 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-07-13 17:34:09 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-13 17:34:09 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 17:34:09 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-07-13 17:34:09 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-13 17:34:09 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-07-13 17:34:09 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-07-13 17:34:09 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-07-13 17:34:09 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 17:34:09 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 17:34:09 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 17:34:09 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-07-13 17:34:09 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-07-13 17:34:09 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-07-13 17:34:09 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-07-13 17:34:09 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-07-13 17:34:09 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-07-13 17:34:09 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-07-13 17:34:09 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-07-13 17:34:09 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-07-13 17:34:09 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-07-13 17:34:09 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-07-13 17:34:09 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-07-13 17:34:09 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 17:34:09 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-07-13 17:34:09 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 17:34:09 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-07-13 17:34:09 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 17:34:09 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-13 17:34:09 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 17:34:09 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-13 17:34:09 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 17:34:09 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-13 17:34:09 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 17:34:09 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-07-13 17:34:09 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 17:34:09 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-13 17:34:09 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 17:34:09 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-13 17:34:09 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 17:34:09 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-13 17:34:09 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 17:34:09 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-13 17:34:09 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 17:34:09 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-13 17:34:09 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 17:34:09 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-13 17:34:09 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-07-13 17:34:09 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-13 17:34:09 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-13 17:34:09 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-13 17:34:09 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-13 17:34:09 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-14 10:19:55 - INFO --> Access token expired for store: pc00, refreshing... 2026-07-14 10:19:56 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-07-14 10:19:56 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-07-14 10:19:56 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-07-14 10:19:56 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-14 10:19:56 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-14 10:19:56 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-14 10:19:56 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-07-14 10:19:56 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-14 10:19:56 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-14 10:19:56 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-07-14 10:19:56 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-14 10:19:56 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-07-14 10:19:56 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-07-14 10:19:56 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-07-14 10:19:56 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-14 10:19:56 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-14 10:19:56 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-14 10:19:56 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-07-14 10:19:56 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-07-14 10:19:56 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-07-14 10:19:56 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-07-14 10:19:56 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-07-14 10:19:56 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-07-14 10:19:56 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-07-14 10:19:56 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-07-14 10:19:56 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-07-14 10:19:56 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-07-14 10:19:56 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-07-14 10:19:56 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-07-14 10:19:56 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-14 10:19:56 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-07-14 10:19:56 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-14 10:19:56 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-07-14 10:19:56 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-14 10:19:56 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-14 10:19:56 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-14 10:19:56 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-14 10:19:56 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-14 10:19:56 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-14 10:19:56 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-14 10:19:56 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-07-14 10:19:56 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-14 10:19:56 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-14 10:19:56 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-14 10:19:56 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-14 10:19:56 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-14 10:19:56 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-14 10:19:56 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-14 10:19:56 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-14 10:19:56 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-14 10:19:56 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-14 10:19:56 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-14 10:19:56 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-14 10:19:56 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-07-14 10:19:56 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-14 10:19:56 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-14 10:19:56 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-14 10:19:56 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-14 10:19:56 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-14 17:48:14 - INFO --> Access token expired for store: pc00, refreshing... 2026-07-14 17:48:14 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-07-14 17:48:14 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-07-14 17:48:14 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-07-14 17:48:14 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-14 17:48:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-14 17:48:14 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-14 17:48:14 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-07-14 17:48:14 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-14 17:48:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-14 17:48:14 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-07-14 17:48:14 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-14 17:48:14 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-07-14 17:48:14 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-07-14 17:48:14 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-07-14 17:48:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-14 17:48:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-14 17:48:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-14 17:48:14 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-07-14 17:48:15 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-07-14 17:48:15 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-07-14 17:48:15 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-07-14 17:48:15 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-07-14 17:48:15 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-07-14 17:48:15 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-07-14 17:48:15 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-07-14 17:48:15 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-07-14 17:48:15 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-07-14 17:48:15 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-07-14 17:48:15 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-07-14 17:48:15 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-14 17:48:15 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-07-14 17:48:15 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-14 17:48:15 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-07-14 17:48:15 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-14 17:48:15 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-14 17:48:15 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-14 17:48:15 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-14 17:48:15 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-14 17:48:15 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-14 17:48:15 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-14 17:48:15 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-07-14 17:48:15 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-14 17:48:15 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-14 17:48:15 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-14 17:48:15 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-14 17:48:15 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-14 17:48:15 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-14 17:48:15 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-14 17:48:15 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-14 17:48:15 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-14 17:48:15 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-14 17:48:15 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-14 17:48:15 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-14 17:48:15 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-07-14 17:48:15 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-14 17:48:15 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-14 17:48:15 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-14 17:48:15 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-14 17:48:15 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 11:55:47 - INFO --> Access token expired for store: pc00, refreshing... 2026-07-15 11:55:47 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-07-15 11:55:48 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-07-15 11:55:48 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-07-15 11:55:48 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-15 11:55:48 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 11:55:48 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-15 11:55:48 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-07-15 11:55:48 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-15 11:55:48 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 11:55:48 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-07-15 11:55:48 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-15 11:55:48 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-07-15 11:55:48 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-07-15 11:55:48 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-07-15 11:55:48 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 11:55:48 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 11:55:48 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 11:55:48 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-07-15 11:55:48 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-07-15 11:55:48 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-07-15 11:55:48 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-07-15 11:55:48 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-07-15 11:55:48 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-07-15 11:55:48 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-07-15 11:55:48 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-07-15 11:55:48 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-07-15 11:55:48 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-07-15 11:55:48 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-07-15 11:55:48 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-07-15 11:55:48 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 11:55:48 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-07-15 11:55:48 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 11:55:48 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-07-15 11:55:48 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 11:55:48 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-15 11:55:48 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 11:55:48 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 11:55:48 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 11:55:48 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 11:55:48 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 11:55:48 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-07-15 11:55:48 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 11:55:48 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 11:55:48 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 11:55:48 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 11:55:48 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 11:55:48 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-15 11:55:48 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 11:55:48 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-15 11:55:48 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 11:55:48 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 11:55:48 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 11:55:48 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 11:55:48 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-07-15 11:55:48 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-15 11:55:48 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 11:55:48 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 11:55:48 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 11:55:48 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 11:57:19 - INFO --> Access token expired for store: pc00, refreshing... 2026-07-15 11:57:19 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-07-15 11:57:20 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-07-15 11:57:20 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-07-15 11:57:20 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-15 11:57:20 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 11:57:20 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-15 11:57:20 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-07-15 11:57:20 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-15 11:57:20 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 11:57:20 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-07-15 11:57:20 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-15 11:57:20 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-07-15 11:57:20 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-07-15 11:57:20 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-07-15 11:57:20 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 11:57:20 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 11:57:20 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 11:57:20 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-07-15 11:57:20 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-07-15 11:57:20 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-07-15 11:57:20 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-07-15 11:57:20 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-07-15 11:57:20 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-07-15 11:57:20 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-07-15 11:57:20 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-07-15 11:57:20 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-07-15 11:57:20 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-07-15 11:57:20 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-07-15 11:57:20 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-07-15 11:57:20 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 11:57:20 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-07-15 11:57:20 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 11:57:20 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-07-15 11:57:20 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 11:57:20 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-15 11:57:20 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 11:57:20 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 11:57:20 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 11:57:20 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 11:57:20 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 11:57:20 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-07-15 11:57:20 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 11:57:20 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 11:57:20 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 11:57:20 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 11:57:20 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 11:57:20 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-15 11:57:20 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 11:57:20 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-15 11:57:20 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 11:57:20 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 11:57:20 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 11:57:20 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 11:57:20 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-07-15 11:57:20 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-15 11:57:20 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 11:57:20 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 11:57:20 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 11:57:20 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 11:58:39 - INFO --> Access token expired for store: pc00, refreshing... 2026-07-15 11:58:39 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-07-15 11:58:40 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-07-15 11:58:40 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-07-15 11:58:40 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-15 11:58:40 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 11:58:40 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-15 11:58:40 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-07-15 11:58:40 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-15 11:58:40 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 11:58:40 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-07-15 11:58:40 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-15 11:58:40 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-07-15 11:58:40 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-07-15 11:58:40 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-07-15 11:58:40 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 11:58:40 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 11:58:40 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 11:58:40 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-07-15 11:58:40 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-07-15 11:58:40 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-07-15 11:58:40 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-07-15 11:58:40 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-07-15 11:58:40 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-07-15 11:58:40 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-07-15 11:58:40 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-07-15 11:58:40 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-07-15 11:58:40 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-07-15 11:58:40 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-07-15 11:58:40 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-07-15 11:58:40 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 11:58:40 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-07-15 11:58:40 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 11:58:40 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-07-15 11:58:40 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 11:58:40 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-15 11:58:40 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 11:58:40 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 11:58:40 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 11:58:40 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 11:58:40 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 11:58:40 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-07-15 11:58:40 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 11:58:40 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 11:58:40 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 11:58:40 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 11:58:40 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 11:58:40 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-15 11:58:40 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 11:58:40 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-15 11:58:40 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 11:58:40 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 11:58:40 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 11:58:40 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 11:58:40 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-07-15 11:58:40 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-15 11:58:40 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 11:58:40 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 11:58:40 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 11:58:40 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 12:02:31 - INFO --> Access token expired for store: pc00, refreshing... 2026-07-15 12:02:32 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-07-15 12:02:32 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-07-15 12:02:32 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-07-15 12:02:32 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-15 12:02:32 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:02:32 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-15 12:02:32 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-07-15 12:02:32 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-15 12:02:32 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:02:32 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-07-15 12:02:32 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-15 12:02:32 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-07-15 12:02:32 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-07-15 12:02:32 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-07-15 12:02:32 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:02:32 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:02:32 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:02:32 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-07-15 12:02:32 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-07-15 12:02:32 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-07-15 12:02:32 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-07-15 12:02:32 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-07-15 12:02:32 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-07-15 12:02:32 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-07-15 12:02:32 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-07-15 12:02:32 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-07-15 12:02:32 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-07-15 12:02:32 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-07-15 12:02:32 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-07-15 12:02:32 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:02:32 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-07-15 12:02:32 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:02:32 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-07-15 12:02:32 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:02:32 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-15 12:02:32 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:02:32 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 12:02:32 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:02:32 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 12:02:32 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:02:32 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-07-15 12:02:32 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:02:32 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 12:02:32 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:02:32 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 12:02:32 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:02:32 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-15 12:02:32 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:02:32 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-15 12:02:32 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:02:32 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 12:02:32 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:02:32 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 12:02:32 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-07-15 12:02:32 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-15 12:02:32 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 12:02:32 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 12:02:32 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:02:32 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 12:24:29 - INFO --> Access token expired for store: pc00, refreshing... 2026-07-15 12:24:29 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-07-15 12:24:29 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-07-15 12:24:29 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-07-15 12:24:29 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-15 12:24:29 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:24:29 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-15 12:24:29 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-07-15 12:24:29 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-15 12:24:29 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:24:29 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-07-15 12:24:29 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-15 12:24:29 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-07-15 12:24:30 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-07-15 12:24:30 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-07-15 12:24:30 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:24:30 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:24:30 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:24:30 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-07-15 12:24:30 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-07-15 12:24:30 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-07-15 12:24:30 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-07-15 12:24:30 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-07-15 12:24:30 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-07-15 12:24:30 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-07-15 12:24:30 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-07-15 12:24:30 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-07-15 12:24:30 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-07-15 12:24:30 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-07-15 12:24:30 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-07-15 12:24:30 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:24:30 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-07-15 12:24:30 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:24:30 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-07-15 12:24:30 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:24:30 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-15 12:24:30 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:24:30 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 12:24:30 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:24:30 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 12:24:30 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:24:30 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-07-15 12:24:30 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:24:30 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 12:24:30 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:24:30 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 12:24:30 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:24:30 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-15 12:24:30 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:24:30 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-15 12:24:30 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:24:30 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 12:24:30 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:24:30 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 12:24:30 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-07-15 12:24:30 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-15 12:24:30 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 12:24:30 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 12:24:30 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:24:30 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 12:26:08 - INFO --> Access token expired for store: pc00, refreshing... 2026-07-15 12:26:08 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-07-15 12:26:09 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-07-15 12:26:09 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-07-15 12:26:09 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-15 12:26:09 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:26:09 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-15 12:26:09 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-07-15 12:26:09 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-15 12:26:09 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:26:09 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-07-15 12:26:09 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-15 12:26:09 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-07-15 12:26:09 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-07-15 12:26:09 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-07-15 12:26:09 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:26:09 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:26:09 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:26:09 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-07-15 12:26:09 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-07-15 12:26:09 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-07-15 12:26:09 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-07-15 12:26:09 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-07-15 12:26:09 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-07-15 12:26:09 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-07-15 12:26:09 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-07-15 12:26:09 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-07-15 12:26:09 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-07-15 12:26:09 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-07-15 12:26:09 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-07-15 12:26:09 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:26:09 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-07-15 12:26:09 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:26:09 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-07-15 12:26:09 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:26:09 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-15 12:26:09 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:26:09 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 12:26:09 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:26:09 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 12:26:09 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:26:09 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-07-15 12:26:09 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:26:09 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 12:26:09 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:26:09 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 12:26:09 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:26:09 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-15 12:26:09 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:26:09 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-15 12:26:09 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:26:09 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 12:26:09 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:26:09 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 12:26:09 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-07-15 12:26:09 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-15 12:26:09 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 12:26:09 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 12:26:09 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:26:09 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 12:45:43 - INFO --> Access token expired for store: pc00, refreshing... 2026-07-15 12:45:44 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-07-15 12:45:44 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-07-15 12:45:44 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-07-15 12:45:44 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-15 12:45:44 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:45:44 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-15 12:45:44 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-07-15 12:45:44 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-15 12:45:44 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:45:44 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-07-15 12:45:44 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-15 12:45:44 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-07-15 12:45:44 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-07-15 12:45:44 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-07-15 12:45:44 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:45:44 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:45:44 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:45:44 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-07-15 12:45:44 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-07-15 12:45:44 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-07-15 12:45:44 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-07-15 12:45:44 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-07-15 12:45:44 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-07-15 12:45:44 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-07-15 12:45:44 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-07-15 12:45:44 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-07-15 12:45:44 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-07-15 12:45:44 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-07-15 12:45:44 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-07-15 12:45:44 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:45:44 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-07-15 12:45:44 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:45:44 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-07-15 12:45:44 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:45:44 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-15 12:45:44 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:45:44 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 12:45:44 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:45:44 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 12:45:44 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:45:44 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-07-15 12:45:44 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:45:44 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 12:45:44 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:45:44 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 12:45:44 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:45:44 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-15 12:45:44 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:45:44 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-15 12:45:44 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:45:44 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 12:45:44 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:45:44 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 12:45:44 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-07-15 12:45:44 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-15 12:45:44 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 12:45:44 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 12:45:44 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 12:45:44 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 14:40:51 - INFO --> Access token expired for store: pc00, refreshing... 2026-07-15 14:40:52 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-07-15 14:40:52 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-07-15 14:40:52 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-07-15 14:40:52 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-15 14:40:52 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 14:40:52 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-15 14:40:52 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-07-15 14:40:52 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-15 14:40:52 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 14:40:52 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-07-15 14:40:52 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-15 14:40:52 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-07-15 14:40:52 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-07-15 14:40:52 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-07-15 14:40:52 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 14:40:52 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 14:40:52 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 14:40:52 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-07-15 14:40:52 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-07-15 14:40:52 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-07-15 14:40:52 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-07-15 14:40:52 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-07-15 14:40:52 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-07-15 14:40:52 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-07-15 14:40:52 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-07-15 14:40:52 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-07-15 14:40:52 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-07-15 14:40:52 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-07-15 14:40:52 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-07-15 14:40:52 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 14:40:52 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-07-15 14:40:52 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 14:40:52 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-07-15 14:40:52 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 14:40:52 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-15 14:40:52 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 14:40:52 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 14:40:52 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 14:40:52 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 14:40:52 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 14:40:52 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-07-15 14:40:52 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 14:40:52 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 14:40:52 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 14:40:52 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 14:40:52 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 14:40:52 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-15 14:40:52 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 14:40:52 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-15 14:40:52 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 14:40:52 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 14:40:52 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 14:40:52 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 14:40:52 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-07-15 14:40:52 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-15 14:40:52 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 14:40:52 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-15 14:40:52 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-15 14:40:52 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 9:01:33 - INFO --> Access token expired for store: pc00, refreshing... 2026-07-16 9:01:34 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-07-16 9:01:34 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-07-16 9:01:34 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-07-16 9:01:34 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-16 9:01:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 9:01:34 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-16 9:01:34 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-07-16 9:01:34 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-16 9:01:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 9:01:34 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-07-16 9:01:34 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-16 9:01:34 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-07-16 9:01:34 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-07-16 9:01:34 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-07-16 9:01:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 9:01:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 9:01:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 9:01:34 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-07-16 9:01:34 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-07-16 9:01:34 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-07-16 9:01:34 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-07-16 9:01:34 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-07-16 9:01:34 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-07-16 9:01:34 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-07-16 9:01:34 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-07-16 9:01:34 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-07-16 9:01:34 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-07-16 9:01:34 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-07-16 9:01:34 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-07-16 9:01:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 9:01:34 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-07-16 9:01:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 9:01:34 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-07-16 9:01:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 9:01:34 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-16 9:01:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 9:01:34 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 9:01:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 9:01:34 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 9:01:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 9:01:34 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-07-16 9:01:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 9:01:34 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 9:01:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 9:01:34 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 9:01:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 9:01:34 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-16 9:01:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 9:01:34 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-16 9:01:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 9:01:34 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 9:01:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 9:01:34 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 9:01:34 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-07-16 9:01:34 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-16 9:01:34 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 9:01:34 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 9:01:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 9:01:34 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 9:53:32 - INFO --> Access token expired for store: pc00, refreshing... 2026-07-16 9:53:33 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-07-16 9:53:33 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-07-16 9:53:33 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-07-16 9:53:33 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-16 9:53:33 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 9:53:33 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-16 9:53:33 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-07-16 9:53:33 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-16 9:53:33 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 9:53:33 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-07-16 9:53:33 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-16 9:53:33 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-07-16 9:53:33 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-07-16 9:53:33 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-07-16 9:53:33 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 9:53:33 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 9:53:33 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 9:53:33 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-07-16 9:53:34 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-07-16 9:53:34 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-07-16 9:53:34 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-07-16 9:53:34 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-07-16 9:53:34 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-07-16 9:53:34 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-07-16 9:53:34 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-07-16 9:53:34 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-07-16 9:53:34 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-07-16 9:53:34 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-07-16 9:53:34 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-07-16 9:53:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 9:53:34 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-07-16 9:53:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 9:53:34 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-07-16 9:53:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 9:53:34 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-16 9:53:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 9:53:34 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 9:53:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 9:53:34 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 9:53:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 9:53:34 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-07-16 9:53:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 9:53:34 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 9:53:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 9:53:34 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 9:53:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 9:53:34 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-16 9:53:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 9:53:34 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-16 9:53:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 9:53:34 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 9:53:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 9:53:34 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 9:53:34 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-07-16 9:53:34 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-16 9:53:34 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 9:53:34 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 9:53:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 9:53:34 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 10:51:12 - INFO --> Access token expired for store: pc00, refreshing... 2026-07-16 10:51:12 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-07-16 10:51:12 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-07-16 10:51:12 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-07-16 10:51:12 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-16 10:51:12 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 10:51:12 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-16 10:51:12 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-07-16 10:51:12 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-16 10:51:12 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 10:51:12 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-07-16 10:51:12 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-16 10:51:12 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-07-16 10:51:12 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-07-16 10:51:12 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-07-16 10:51:12 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 10:51:12 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 10:51:12 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 10:51:13 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-07-16 10:51:13 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-07-16 10:51:13 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-07-16 10:51:13 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-07-16 10:51:13 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-07-16 10:51:13 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-07-16 10:51:13 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-07-16 10:51:13 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-07-16 10:51:13 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-07-16 10:51:13 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-07-16 10:51:13 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-07-16 10:51:13 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-07-16 10:51:13 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 10:51:13 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-07-16 10:51:13 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 10:51:13 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-07-16 10:51:13 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 10:51:13 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-16 10:51:13 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 10:51:13 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 10:51:13 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 10:51:13 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 10:51:13 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 10:51:13 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-07-16 10:51:13 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 10:51:13 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 10:51:13 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 10:51:13 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 10:51:13 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 10:51:13 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-16 10:51:13 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 10:51:13 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-16 10:51:13 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 10:51:13 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 10:51:13 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 10:51:13 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 10:51:13 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-07-16 10:51:13 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-16 10:51:13 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 10:51:13 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 10:51:13 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 10:51:13 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 11:25:33 - INFO --> Access token expired for store: pc00, refreshing... 2026-07-16 11:25:34 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-07-16 11:25:34 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-07-16 11:25:34 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-07-16 11:25:34 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-16 11:25:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 11:25:34 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-16 11:25:34 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-07-16 11:25:34 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-16 11:25:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 11:25:34 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-07-16 11:25:34 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-16 11:25:34 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-07-16 11:25:34 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-07-16 11:25:34 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-07-16 11:25:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 11:25:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 11:25:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 11:25:34 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-07-16 11:25:34 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-07-16 11:25:34 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-07-16 11:25:34 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-07-16 11:25:34 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-07-16 11:25:34 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-07-16 11:25:34 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-07-16 11:25:34 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-07-16 11:25:34 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-07-16 11:25:34 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-07-16 11:25:34 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-07-16 11:25:34 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-07-16 11:25:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 11:25:34 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-07-16 11:25:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 11:25:34 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-07-16 11:25:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 11:25:34 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-16 11:25:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 11:25:34 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 11:25:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 11:25:34 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 11:25:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 11:25:34 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-07-16 11:25:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 11:25:34 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 11:25:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 11:25:34 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 11:25:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 11:25:34 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-16 11:25:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 11:25:34 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-16 11:25:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 11:25:34 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 11:25:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 11:25:34 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 11:25:34 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-07-16 11:25:34 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-16 11:25:34 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 11:25:34 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 11:25:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 11:25:34 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 13:16:32 - INFO --> Access token expired for store: pc00, refreshing... 2026-07-16 13:16:32 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-07-16 13:16:33 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-07-16 13:16:33 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-07-16 13:16:33 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-16 13:16:33 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:16:33 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-16 13:16:33 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-07-16 13:16:33 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-16 13:16:33 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:16:33 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-07-16 13:16:33 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-16 13:16:33 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-07-16 13:16:33 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-07-16 13:16:33 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-07-16 13:16:33 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:16:33 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:16:33 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:16:33 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-07-16 13:16:33 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-07-16 13:16:33 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-07-16 13:16:33 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-07-16 13:16:33 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-07-16 13:16:33 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-07-16 13:16:33 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-07-16 13:16:33 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-07-16 13:16:33 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-07-16 13:16:33 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-07-16 13:16:33 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-07-16 13:16:33 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-07-16 13:16:33 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:16:33 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-07-16 13:16:33 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:16:33 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-07-16 13:16:33 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:16:33 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-16 13:16:33 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:16:33 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 13:16:33 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:16:33 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 13:16:33 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:16:33 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-07-16 13:16:33 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:16:33 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 13:16:33 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:16:33 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 13:16:33 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:16:33 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-16 13:16:33 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:16:33 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-16 13:16:33 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:16:33 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 13:16:33 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:16:33 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 13:16:33 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-07-16 13:16:33 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-16 13:16:33 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 13:16:33 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 13:16:33 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:16:33 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 13:18:04 - INFO --> Access token expired for store: pc00, refreshing... 2026-07-16 13:18:05 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-07-16 13:18:05 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-07-16 13:18:05 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-07-16 13:18:05 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-16 13:18:05 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:18:05 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-16 13:18:05 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-07-16 13:18:05 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-16 13:18:05 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:18:05 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-07-16 13:18:05 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-16 13:18:05 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-07-16 13:18:05 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-07-16 13:18:05 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-07-16 13:18:05 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:18:05 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:18:05 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:18:05 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-07-16 13:18:05 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-07-16 13:18:05 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-07-16 13:18:05 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-07-16 13:18:05 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-07-16 13:18:05 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-07-16 13:18:05 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-07-16 13:18:05 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-07-16 13:18:05 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-07-16 13:18:05 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-07-16 13:18:05 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-07-16 13:18:05 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-07-16 13:18:05 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:18:05 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-07-16 13:18:05 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:18:05 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-07-16 13:18:05 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:18:05 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-16 13:18:05 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:18:05 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 13:18:05 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:18:05 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 13:18:05 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:18:05 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-07-16 13:18:05 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:18:05 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 13:18:05 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:18:05 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 13:18:05 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:18:05 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-16 13:18:05 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:18:05 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-16 13:18:05 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:18:05 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 13:18:05 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:18:05 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 13:18:05 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-07-16 13:18:05 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-16 13:18:05 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 13:18:05 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 13:18:05 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:18:05 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 13:19:31 - INFO --> Access token expired for store: pc00, refreshing... 2026-07-16 13:19:32 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-07-16 13:19:32 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-07-16 13:19:32 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-07-16 13:19:32 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-16 13:19:32 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:19:32 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-16 13:19:32 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-07-16 13:19:32 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-16 13:19:32 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:19:32 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-07-16 13:19:32 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-16 13:19:32 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-07-16 13:19:32 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-07-16 13:19:32 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-07-16 13:19:32 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:19:32 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:19:32 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:19:32 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-07-16 13:19:32 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-07-16 13:19:32 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-07-16 13:19:32 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-07-16 13:19:32 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-07-16 13:19:32 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-07-16 13:19:32 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-07-16 13:19:32 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-07-16 13:19:32 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-07-16 13:19:32 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-07-16 13:19:32 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-07-16 13:19:32 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-07-16 13:19:32 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:19:32 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-07-16 13:19:32 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:19:32 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-07-16 13:19:32 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:19:32 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-16 13:19:32 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:19:32 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 13:19:32 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:19:32 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 13:19:32 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:19:32 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-07-16 13:19:32 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:19:32 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 13:19:32 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:19:32 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 13:19:32 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:19:32 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-16 13:19:32 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:19:32 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-16 13:19:32 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:19:32 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 13:19:32 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:19:32 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 13:19:32 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-07-16 13:19:32 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-16 13:19:32 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 13:19:32 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 13:19:32 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:19:32 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 13:56:20 - INFO --> Access token expired for store: pc00, refreshing... 2026-07-16 13:56:20 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-07-16 13:56:20 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-07-16 13:56:20 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-07-16 13:56:20 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-16 13:56:20 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:56:20 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-16 13:56:20 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-07-16 13:56:20 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-16 13:56:20 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:56:20 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-07-16 13:56:20 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-16 13:56:20 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-07-16 13:56:20 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-07-16 13:56:20 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-07-16 13:56:20 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:56:20 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:56:20 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:56:21 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-07-16 13:56:21 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-07-16 13:56:21 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-07-16 13:56:21 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-07-16 13:56:21 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-07-16 13:56:21 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-07-16 13:56:21 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-07-16 13:56:21 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-07-16 13:56:21 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-07-16 13:56:21 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-07-16 13:56:21 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-07-16 13:56:21 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-07-16 13:56:21 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:56:21 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-07-16 13:56:21 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:56:21 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-07-16 13:56:21 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:56:21 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-16 13:56:21 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:56:21 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 13:56:21 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:56:21 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 13:56:21 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:56:21 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-07-16 13:56:21 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:56:21 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 13:56:21 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:56:21 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 13:56:21 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:56:21 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-16 13:56:21 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:56:21 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-16 13:56:21 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:56:21 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 13:56:21 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:56:21 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 13:56:21 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-07-16 13:56:21 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-16 13:56:21 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 13:56:21 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 13:56:21 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:56:21 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 13:57:50 - INFO --> Access token expired for store: pc00, refreshing... 2026-07-16 13:57:50 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-07-16 13:57:51 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-07-16 13:57:51 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-07-16 13:57:51 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-16 13:57:51 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:57:51 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-16 13:57:51 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-07-16 13:57:51 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-16 13:57:51 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:57:51 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-07-16 13:57:51 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-16 13:57:51 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-07-16 13:57:51 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-07-16 13:57:51 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-07-16 13:57:51 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:57:51 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:57:51 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:57:51 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-07-16 13:57:51 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-07-16 13:57:51 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-07-16 13:57:51 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-07-16 13:57:51 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-07-16 13:57:51 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-07-16 13:57:51 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-07-16 13:57:51 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-07-16 13:57:51 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-07-16 13:57:51 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-07-16 13:57:51 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-07-16 13:57:51 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-07-16 13:57:51 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:57:51 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-07-16 13:57:51 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:57:51 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-07-16 13:57:51 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:57:51 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-16 13:57:51 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:57:51 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 13:57:51 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:57:51 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 13:57:51 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:57:51 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-07-16 13:57:51 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:57:51 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 13:57:51 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:57:51 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 13:57:51 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:57:51 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-16 13:57:51 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:57:51 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-16 13:57:51 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:57:51 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 13:57:51 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:57:51 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 13:57:51 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-07-16 13:57:51 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-16 13:57:51 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 13:57:51 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-16 13:57:51 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-16 13:57:51 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 15:27:13 - INFO --> Access token expired for store: pc00, refreshing... 2026-07-21 15:27:13 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-07-21 15:27:14 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-07-21 15:27:14 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-07-21 15:27:14 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-21 15:27:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 15:27:14 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-21 15:27:14 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-07-21 15:27:14 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-21 15:27:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 15:27:14 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-07-21 15:27:14 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-21 15:27:14 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-07-21 15:27:14 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-07-21 15:27:14 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-07-21 15:27:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 15:27:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 15:27:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 15:27:14 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-07-21 15:27:14 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-07-21 15:27:14 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-07-21 15:27:14 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-07-21 15:27:14 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-07-21 15:27:14 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-07-21 15:27:14 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-07-21 15:27:14 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-07-21 15:27:14 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-07-21 15:27:14 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-07-21 15:27:14 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-07-21 15:27:14 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-07-21 15:27:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 15:27:14 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-07-21 15:27:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 15:27:14 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-07-21 15:27:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 15:27:14 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-21 15:27:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 15:27:14 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 15:27:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 15:27:14 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 15:27:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 15:27:14 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-07-21 15:27:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 15:27:14 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 15:27:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 15:27:14 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 15:27:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 15:27:14 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-21 15:27:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 15:27:14 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-21 15:27:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 15:27:14 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 15:27:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 15:27:14 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 15:27:14 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-07-21 15:27:14 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-21 15:27:14 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 15:27:14 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 15:27:14 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 15:27:14 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 15:28:36 - INFO --> Access token expired for store: pc00, refreshing... 2026-07-21 15:28:37 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-07-21 15:28:37 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-07-21 15:28:37 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-07-21 15:28:37 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-21 15:28:37 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 15:28:37 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-21 15:28:37 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-07-21 15:28:37 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-21 15:28:37 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 15:28:37 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-07-21 15:28:37 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-21 15:28:37 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-07-21 15:28:37 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-07-21 15:28:37 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-07-21 15:28:37 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 15:28:37 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 15:28:37 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 15:28:37 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-07-21 15:28:37 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-07-21 15:28:37 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-07-21 15:28:37 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-07-21 15:28:37 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-07-21 15:28:37 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-07-21 15:28:37 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-07-21 15:28:37 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-07-21 15:28:37 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-07-21 15:28:37 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-07-21 15:28:37 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-07-21 15:28:37 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-07-21 15:28:37 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 15:28:37 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-07-21 15:28:37 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 15:28:37 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-07-21 15:28:37 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 15:28:37 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-21 15:28:37 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 15:28:37 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 15:28:37 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 15:28:37 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 15:28:37 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 15:28:37 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-07-21 15:28:37 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 15:28:37 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 15:28:37 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 15:28:37 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 15:28:37 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 15:28:37 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-21 15:28:37 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 15:28:37 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-21 15:28:37 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 15:28:37 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 15:28:37 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 15:28:37 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 15:28:37 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-07-21 15:28:37 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-21 15:28:37 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 15:28:37 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 15:28:37 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 15:28:37 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 16:36:17 - INFO --> Access token expired for store: pc00, refreshing... 2026-07-21 16:36:18 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-07-21 16:36:18 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-07-21 16:36:18 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-07-21 16:36:18 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-21 16:36:18 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 16:36:18 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-21 16:36:18 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-07-21 16:36:18 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-21 16:36:18 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 16:36:18 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-07-21 16:36:18 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-21 16:36:18 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-07-21 16:36:18 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-07-21 16:36:18 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-07-21 16:36:18 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 16:36:18 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 16:36:18 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 16:36:18 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-07-21 16:36:18 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-07-21 16:36:18 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-07-21 16:36:18 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-07-21 16:36:18 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-07-21 16:36:18 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-07-21 16:36:18 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-07-21 16:36:18 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-07-21 16:36:18 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-07-21 16:36:18 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-07-21 16:36:18 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-07-21 16:36:18 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-07-21 16:36:18 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 16:36:18 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-07-21 16:36:18 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 16:36:18 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-07-21 16:36:18 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 16:36:18 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-21 16:36:18 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 16:36:18 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 16:36:18 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 16:36:18 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 16:36:18 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 16:36:18 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-07-21 16:36:18 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 16:36:18 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 16:36:18 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 16:36:18 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 16:36:18 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 16:36:18 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-21 16:36:18 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 16:36:18 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-21 16:36:18 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 16:36:18 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 16:36:18 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 16:36:18 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 16:36:18 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-07-21 16:36:18 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-21 16:36:18 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 16:36:18 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 16:36:18 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 16:36:18 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 17:26:12 - INFO --> Access token expired for store: pc00, refreshing... 2026-07-21 17:26:13 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-07-21 17:26:13 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-07-21 17:26:13 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-07-21 17:26:13 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-21 17:26:13 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 17:26:13 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-21 17:26:13 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-07-21 17:26:13 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-21 17:26:13 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 17:26:13 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-07-21 17:26:13 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-21 17:26:13 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-07-21 17:26:13 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-07-21 17:26:13 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-07-21 17:26:13 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 17:26:13 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 17:26:13 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 17:26:13 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-07-21 17:26:13 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-07-21 17:26:13 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-07-21 17:26:13 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-07-21 17:26:13 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-07-21 17:26:13 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-07-21 17:26:13 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-07-21 17:26:13 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-07-21 17:26:13 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-07-21 17:26:13 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-07-21 17:26:13 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-07-21 17:26:13 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-07-21 17:26:13 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 17:26:13 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-07-21 17:26:13 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 17:26:13 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-07-21 17:26:13 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 17:26:13 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-21 17:26:13 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 17:26:13 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 17:26:13 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 17:26:13 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 17:26:13 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 17:26:13 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-07-21 17:26:13 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 17:26:13 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 17:26:13 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 17:26:13 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 17:26:13 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 17:26:13 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-21 17:26:13 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 17:26:13 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-21 17:26:13 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 17:26:13 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 17:26:13 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 17:26:13 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 17:26:13 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-07-21 17:26:13 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-21 17:26:13 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 17:26:13 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 17:26:13 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 17:26:13 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 17:27:33 - INFO --> Access token expired for store: pc00, refreshing... 2026-07-21 17:27:34 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-07-21 17:27:34 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-07-21 17:27:34 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-07-21 17:27:34 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-21 17:27:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 17:27:34 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-21 17:27:34 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-07-21 17:27:34 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-21 17:27:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 17:27:34 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-07-21 17:27:34 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-21 17:27:34 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-07-21 17:27:34 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-07-21 17:27:34 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-07-21 17:27:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 17:27:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 17:27:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 17:27:34 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-07-21 17:27:34 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-07-21 17:27:34 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-07-21 17:27:34 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-07-21 17:27:34 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-07-21 17:27:34 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-07-21 17:27:34 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-07-21 17:27:34 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-07-21 17:27:34 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-07-21 17:27:34 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-07-21 17:27:34 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-07-21 17:27:34 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-07-21 17:27:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 17:27:34 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-07-21 17:27:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 17:27:34 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-07-21 17:27:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 17:27:34 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-21 17:27:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 17:27:34 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 17:27:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 17:27:34 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 17:27:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 17:27:34 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-07-21 17:27:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 17:27:34 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 17:27:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 17:27:34 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 17:27:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 17:27:34 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-21 17:27:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 17:27:34 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-21 17:27:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 17:27:34 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 17:27:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 17:27:34 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 17:27:34 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-07-21 17:27:34 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-21 17:27:34 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 17:27:34 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 17:27:34 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 17:27:34 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 18:09:26 - INFO --> Access token expired for store: pc00, refreshing... 2026-07-21 18:09:27 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-07-21 18:09:27 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-07-21 18:09:27 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-07-21 18:09:27 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-21 18:09:27 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 18:09:27 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-21 18:09:27 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-07-21 18:09:27 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-21 18:09:27 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 18:09:27 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-07-21 18:09:27 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-21 18:09:27 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-07-21 18:09:27 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-07-21 18:09:27 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-07-21 18:09:27 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 18:09:27 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 18:09:27 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 18:09:27 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-07-21 18:09:27 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-07-21 18:09:27 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-07-21 18:09:27 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-07-21 18:09:27 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-07-21 18:09:27 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-07-21 18:09:27 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-07-21 18:09:27 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-07-21 18:09:27 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-07-21 18:09:27 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-07-21 18:09:27 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-07-21 18:09:27 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-07-21 18:09:27 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 18:09:27 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-07-21 18:09:27 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 18:09:27 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-07-21 18:09:27 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 18:09:27 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-21 18:09:27 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 18:09:27 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 18:09:27 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 18:09:27 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 18:09:27 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 18:09:27 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-07-21 18:09:27 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 18:09:27 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 18:09:27 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 18:09:27 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 18:09:27 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 18:09:27 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-21 18:09:27 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 18:09:27 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-21 18:09:27 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 18:09:27 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 18:09:27 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 18:09:27 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 18:09:27 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-07-21 18:09:27 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-21 18:09:27 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 18:09:27 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 18:09:27 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 18:09:27 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 18:11:23 - INFO --> Access token expired for store: pc00, refreshing... 2026-07-21 18:11:24 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-07-21 18:11:24 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-07-21 18:11:24 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-07-21 18:11:24 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-21 18:11:24 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 18:11:24 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-21 18:11:24 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-07-21 18:11:24 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-21 18:11:24 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 18:11:24 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-07-21 18:11:24 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-21 18:11:24 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-07-21 18:11:24 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-07-21 18:11:24 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-07-21 18:11:24 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 18:11:24 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 18:11:24 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 18:11:24 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-07-21 18:11:24 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-07-21 18:11:24 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-07-21 18:11:24 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-07-21 18:11:24 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-07-21 18:11:24 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-07-21 18:11:24 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-07-21 18:11:24 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-07-21 18:11:24 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-07-21 18:11:24 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-07-21 18:11:24 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-07-21 18:11:24 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-07-21 18:11:24 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 18:11:24 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-07-21 18:11:24 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 18:11:24 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-07-21 18:11:24 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 18:11:24 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-21 18:11:24 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 18:11:24 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 18:11:24 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 18:11:24 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 18:11:24 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 18:11:24 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-07-21 18:11:24 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 18:11:24 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 18:11:24 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 18:11:24 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 18:11:24 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 18:11:24 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-21 18:11:24 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 18:11:24 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-21 18:11:24 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 18:11:24 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 18:11:24 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 18:11:24 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 18:11:24 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-07-21 18:11:24 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-21 18:11:24 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 18:11:24 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-21 18:11:25 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-21 18:11:25 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-22 14:10:30 - INFO --> Access token expired for store: pc00, refreshing... 2026-07-22 14:10:30 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-07-22 14:10:30 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-07-22 14:10:30 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-07-22 14:10:30 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-22 14:10:30 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:10:30 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-22 14:10:30 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-07-22 14:10:30 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-22 14:10:30 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:10:30 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-07-22 14:10:30 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-22 14:10:30 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-07-22 14:10:30 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-07-22 14:10:30 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-07-22 14:10:30 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:10:30 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:10:30 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:10:30 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-07-22 14:10:31 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-07-22 14:10:31 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-07-22 14:10:31 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-07-22 14:10:31 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-07-22 14:10:31 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-07-22 14:10:31 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-07-22 14:10:31 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-07-22 14:10:31 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-07-22 14:10:31 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-07-22 14:10:31 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-07-22 14:10:31 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-07-22 14:10:31 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:10:31 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-07-22 14:10:31 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:10:31 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-07-22 14:10:31 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:10:31 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-22 14:10:31 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:10:31 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-22 14:10:31 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:10:31 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-22 14:10:31 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:10:31 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-07-22 14:10:31 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:10:31 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-22 14:10:31 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:10:31 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-22 14:10:31 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:10:31 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-22 14:10:31 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:10:31 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-22 14:10:31 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:10:31 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-22 14:10:31 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:10:31 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-22 14:10:31 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-07-22 14:10:31 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-22 14:10:31 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-22 14:10:31 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-22 14:10:31 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:10:31 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-22 14:12:06 - INFO --> Access token expired for store: pc00, refreshing... 2026-07-22 14:12:07 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-07-22 14:12:07 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-07-22 14:12:07 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-07-22 14:12:07 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-22 14:12:07 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:12:07 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-22 14:12:07 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-07-22 14:12:07 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-22 14:12:07 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:12:07 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-07-22 14:12:07 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-22 14:12:07 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-07-22 14:12:07 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-07-22 14:12:07 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-07-22 14:12:07 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:12:07 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:12:07 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:12:07 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-07-22 14:12:07 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-07-22 14:12:07 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-07-22 14:12:07 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-07-22 14:12:07 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-07-22 14:12:07 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-07-22 14:12:07 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-07-22 14:12:07 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-07-22 14:12:07 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-07-22 14:12:07 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-07-22 14:12:07 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-07-22 14:12:07 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-07-22 14:12:07 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:12:07 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-07-22 14:12:07 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:12:07 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-07-22 14:12:07 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:12:07 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-22 14:12:07 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:12:07 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-22 14:12:07 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:12:07 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-22 14:12:07 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:12:07 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-07-22 14:12:07 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:12:07 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-22 14:12:07 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:12:07 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-22 14:12:07 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:12:07 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-22 14:12:07 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:12:07 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-22 14:12:07 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:12:07 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-22 14:12:07 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:12:07 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-22 14:12:07 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-07-22 14:12:07 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-22 14:12:07 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-22 14:12:07 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-22 14:12:07 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:12:07 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-22 14:13:41 - INFO --> Access token expired for store: pc00, refreshing... 2026-07-22 14:13:41 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-07-22 14:13:41 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-07-22 14:13:41 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-07-22 14:13:41 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-22 14:13:41 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:13:41 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-22 14:13:41 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-07-22 14:13:41 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-22 14:13:41 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:13:41 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-07-22 14:13:41 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-22 14:13:41 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-07-22 14:13:41 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-07-22 14:13:41 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-07-22 14:13:41 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:13:41 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:13:41 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:13:41 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-07-22 14:13:41 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-07-22 14:13:41 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-07-22 14:13:41 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-07-22 14:13:41 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-07-22 14:13:41 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-07-22 14:13:41 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-07-22 14:13:41 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-07-22 14:13:41 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-07-22 14:13:41 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-07-22 14:13:41 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-07-22 14:13:41 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-07-22 14:13:41 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:13:41 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-07-22 14:13:41 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:13:41 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-07-22 14:13:42 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:13:42 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-22 14:13:42 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:13:42 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-22 14:13:42 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:13:42 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-22 14:13:42 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:13:42 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-07-22 14:13:42 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:13:42 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-22 14:13:42 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:13:42 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-22 14:13:42 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:13:42 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-22 14:13:42 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:13:42 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-22 14:13:42 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:13:42 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-22 14:13:42 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:13:42 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-22 14:13:42 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-07-22 14:13:42 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-22 14:13:42 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-22 14:13:42 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-22 14:13:42 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:13:42 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-22 14:15:58 - INFO --> Access token expired for store: pc00, refreshing... 2026-07-22 14:15:58 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-07-22 14:15:58 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-07-22 14:15:58 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-07-22 14:15:58 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-22 14:15:58 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:15:58 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-22 14:15:58 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-07-22 14:15:58 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-22 14:15:58 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:15:58 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-07-22 14:15:58 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-07-22 14:15:58 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-07-22 14:15:58 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-07-22 14:15:58 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-07-22 14:15:58 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:15:58 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:15:58 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:15:58 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-07-22 14:15:58 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-07-22 14:15:58 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-07-22 14:15:58 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-07-22 14:15:58 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-07-22 14:15:58 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-07-22 14:15:58 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-07-22 14:15:58 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-07-22 14:15:58 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-07-22 14:15:58 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-07-22 14:15:58 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-07-22 14:15:58 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-07-22 14:15:58 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:15:58 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-07-22 14:15:58 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:15:58 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-07-22 14:15:58 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:15:58 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-07-22 14:15:58 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:15:58 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-22 14:15:58 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:15:58 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-22 14:15:58 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:15:58 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-07-22 14:15:58 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:15:58 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-22 14:15:58 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:15:58 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-22 14:15:58 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:15:58 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-22 14:15:58 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:15:58 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-07-22 14:15:58 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:15:58 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-22 14:15:58 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:15:58 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-22 14:15:58 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-07-22 14:15:58 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-07-22 14:15:58 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-22 14:15:58 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-07-22 14:15:58 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-07-22 14:15:58 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-08-29 12:19:01 - INFO --> Access token expired for store: pc00, refreshing... 2026-08-29 12:19:02 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-08-29 12:19:03 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-08-29 12:19:03 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-08-29 12:19:03 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-08-29 12:19:03 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-08-29 12:19:03 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-08-29 12:19:03 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-08-29 12:19:03 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-08-29 12:19:03 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-08-29 12:19:03 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-08-29 12:19:03 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-08-29 12:19:03 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-08-29 12:19:03 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-08-29 12:19:03 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-08-29 12:19:03 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-08-29 12:19:03 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-08-29 12:19:03 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-08-29 12:19:03 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-08-29 12:19:04 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-08-29 12:19:04 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-08-29 12:19:04 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-08-29 12:19:04 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-08-29 12:19:04 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-08-29 12:19:04 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-08-29 12:19:04 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-08-29 12:19:04 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-08-29 12:19:04 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-08-29 12:19:04 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-08-29 12:19:04 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-08-29 12:19:04 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-08-29 12:19:04 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-08-29 12:19:04 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-08-29 12:19:04 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-08-29 12:19:04 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-08-29 12:19:04 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-08-29 12:19:04 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-08-29 12:19:04 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-08-29 12:19:04 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-08-29 12:19:04 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-08-29 12:19:04 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-08-29 12:19:04 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-08-29 12:19:04 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-08-29 12:19:04 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-08-29 12:19:04 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-08-29 12:19:04 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-08-29 12:19:04 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-08-29 12:19:04 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-08-29 12:19:04 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-08-29 12:19:04 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-08-29 12:19:04 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-08-29 12:19:04 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-08-29 12:19:04 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-08-29 12:19:04 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-08-29 12:19:04 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-08-29 12:19:04 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-08-29 12:19:04 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-08-29 12:19:04 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-08-29 12:19:04 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-08-29 12:19:04 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-08-29 12:39:56 - INFO --> Access token expired for store: pc00, refreshing... 2026-08-29 12:39:57 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-08-29 12:39:57 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-08-29 12:39:57 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-08-29 12:39:57 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-08-29 12:39:57 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-08-29 12:39:57 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-08-29 12:39:57 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-08-29 12:39:57 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-08-29 12:39:57 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-08-29 12:39:57 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-08-29 12:39:57 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-08-29 12:39:57 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-08-29 12:39:57 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-08-29 12:39:57 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-08-29 12:39:57 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-08-29 12:39:57 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-08-29 12:39:57 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-08-29 12:39:57 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-08-29 12:39:57 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-08-29 12:39:57 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-08-29 12:39:57 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-08-29 12:39:57 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-08-29 12:39:57 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-08-29 12:39:57 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-08-29 12:39:57 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-08-29 12:39:57 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-08-29 12:39:57 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-08-29 12:39:57 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-08-29 12:39:57 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-08-29 12:39:57 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-08-29 12:39:57 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-08-29 12:39:57 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-08-29 12:39:57 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-08-29 12:39:57 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-08-29 12:39:57 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-08-29 12:39:57 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-08-29 12:39:57 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-08-29 12:39:57 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-08-29 12:39:57 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-08-29 12:39:57 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-08-29 12:39:57 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-08-29 12:39:57 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-08-29 12:39:57 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-08-29 12:39:57 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-08-29 12:39:57 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-08-29 12:39:57 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-08-29 12:39:57 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-08-29 12:39:57 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-08-29 12:39:57 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-08-29 12:39:57 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-08-29 12:39:57 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-08-29 12:39:57 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-08-29 12:39:57 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-08-29 12:39:57 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-08-29 12:39:57 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-08-29 12:39:57 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-08-29 12:39:57 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-08-29 12:39:57 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-08-29 12:39:57 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-08-31 14:42:15 - INFO --> Access token expired for store: pc00, refreshing... 2026-08-31 14:42:15 - ERROR --> Failed to refresh token for store pc00: Refresh OAuth 2 Access token with Refresh Token failed. Body: [{"error":"invalid_request"}]. 2026-08-31 14:42:16 - WARN --> Auto-sync de-dupe: JE already exists in QBO for pc00 2026-05-14 (JE Id: 12345, DocNumber: BK-pc00-20260514); refusing duplicate post. 2026-08-31 14:42:16 - ERROR --> Auto-sync refusing to post for pc00 2026-05-14 — QBO de-dupe query failed: Network blip 2026-08-31 14:42:16 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-08-31 14:42:16 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-08-31 14:42:16 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-08-31 14:42:16 - INFO --> Sync disabled for store pc00, skipping date 2026-05-14 2026-08-31 14:42:16 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-08-31 14:42:16 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-08-31 14:42:16 - ERROR --> Refusing to post imbalanced journal entry for pc00 on 2026-05-14: debits=150 credits=0 diff=150. No balancing account is mapped (cashOverShort) and no Expense fallback is available — configure a Cash Over/Short mapping in QuickBooks > Account Mapping before retrying. 2026-08-31 14:42:16 - WARN --> Journal entry not balanced. Debits: 150, Credits: 0, Diff: 150 2026-08-31 14:42:16 - INFO --> Auto-balanced journal entry. Final debits: 150, credits: 150 2026-08-31 14:42:16 - ERROR --> Failed to create journal entry: Call to undefined method stdClass::Add() 2026-08-31 14:42:16 - ERROR --> Failed to create journal entry: Add fired (test sentinel) 2026-08-31 14:42:16 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-08-31 14:42:16 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-08-31 14:42:16 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-08-31 14:42:16 - WARN --> Race-guard: postStagedEntry(1) lost claim — current status is posting, refusing duplicate QBO post 2026-08-31 14:42:16 - INFO --> recoverStuckPostingEntries: finalized entry 42 (pc00/2026-05-14) → posted (QBO Id: JE-999) 2026-08-31 14:42:16 - INFO --> recoverStuckPostingEntries: reverted entry 42 (pc00/2026-05-14) → pending_approval (QBO had no matching JE) 2026-08-31 14:42:16 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: Network blip 2026-08-31 14:42:16 - WARN --> recoverStuckPostingEntries: QBO query failed for stuck entry 42 (pc00/2026-05-14); leaving row alone for next sweep. Error: QBO auth blip during recovery sweep 2026-08-31 14:42:16 - WARN --> recoverStuckPostingEntries: QBO returned a JE for entry 42 but Id was empty; leaving row alone. 2026-08-31 14:42:16 - INFO --> recoverStuckPostingEntries: finalized entry 1 (pc00/2026-05-14) → posted (QBO Id: JE-1) 2026-08-31 14:42:16 - INFO --> recoverStuckPostingEntries: reverted entry 2 (pc00/2026-05-15) → pending_approval (QBO had no matching JE) 2026-08-31 14:42:16 - WARN --> recoverStuckPostingEntries: unexpected error querying QBO for stuck entry 3 (pc00/2026-05-16); leaving row alone for next sweep. Error: Network blip on row 3 2026-08-31 14:42:16 - ERROR --> recoverStuckPostingEntries: stuck-row scan failed: Unknown column or table 2026-08-31 14:42:16 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=0; clamping to 1 to prevent racing in-flight posts. 2026-08-31 14:42:16 - WARN --> recoverStuckPostingEntries called with stuckThresholdMinutes=-5; clamping to 1 to prevent racing in-flight posts. 2026-08-31 14:42:16 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-08-31 14:42:16 - INFO --> Staged entry 8 for store pc00 date 2026-05-14 (restage of #7) 2026-08-31 14:42:16 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-08-31 14:42:16 - INFO --> Staged entry 5 for store pc00 date 2026-05-14 (restage of #4) 2026-08-31 14:42:16 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-08-31 14:42:16 - INFO --> Staged entry 1 for store pc00 date 2026-05-14 2026-08-31 14:42:16 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-08-31 14:42:16 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-08-31 14:42:16 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-08-31 14:42:16 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-08-31 14:42:16 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-08-31 14:42:16 - INFO --> Staged entry 1 for store pc00 date 2026-03-15 2026-08-31 14:42:16 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-08-31 14:42:16 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-08-31 14:42:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-08-31 14:42:17 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-08-31 14:42:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-08-31 14:42:17 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-08-31 14:42:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-08-31 14:42:17 - INFO --> Staged entry 99 for store pc00 date 2026-05-01 (restage of #17) 2026-08-31 14:42:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-08-31 14:42:17 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-08-31 14:42:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-08-31 14:42:17 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-08-31 14:42:17 - INFO --> Sync disabled for store pc00, skipping date 2026-05-01 2026-08-31 14:42:17 - ERROR --> Failed to log sync attempt: SQL mismatch for PDO::prepare call 3 Failed asserting that 'INSERT INTO qb_sync_log (syncDate, syncType, status, journalEntryId, journalEntryDocNum, requestPayload, responsePayload, errorMessage, syncedBy, startedAt, completedAt) VALUES (:syncDate, :syncType, :status, :jeId, :docNum, :reqPayload, :respPayload, :errorMsg, :userId, NOW(), NOW()) ON DUPLICATE KEY UPDATE status = VALUES(status), journalEntryId = VALUES(journalEntryId), journalEntryDocNum = VALUES(journalEntryDocNum), responsePayload = VALUES(responsePayload), errorMessage = VALUES(errorMessage), retryCount = retryCount + 1, completedAt = NOW()' [ASCII](length: 553) contains "SELECT * FROM qb_account_mapping" [ASCII](length: 32). 2026-08-31 14:42:17 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-08-31 14:42:17 - INFO --> Staged entry 1 for store pc00 date 2026-05-01 2026-08-31 14:42:17 - WARN --> getBalancingAccount: cashOverShort not mapped for store pc00. Refusing arbitrary-Expense fallback — variance must land in Cash Over/Short. createJournalEntry will fail-closed via the imbalanced_no_balancing_account guard. 2026-08-31 14:42:17 - INFO --> Staged entry 1 for store pc00 date 2026-05-01