## Submit a customer's one-time code

`client.paymentHandles.verify(stringhandle, PaymentHandleVerifyParamsbody, RequestOptionsoptions?): PaymentHandleConnection`

**post** `/v3/payments/handles/{handle}/verify`

Completes the ceremony `connect` started: verifies the code, records the
customer's consent, and stores the connection. Returns `connected` on
success, after which payments for this handle no longer need the
customer present.

The code reaches you however your channel works — typically the customer
replies with it in the thread. Codes are single-use and short-lived; if
one has expired, call `connect` again for a fresh `connect_id`.

### Parameters

- `handle: string`

- `body: PaymentHandleVerifyParams`

  - `code: string`

    The one-time code the customer received.

  - `connect_id: string`

    The id returned by `connect`.

### Returns

- `PaymentHandleConnection`

  - `connect_id?: string`

    Returned only by `connect`, and only while the ceremony is pending.
    Nothing on our side persists it — it comes back from the provider and
    is required again to verify — so hold it until you submit the code.

  - `handle?: string`

  - `status?: "not_connected" | "pending" | "connected" | "revoked"`

    - `"not_connected"`

    - `"pending"`

    - `"connected"`

    - `"revoked"`

### Example

```typescript
import LinqAPIV3 from '@linqapp/sdk';

const client = new LinqAPIV3({
  apiKey: process.env['LINQ_API_V3_API_KEY'], // This is the default and can be omitted
});

const paymentHandleConnection = await client.paymentHandles.verify('handle', {
  code: '482913',
  connect_id: 'cs_01HZY8',
});

console.log(paymentHandleConnection.connect_id);
```

#### Response

```json
{
  "connect_id": "cs_01HZY8",
  "handle": "+14155550123",
  "status": "connected"
}
```
