Most contact QR codes are static vCards: name, title, company, phone and email encoded straight into the pattern. They work offline, forever, with no account behind them — and they are frozen the moment they are printed.
That is fine for a conference badge. It is a problem for a business card you ordered 500 of, if you change your title, your number, or your employer.
The two approaches
Static vCard. The contact details live in the code. Scanning it offers to save a contact immediately, with no internet connection. Nothing to maintain, nothing to pay for, nothing you can ever change.
Dynamic. The code points at a short URL that serves your details. Scanning it opens a page that offers the same contact download. You can update your title or number afterwards and every printed card follows. It needs a working connection at scan time, and it depends on the link continuing to resolve.
Which to choose
Ask how long the card will be in circulation and how likely the details are to change. A card you reprint every year with a landline that never moves: static is simpler. A card you hand out for three years with a mobile number and a title that might change: dynamic pays for itself the first time you get promoted.
What actually happens on the phone
Saving a contact from a QR code is a two-step action on both major platforms — the phone shows the details, then the person confirms. There is no way to write to someone's address book silently, and you should be suspicious of anything claiming otherwise.
Keep the payload small. A vCard with a long photo embedded produces a dense code that scans badly at business-card size, which is exactly the size constraint you cannot escape here.
Put a name next to it
"Scan to save my details" next to the code roughly doubles the number of people who do. A bare square on a card reads as decoration.