> ## Documentation Index
> Fetch the complete documentation index at: https://laravel-qrcode.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# QR Code Data Types Overview & Reference

> Learn how Laravel QR Code data types encode structured information into standard QR payloads, with a guide to every available type.

Data types are purpose-built helpers that transform structured information — like a contact card, a cryptocurrency address, or a Wi-Fi credential — into the standardised QR payload format that scanner apps understand natively. Instead of assembling URI strings by hand, you call a named method and pass typed arguments; the package handles encoding, escaping, and spec compliance for you.

Every data type method returns a `QrCodeResult`, which means you can chain rendering or saving calls directly onto the result without any intermediate steps.

<Tip>
  All data type methods return a `QrCodeResult` instance, so you can immediately render or save the output: `QrCode::Email('hi@example.com')->generate()` works just as well as storing the result first.
</Tip>

<Warning>
  All data types validate their inputs strictly and throw typed exceptions on invalid values. Always wrap user-supplied input in a `try/catch` block to handle validation errors gracefully.

  ```php theme={null}
  use Linkxtr\QrCode\Facades\QrCode;
  use Linkxtr\QrCode\Exceptions\InvalidDataTypeArgumentException;

  try {
      $qr = QrCode::Email($request->input('email'));
  } catch (InvalidDataTypeArgumentException $e) {
      // Handle validation error
  }
  ```
</Warning>

## Available Data Types

<CardGroup cols={2}>
  <Card title="Contact" icon="address-card" href="/data-types/contact">
    Encode full contact details as a scannable vCard or MeCard that can be saved
    directly to a phone's address book.
  </Card>

  <Card title="Communication" icon="message" href="/data-types/communication">
    Pre-fill email drafts, phone dials, SMS messages, WhatsApp chats, and
    Telegram profile links with a single scan.
  </Card>

  <Card title="Payment" icon="bitcoin-sign" href="/data-types/payment">
    Generate Bitcoin and Ethereum payment requests compatible with all major
    crypto wallets.
  </Card>

  <Card title="Other Types" icon="grid" href="/data-types/other">
    Connect devices to Wi-Fi instantly, drop a pin on a map, or add a calendar
    event — all with a scan.
  </Card>
</CardGroup>

## Quick Reference

| Method                                   | Category      | Key Parameters                            |
| ---------------------------------------- | ------------- | ----------------------------------------- |
| `QrCode::VCard(array $config)`           | Contact       | `name`, `email`, `phone`, `company`, …    |
| `QrCode::MeCard(string $name, …)`        | Contact       | `name`, `phone`, `email`, `url`, …        |
| `QrCode::Email(string $address, …)`      | Communication | `address`, `subject`, `body`, `cc`, `bcc` |
| `QrCode::PhoneNumber(string $phone)`     | Communication | E.164 phone number                        |
| `QrCode::SMS(string $phoneNumber, …)`    | Communication | `phoneNumber`, `message`                  |
| `QrCode::WhatsApp(string\|array …)`      | Communication | `number`, `message`                       |
| `QrCode::Telegram(string $username)`     | Communication | Telegram username                         |
| `QrCode::BTC(string $address, …)`        | Payment       | `address`, `amount`, `label`, `message`   |
| `QrCode::Ethereum(string $address, …)`   | Payment       | `address`, `amount` in ETH                |
| `QrCode::WiFi(array $credentials)`       | Other         | `ssid`, `encryption`, `password`          |
| `QrCode::Geo(float $lat, float $lng, …)` | Other         | `latitude`, `longitude`, `name`           |
| `QrCode::CalendarEvent(array $attrs)`    | Other         | `summary`, `start`, `end`, …              |
