> ## Documentation Index
> Fetch the complete documentation index at: https://docs.trymaven.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Voice Quickstart

> Collect your first voice payment in 5 minutes

Create an app, connect a gateway, and collect your first payment.

## 1. Set Up Your Dashboard

<Steps>
  <Step title="Sign up">
    Create an account at [app.trymaven.com](https://app.trymaven.com).
  </Step>

  <Step title="Create an app">
    Go to **Apps** and click **Create App**. Give it a name — Maven generates a slug (e.g., `my-store`) that you'll use in API calls.
  </Step>

  <Step title="Connect a gateway">
    In your app, go to the **Payments** tab and connect Stripe, Authorize.net, or Braintree. See the setup guides for [Stripe](/integrations/stripe-connect), [Authorize.net](/integrations/authorizenet-setup), or [Braintree](/integrations/braintree-setup).
  </Step>

  <Step title="Create an API key">
    Go to **Settings > API Keys** and create a test key. It starts with `mvn_test_`. Copy it immediately — you won't see it again.
  </Step>
</Steps>

<Snippet file="api-key-warning.mdx" />

## 2. Try the Playground

Open the **Playground** from the sidebar. Select your app, gateway, and mode, enter a phone number and amount, and create a test session. You'll see the session status update in real time as the caller progresses through the payment flow.

**Payment modes:** Use **Charge** to process payment immediately, or **Tokenize** to save the card for later without charging.

## 3. Get the Result

Configure a [webhook](/integrations/webhooks) to get notified when sessions complete. Maven sends a POST to your app's webhook URL with the payment status, card brand, last 4 digits, and gateway-specific details.

Set your webhook URL in the app's **Settings** tab. See the [Webhooks guide](/integrations/webhooks) for the full payload format.

See the [API Reference](/api-reference/overview) for creating sessions programmatically.

## Session Lifecycle

Sessions progress through these statuses:

```
created → collecting-card → collecting-expiry → collecting-cvv → processing → payment-success
```

| Status                   | Terminal | Description                      |
| ------------------------ | -------- | -------------------------------- |
| `created`                | No       | Awaiting caller transfer         |
| `collecting-card`        | No       | Collecting card number           |
| `collecting-expiry`      | No       | Collecting expiry date           |
| `collecting-cvv`         | No       | Collecting CVV                   |
| `collecting-postal-code` | No       | Collecting ZIP code              |
| `processing`             | No       | Processing payment               |
| `payment-success`        | **Yes**  | Payment completed                |
| `payment-failed`         | **Yes**  | Payment declined                 |
| `expired`                | **Yes**  | Session timed out (5-minute TTL) |
| `cancelled`              | **Yes**  | Cancelled via API                |

Sessions expire after **5 minutes** (PCI compliance requirement). Most voice sessions complete in 60-90 seconds.

## Test Cards

Use these with test mode keys (`mvn_test_`):

| Card       | Number                | CVV          | Expiry          |
| ---------- | --------------------- | ------------ | --------------- |
| Visa       | `4242 4242 4242 4242` | Any 3 digits | Any future date |
| Mastercard | `5555 5555 5555 4444` | Any 3 digits | Any future date |
| Amex       | `3782 822463 10005`   | Any 4 digits | Any future date |

## Next

<CardGroup cols={2}>
  <Card title="Webhooks" icon="bell" href="/integrations/webhooks">
    Get notified when sessions complete.
  </Card>

  <Card title="API Reference" icon="code" href="/api-reference/overview">
    Explore the full API.
  </Card>
</CardGroup>
