QRQR Code Agency
Guides

Tutorial - vCard business cards

Print a tap-to-save contact QR on the back of your business card.

Tutorial: vCard business cards

Print one tiny QR on the back of your business card. Your contact taps "Save Contact" and you are in their address book - name, phone, email, LinkedIn, all of it. No typing.

What you will build

A 1 x 1 inch black-on-white vCard QR designed to fit on a standard business card alongside your existing layout.

Step 1: Build your vCard payload

{
 "name": "Darius Tokam",
 "org": "QR Code Agency",
 "title": "Founder",
 "phone": "+15145551234",
 "email": "darius@qrstudio.agency",
 "url": "https://qrstudio.agency",
 "address": "123 Rue Saint-Laurent, Montreal QC H2X 2T1",
 "note": "Print once. Edit forever."
}

tip: What to include Keep it minimal. The more fields, the bigger the QR matrix gets, the smaller each module becomes. For business-card use:

  • Always: name, phone or email
  • Often: org, title, url
  • Rarely: address, note (only if relevant)

Step 2: Generate

cURL

curl -X POST https://api.qrstudio.agency/api/v1/generate/ \
-H "X-Api-Key: smk_..." \
-H "Content-Type: application/json" \
-d '{
"data_type": "vcard",
"payload": {
"name": "Darius Tokam",
"org": "QR Code Agency",
"title": "Founder",
"phone": "+15145551234",
"email": "darius@qrstudio.agency",
"url": "https://qrstudio.agency"
},
"size_inches": 1,
"dpi": 600,
"color": "black",
"background": "white",
"pattern": "rounded"
}' \
--output card-qr.png

Python

import requests
r = requests.post(
"https://api.qrstudio.agency/api/v1/generate/",
headers={"X-Api-Key": "smk_..."},
json={
"data_type": "vcard",
"payload": {
"name": "Darius Tokam",
"org": "QR Code Agency",
"title": "Founder",
"phone": "+15145551234",
"email": "darius@qrstudio.agency",
"url": "https://qrstudio.agency",
},
"size_inches": 1,
"dpi": 600,
"color": "black",
"background": "white",
},
)
open("card-qr.png", "wb").write(r.content)

note: Why 600 DPI here At 1 inch, 300 DPI gives 300 x 300 px. With many vCard fields, the QR matrix has more modules. At this small physical size, doubling DPI keeps each module crisp. 600 DPI requires Pro plan or higher.

Step 3: Test it

  1. Email yourself the PNG.
  2. View it at full size on your phone.
  3. Open another phone's camera, scan.
  4. Tap "Add to Contacts": the form should pre-fill all fields.

Step 4: Add the QR to your card design

In Illustrator, Affinity, Canva:

  1. Place card-qr.png on your existing card template.
  2. Resize to ~25 mm (about 1 inch); keep it square.
  3. Align to a corner with at least 3 mm clearance from the edge.
  4. Print on standard 350 g/m2 card stock with matte or soft-touch lamination. Avoid glossy: glare hurts scanability.

Common issues

warning: Phones with old vCard parsers Android 6 and earlier sometimes choke on EMAIL: lines with multiple addresses. Use one email max in email, or pass emails as an array and accept that older devices may show only the first.

warning: International phone numbers Always use E.164 format: +1 514 555 1234 -> store as +15145551234. Without the +, scanners cannot dial it as a tap action.

warning: Long URLs in url A 50-character LinkedIn URL is fine; a 300-character analytics-laden URL bloats the matrix. Use a short link service for marketing trails, or use a dynamic QR.

Variant: a dynamic vCard

Print a dynamic QR pointing at a personal landing page that hosts the vCard download. Update your phone number / email later by editing the landing page or by re-pointing the dynamic QR. No reprinting cards.

{
 "data_type": "dynamic",
 "payload": {
 "name": "Darius - business card",
 "destination_url": "https://qrstudio.agency/people/darius/vcard"
 },
 "size_inches": 1,
 "dpi": 600
}

The QR encodes q.qrstudio.agency/q/<short_id>/. When scanned, that URL serves the latest vCard download.

What is next

On this page