Both SYN and FIN flags cause the stream sequence number to increase by one. Thus,
SYN (seq x) --------------> <--- SYNACK (ack x+1, seq y) ACK (seq x+1, ack y+1) --->
This is your three-way handshake. This is because the SYNs and FINs require acknowledgment of receipt. Thus, everyone can be on the same page for the entire life of the connection.
Theoretically, any packet in the TWHS part may have a payload, but if any of the packets with the SYN flag set has a payload, the opposite side must confirm both the data and the flag.
source share