Required fields first.
Mark only the values your workflow cannot proceed without. Everything else should be optional or nullable.
Use enums when the set is known.
Currency codes, status labels, and document types become more reliable when the schema constrains them.
Nest only when the domain nests.
Group line items, addresses, and parties when they naturally belong together—avoid deep trees for simple values.