I found why it’s happening and i think i have a temp “fix” for this.
When you create new order, it creates new row in the wp_posts table and tries to assign the correct ID, but if that ID is already exists(content change, etc..), it finds the closest available and that’s why mismatching happens.
If you don’t have too many extra rows after your last order row, change next NOT ORDER rows IDs to some bigger number to reserve some numbers for your actual order IDs.
Example: in my case the last order ID was 5221, i made a small change on the website and WP created a new row with ID 5222, so i changed the ID to 8222 and after this any new changes ID will start from 8223 and i reserved 3000 ID numbers for future orders