Checks issued by US banks are typically valid for 180 days, although it might vary depending on the state and the bank. When writing a check, how can I change its default validity length? I sometime would like to emit a check that is only cashable over the next 30 days.
It is up to you and your bank. See UCC Sec. 4-401:
An item is properly payable if it is authorized by the customer and is in accordance with any agreement between the customer and bank.
You need to talk to your bank about this, but generally banks protect themselves against various claims, including refusal to cash checks.
Checks that you give are a legal obligations to pay, and generally limiting the period doesn't limit your obligation. Even if the check becomes stale and the bank refuses to cash it - it keeps being your obligation to pay and may be enforced against you in the court of law.
Many companies issue checks with "Not valid beyond 90 days" prominently printed on them. I don't know whether that's legally enforcable, but like "Unlawful to copy this key" for locksmiths it is a strong instruction to the banks that the "contract for payment" created by the check is not intended to be valid beyond that time.
Not all locksmiths respect other locksmiths enough to honor do-not-copy marks. (Don't get me started on that rant. "You won't like me when I'm angry.")
I don't know whether all banks respect other banks enough to honor expiration dates written on the check this way. But I have always assumed that most do.
I know there ARE strict limits on what kinds of modifications can be made by adding annotations to checks these days; that was one of the things banks demanded in exchange for processing checks more quickly than they used to. I don't know whether this one is actually meaningful, or considered only advisory. But that's the most likely path to investigate.