Payment codes are SPV-friendly alternatives to DarkWallet-style stealth addresses which provide useful features such as positively identifying senders to recipients and automatically providing for transaction refunds.
Payment codes can be publicly advertised and associated with a real-life identity without causing a loss of financial privacy.
Compared to stealth addresses, payment codes require less blockchain data storage.
Payment codes require 65 bytes of OP_RETURN data per sender-recipient pair, while stealth addresses require 40 bytes per transaction.