---
id: voyado-integration
title: Voyado adapter
hide_title: true
description: "Voyado adapter"
---

import Ingress from "../../../../src/components/ingress/ingress.react";
import Tabs from "@theme/Tabs";
import TabItem from "@theme/TabItem";

<Ingress title="Voyado adapter">
  Our integration with Voyado allows Walley to check if a user is a member of
  the loyalty program of the merchant. If the customer is not already a member
  of the loyalty program, Walley will ask the customer if they would like to
  enroll as part of the checkout journey. If so, Walley will automatically
  enroll the customer to the membership program after completing the purchase,
  all without leaving the checkout experience.
</Ingress>

When the customer identifies in Walley Checkout, a request to Voyado will be made to check if the customer is already a member based on national registration number,
email address or mobile phone number. If the customer is not already a member Walley Checkout will prompt to apply for membership.

If the customer changes the toggle to apply for membership, a `walleyCheckoutCrmUpdated` JS event will be sent.
When this event is received you have to [acquire checkout information](/docs/checkout/getcheckoutinformation) to know the status of the membership.

If the customer chose to apply for membership Walley will automatically register the customer with Voyado:

```json
{
  "firstName": "First name",
  "lastName": "Last name",
  "street": "Address 1",
  "zipCode": "12345",
  "city": "City",
  "email": "test@walleypay.se",
  "mobilePhone": "+46701234567",
  "countryCode": "SE",
  "socialSecurityNumber": "510731-2323",
  "preferences": {
    "acceptsEmail": true,
    "acceptsPostal": false,
    "acceptsSms": false
  }
}
```

**Note** that Walley Checkout will also provide Voyado with the following properties:

| Property            | Required | Explanation                                                                                                                                                                                                                                          |
| ------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Source**          | Yes      | Always set to the string "Walley".                                                                                                                                                                                                                   |
| **StoreExternalId** | No       | Set to a value of your choosing to indicate which store in Voyado the customer registered in. Note that this store must be setup in Voyado and can be configured in our settings or as the `externalStoreId` parameter when initializing the checkout |
| **Consent**         | No       | If a customer chooses to be a member then we can create a consent and send them to Voyado. Contact [Walley Merchant Services](/support) to set this up.                                                                                              |

## Acquiring loyalty membership information

When [acquiring checkout information](/docs/checkout/getcheckoutinformation) after a customer is identified, the `data.customer.loyaltyMembership` object contains information about the outcome of the membership registration.

| Property     | Type   | Returned | Description                                              |
| ------------ | ------ | -------- | -------------------------------------------------------- |
| provider     | string | Yes      | Always `voyado` for a the Voyado adapter.                |
| success      | bool   | Yes      | `false` if the registration of membership failed.        |
| isMember     | string | Maybe    | Indicates membership, possible values are: yes, no, new. |
| id           | string | Maybe    | The Voyado `contactId` to identify the membership.       |
| memberNumber | string | Maybe    | The member number of the customer.                       |

There will be four possible outcomes:

1. The customer is already a member, so no registration was performed.
2. The customer chose to apply for membership, and a membership was registered successfully.
3. The customer chose not to apply for membership.
4. The customer chose to apply for membership, but the registration failed due to technical reasons.

:::info Important

If the membership failed to register due to technical reasons, create the membership manually so the customer does not lose their points, bonus levels, or similar. To see why the registration failed, check the developer logs in the [Merchant hub](/docs/merchanthub/intro).

:::

<Tabs defaultValue="alreadymember" values={[
    { label: '1. Customer is already a member', value: 'alreadymember' },
    { label: '2. Customer was registered successfully', value: 'success' },
    { label: '3. Customer chose not to apply for membership ', value: 'nothanks' },
    { label: '4. Membership failed to register', value: 'fail' },
]}>

<TabItem value="alreadymember">

```json
{
  "data": {
    "customer": {
      "loyaltyMembership": {
        "provider" : "voyado",
        "success": true,
        "isMember":"yes",
        "id": "9b43c86e-227b-4149-b0ee-de7f4846be26",
        "memberNumber": "123456789"
      }
    }
  }
}
```

