# Accepted providers

> Meal voucher providers supported by VINR — identifiers, acceptance modes, and settlement details.

VINR accepts four meal voucher providers. Each appears as a distinct `method` value in the VINR API and produces a separate settlement line in reconciliation.

## Provider reference

| Provider          | API method value                 | Physical card | App / QR       | Online |
| ----------------- | -------------------------------- | ------------- | -------------- | ------ |
| Sodexo            | `meal_voucher_sodexo`            | Yes           | No             | Yes    |
| Up (Edenred)      | `meal_voucher_up`                | Yes           | No             | Yes    |
| Swile             | `meal_voucher_swile`             | No            | Yes (QR + NFC) | Yes    |
| Ticket Restaurant | `meal_voucher_ticket_restaurant` | Yes           | No             | Yes    |

## Identifying a meal voucher payment

After a meal voucher payment is completed, the `payment.method` field on the payment object contains the provider-specific value:

```typescript
import { Vinr } from '@vinr/sdk';

const vinr = new Vinr({ secretKey: process.env.VINR_SECRET_KEY });

const payment = await vinr.payments.retrieve('pay_ABC123');

console.log(payment.method);
// → "meal_voucher_sodexo"
```

In `payment_method_details`, the `meal_voucher` object includes:

```json
{
  "meal_voucher": {
    "provider": "sodexo",
    "last4": "4321"
  }
}
```

## Settlement timelines

Meal voucher settlements follow provider-specific timelines, which differ from standard card settlement:

| Provider          | Settlement timeline |
| ----------------- | ------------------- |
| Sodexo            | T+3 business days   |
| Up (Edenred)      | T+3 business days   |
| Swile             | T+2 business days   |
| Ticket Restaurant | T+3 business days   |

Meal voucher settlements appear as separate line items in your VINR reconciliation report, labelled by provider. See [reconciliation](/docs/operations/reconciliation) for details on reading the report.

## Null balance handling

When a customer's voucher balance is less than the payment amount, VINR returns an error code of `voucher_balance_insufficient`. You must implement split-tender handling to charge the remaining amount to a second payment method. See [In-person & online integration](/docs/payments/payment-methods/add-payment-methods/meal-vouchers/integration) for the split-tender flow.

## See also

[In-person & online integration](/docs/payments/payment-methods/add-payment-methods/meal-vouchers/integration) — Enable meal vouchers, handle split-tender, and test in sandbox.

[Meal vouchers overview](/docs/payments/payment-methods/add-payment-methods/meal-vouchers) — How meal vouchers work with VINR.
