A zero-confirmation transaction describes a transaction on a blockchain or any form of public ledger that has not yet been confirmed by the consensus protocol. In essence, it is a transaction that is in the process of being verified and is not yet included in a block on the blockchain.
Typically, when a user sends a zero-conf transaction to the network, they include a fee which in turn incentivizes miners to add the transaction to the block it is in, thus making it confirmable. A zero confirmation transaction is usually made when there is a high degree of trust between two parties and they want to quickly transfer funds to one another.
The transaction gets broadcasted to the network and is picked up by nodes, but not yet included in the blockchain. Until the transaction is included in the blockchain, it will remain unconfirmed. This can take from just a few minutes to, in some cases, days depending on the transaction size and traffic on the network.
The concept of a zero-confirmation transaction involves tradeoffs between time, trust, and security. These transactions are riskier than ones that are included in the blockchain, since an attacker could mount a double spending attack and invalidate the transaction.
Therefore, these types of transactions should only be used if both parties trust each other. On the other hand, these transactions are very fast and can be used for near-instant payments.