</TabItem>

<TabItem value="success">

```json
{
  "data": {
    "customer": {
      "loyaltyMembership": {
        "provider" : "voyado",
        "success": true,
        "isMember":"new",
        "id": "9b43c86e-227b-4149-b0ee-de7f4846be26",
        "memberNumber": "123456789"
      }
    }
  }
}
```

</TabItem>

<TabItem value="nothanks">

```json
{
  "data": {
    "customer": {
      "loyaltyMembership": {
        "provider" : "voyado",
        "success": true,
        "isMember":"no"
      }
    }
  }
}
```

</TabItem>

<TabItem value="fail">

```json
{
  "data": {
    "customer": {
      "loyaltyMembership": {
        "provider" : "voyado",
        "success": false
      }
    }
  }
}
```

</TabItem>

</Tabs>

## Bonus vouchers

<div style={{ display:"flex" }}>
  <div style={{ flex: 1 }}><img src="/img/checkout/loyaltyBooster/vouchers-single.png" alt="One available bonus voucher in the loyalty module" /></div>
  <div style={{ flex: 1 }}><img src="/img/checkout/loyaltyBooster/vouchers-multipel.png" alt="Several available bonus vouchers, each with a checkbox" /></div>
</div>

Turn loyalty points into sales. With bonus vouchers, your Voyado members see the rewards they have earned right inside Walley Checkout — and can apply them to their purchase with a single tap. No codes to remember, no copy-pasting, no abandoned carts because a customer could not find their voucher in their inbox.

Available vouchers show up automatically once the customer is identified. The order total updates the moment a voucher is activated, and Walley handles the redemption with Voyado behind the scenes. The result: a shorter path to checkout, higher conversion on loyalty traffic, and a stronger reason for customers to come back.

To enable bonus vouchers for your store, contact [Walley Merchant Services](/support). Make sure bonus vouchers are also activated in your Voyado setup — Voyado support can help you with that side of the configuration.

:::note

Voyado must be configured for the currency used in the checkout session. Vouchers issued in a currency that does not match the checkout session currency will not be returned and therefore not shown to the customer.

:::

### Vouchers in the merchant checkout information

When a purchase is completed with one or more bonus vouchers applied, the [merchant checkout information](/docs/checkout/getcheckoutinformation) response includes an `appliedVouchers` array under `data`. Each entry describes a voucher that was successfully redeemed against Voyado as part of the purchase, so you can reconcile the discount with your order system, show it on receipts, or report on loyalty-driven sales.

| Property         | Type    | Description                                                                |
| ---------------- | ------- | -------------------------------------------------------------------------- |
| `voucherId`      | string  | Unique identifier for the voucher in Voyado.                               |
| `code`           | string  | The voucher code that was redeemed.                                        |
| `description`    | string  | Human-readable description of the voucher (e.g. campaign name).            |
| `discountAmount` | decimal | The discount value applied, in the checkout currency.                      |

The voucher discount is not added as a line item under `data.order.items`, and neither `data.order.totalAmount` nor `data.purchase.amountToPay` includes the discount. Use `appliedVouchers` to account for the bonus when you reconcile the order.

```json
{
  "data": {
    "appliedVouchers": [
      {
        "voucherId": "voucher-123",
        "code": "SUMMER2026",
        "description": "Summer campaign voucher",
        "discountAmount": 50.00
      }
    ]
  }
}
```

If no voucher adapter is configured for the store, or if the customer did not activate any vouchers, the `appliedVouchers` field is omitted from the response — existing integrations are unaffected.

## Configuration

The loyalty adapter can be configured to personalize the checkout experience in line with the merchant’s brand, and enable optional features.

### Optional features
**Membership levels:** 

To enable this feature, follow these steps:
1. Contact Walley Merchant Services for help setting up the Voyado integration.
2. Make sure the corresponding setting is also enabled in your Voyado integration. (Contact Voyado for assistance.)