---
description: >-
  This section is designed to give you a high-level overview of integrating with
  the Braintree In-Person product and its architecture.
---

# Technical Overview

## Intro to Braintree GraphQL

If you're new to GraphQL, you should familiarize yourself with some basic GraphQL concepts before digging into our In-Person documentation. For a quick introduction, see the [Basic Concepts](https://graphql.braintreepayments.com/guides/#basic-concepts) section. To get more in-depth, there are many great resources to learn GraphQL — to start with, we recommend [Introduction to GraphQL](https://graphql.org/learn) and [How to GraphQL](https://www.howtographql.com/).

The In-Person capabilities are simply an additional set of GraphQL Objects and Mutations. All resources in the [detailed Braintree GraphQL guides](https://graphql.braintreepayments.com/guides/) will be applicable and can be leveraged during your integration with Braintree In-Person.&#x20;

## Understanding the In-Person GraphQL Object Relationships

The API caller will act on behalf of a [`Merchant`](https://graphql.braintreepayments.com/reference/#object--merchant) and can create as many [`InStoreLocations`](https://graphql.braintreepayments.com/reference/#object--instorelocation) as required using the [`createInStoreLocation`](https://graphql.braintreepayments.com/reference/#Mutation--createInStoreLocation) mutation.  The `InStoreLocation` object is designed to represent a physical location that will contain card readers. You will receive a dynamically generated`InStoreLocation.id`to store for future changes to this location.

[`InStoreReaders`](https://graphql.braintreepayments.com/reference/#object--instorereader) are then paired to a specific[`InStoreLocation`](https://graphql.braintreepayments.com/reference/#object--instorelocation) using the [`pairInStoreReader`](https://graphql.braintreepayments.com/reference/#Mutation--pairInStoreReader) mutation. Multiple readers can be paired to a single [`InStoreLocation`](https://graphql.braintreepayments.com/reference/#object--instorelocation). You will receive a dynamically generated `InStoreReader.id` to store for initializing this reader.

[`InStoreContexts`](https://graphql.braintreepayments.com/reference/#object--instorecontext) are created using the **`requestChargeFromInStoreReader`** mutation by providing the total checkout amount and the `InStoreReader.id` you want to initialize the transaction. The response will return a unique`InStoreContext.id`to reference while your application waits for the customer to interact with the reader.

Your application will check on an interval the status of the [`InStoreContext`](https://graphql.braintreepayments.com/reference/#object--instorecontext), and once the customer is finished interacting with the device, you will receive a [`Transaction`](https://graphql.braintreepayments.com/reference/#object--transaction) object in the response.&#x20;

## What Card Reader models are supported?

Braintree has partnered with Verifone to offer best-in-class payment terminal (card reader) hardware.  This means that although Verifone might manufacture the hardware, most of the functionality and software running on the device is actually developed by Braintree.  We currently support the below-listed hardware models.  We will continue to update this documentation as we expand our hardware offering. For more information on how our hardware ordering and logistics process works, please consult your Solutions Engineer or Integration Engineer.

{% hint style="info" %}
[Sandbox card readers](../get-started-1/get-started) and [Production card readers](../../guides/ready-for-launch#ordering-production-card-readers) have the same behavior. However, they are not interchangeable.  Only special test cards work on the sandbox card readers.  Test cards do not work on production card readers.  More info on the hardware specs is available [here](../../reference/faq#what-card-readers-do-you-support).
{% endhint %}

<table><thead><tr><th>Card Reader</th><th width="319">Description</th><th>Availability</th></tr></thead><tbody><tr><td><a href="../hardware/verifone-p400">Verifone P400</a></td><td>The P400 card reader is a fixed lane device that is tethered to a power source.  However, the device offers flexibility for network connection methods including both Ethernet and WiFi capabilities.</td><td>Available</td></tr><tr><td><a href="../hardware/verifone-e285">Verifone E285</a></td><td>The E285 card reader is a mobile device that does not require tethering to a power source.  This device relies on WiFi network connectivity.</td><td>Available</td></tr><tr><td><a href="../hardware/verifone-m400">Verifone M400</a></td><td>The M400 reader is a fixed lane device that is tethered to a power source.  The reader offers flexibility for network connection methods including both Ethernet and WiFi.  </td><td>Available</td></tr></tbody></table>

## High-Level Functionality Summary

| Feature Name         | Description                                                                                                                                             | Link to Documentation                                                                               |
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- |
| Sale                 | Facilitate an auth + capture in one request from your customer using the card reader                                                                    | [Initiating a Sale](../../guides/making-a-transaction#initializing-the-reader-for-charging)         |
| Authorize            | Facilitate an authorization from your customer using the card reader                                                                                    | [Initiating an Authorization](../guides/making-a-transaction/initiate-a-card-present-authorization) |
| Refunds              | Perform either a referenced or unreferenced refund to the customer                                                                                      | [Perform Refunds](../../guides/making-a-transaction#refunding-your-customer)                        |
| Vaulting             | Retrieve a payment method token for future use or vault your customer information with Braintree                                                        | [Vaulting Payment Methods](../guides/vaulting-and-customers)                                        |
| Line Item Display    | Display sale line items on the card reader screen during scanning                                                                                       | [Display Line Items](../../guides/display-information#request-line-item-display)                    |
| Custom Prompts       | Display custom text (surveys, terms & conditions, address confirmation, etc...) and collect customer input (boolean) or signature from the card reader  | [Collect Customer Input ](../guides/custom-prompts)                                                 |
| Card Data Collection | Swipe non-PCI Gift Cards or PLCC cards on the reader to collect the magstripe track data                                                                | [Read Magstripe Card Data](../guides/card-data-collection)                                          |
| QR Code Payments     | Accept Venmo and PayPal using scannable QR codes on the card reader screen                                                                              | [QR Code Based Payments](../guides/paypal-and-venmo-qrc)                                            |
| Offline Processing   | Accept payments while your internet is down                                                                                                             | [Offline Processing](../guides/offline-transactions)                                                |
