Many wallets present a sending interface as a single recipient address field and a single amount. The resulting transaction often has two outputs, though. One to pay the recipient and one to send the remainder of your funds back to your own wallet as a change output. However, transactions are not restricted to having one or two outputs. You may actually specify any number of outputs (until your transaction hits the weight limit).
Payment batching is especially useful for large enterprises like exchanges and online wallets. Instead of facilitating hundreds of single-payment transactions per day, they may create transactions at a regular cadence to issue all outstanding payments in a single transaction. One exchange I used to work with would for example build a single withdrawal transaction every 15 minutes, which then would pay 5–50 users at once. Another company, a very popular brokerage, even created a transaction every 30 seconds to facilitate some 10–30 payments.
The big advantage of batching payments is that they still only need one change output. If you pay 1000 users per day with single-payment transactions, you send back 1000 change outputs to your wallet that you will have to spend again later. If you send 100 transactions that each batch 10 payments, you only send back 100 change outputs to yourself. Additionally, you need to use at least 1000 inputs to create 1000 transactions, but perhaps most of your batching transactions can be funded with 1–4 inputs. Occasionally, you will even be able to find a few inputs that match the recipient amounts exactly and you will need no change output at all. Overall, batching payments can significantly reduce the cost of operating a large volume wallet, and simplify UTXO management.