Pip · Learn

SEC Form 4 transaction codes: what every letter means

Every line on a Form 4 carries a single-letter code saying what kind of transaction it was. The letter is the most important thing on the row, and it is the thing most often skipped.

By Jonathan · building Pip in public · 4 min read

The codes below are reproduced from the SEC's own Form 4 instructions — General Instruction 8, read 14 August 2026. This page states what each code records. What any particular filing means for a company is a separate question, and one the form itself does not answer.

The six you will actually see

Across the filings behind our insider filing pages, these six account for almost every row:

CodeWhat it records
POpen market or private purchase
SOpen market or private sale
MExercise or conversion of a derivative security — typically an option becoming stock
FSecurities delivered or withheld to pay the exercise price or the tax on a grant that vested
AGrant or award of securities
GBona fide gift

Why M and F are not sales

This is the single most common misreading, and it is worth being precise about.

M is an option exercise. Shares are created from a derivative the person already held; nothing is sold on the open market by that code alone. F is the company withholding shares to cover the exercise price or the tax bill on vesting — the recipient does not choose the amount or the timing.

Both routinely dwarf the actual purchases and sales in share count. A tool that adds up "shares disposed" without reading the code will report an insider as having sold millions of dollars of stock when what happened was a grant vesting and the payroll tax being settled. Our pages label each code as what it is, and never aggregate across codes, precisely because that arithmetic produces a number that is not true of anything.

The complete list

Straight from Instruction 8, grouped as the SEC groups them.

General transaction codes

CodeDefinition
POpen market or private purchase of non-derivative or derivative security
SOpen market or private sale of non-derivative or derivative security
VTransaction voluntarily reported earlier than required

Rule 16b-3 transaction codes

CodeDefinition
AGrant, award or other acquisition pursuant to Rule 16b-3(d)
DDisposition to the issuer of issuer equity securities pursuant to Rule 16b-3(e)
FPayment of exercise price or tax liability by delivering or withholding securities incident to the receipt, exercise or vesting of a security issued in accordance with Rule 16b-3
IDiscretionary transaction in accordance with Rule 16b-3(f) resulting in acquisition or disposition of issuer securities
MExercise or conversion of derivative security exempted pursuant to Rule 16b-3

Derivative securities codes

Except for transactions exempted pursuant to Rule 16b-3.

CodeDefinition
CConversion of derivative security
EExpiration of short derivative position
HExpiration (or cancellation) of long derivative position with value received
OExercise of out-of-the-money derivative security
XExercise of in-the-money or at-the-money derivative security

Other Section 16(b) exempt transaction and small acquisition codes

CodeDefinition
GBona fide gift
LSmall acquisition under Rule 16a-6
WAcquisition or disposition by will or the laws of descent and distribution
ZDeposit into or withdrawal from voting trust

Other transaction codes

CodeDefinition
JOther acquisition or disposition (describe transaction)
KTransaction in equity swap or instrument with similar characteristics
UDisposition pursuant to a tender of shares in a change of control transaction

Three mechanics most explanations leave out

1. V is not really a transaction code. It goes in its own column to mark that a transaction was reported earlier than the deadline required. A row can carry V alongside its actual code.

2. K combines with another code. The instructions are explicit: where an equity swap is involved, K is used in addition to the code that best describes the transaction — so you will see compound codes written `S/K` or `P/K`. A parser that treats the code field as a single letter will mis-handle these.

3. J means "read the footnote". If a transaction is not specifically listed, the filer uses J and must describe it in the explanation of responses. A J row without its footnote is incomplete by design — the meaning is in the prose, not the code.

The separate 10b5-1 checkbox

Form 4 also carries a checkbox, added under General Instruction 10, indicating whether a transaction was made under a Rule 10b5-1(c) trading plan — a contract or written instruction adopted in advance. The adoption date goes in the explanation of responses.

This matters when reading any sale: a sale executed under a plan adopted months earlier was scheduled before whatever is in today's news. The checkbox is where that is recorded, and it is a different field from the transaction code.

Where to go next

For how these filings are read — including which interpretations hold up and which are folklore — see what insider buying and selling actually signals. For the wider set of filings a company makes, see filings and events that move a stock.

To look up a specific company's recent Form 4s with each code already translated, use the insider filing tracker.

Get a calm morning read on the stocks you own.

Pip is opening to a small first group of self-directed investors — a two-minute briefing on what moved and why, with sources.

Get early access →

No spam. Not investment advice — Pip is for research and education. You decide.