Heads up, our devs are blazing ahead—docs are catching up, so some features might not be fully documented yet.

LoyaltyProgram

LoyaltyProgram

Search for a loyalty program membership

post

Search for (look up) a loyalty program membership. The preferred and main search criteria is mobile number, but email can be used when mobile number is not available.

Country code must be with a plus sign, e.g. +47 for Norway. If country code is missing, the default country code of the tenant is used.

Authorizations
Path parameters
tenantUidstringRequired

Reference to a tenant.

Pattern: ^[A-Za-z0-9-_]+
Body
querystringRequired

full mobile number or email

Responses
200
Example response
application/json
post
POST /v2/tenants/{tenantUid}/customers/loyalty/search HTTP/1.1
Host: api.flowretail.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 16

{
  "query": "text"
}
200

Example response

{
  "items": [
    {
      "loyaltyId": "text",
      "firstName": "text",
      "lastName": "text",
      "address": "text",
      "postalCode": "text",
      "city": "text",
      "countryCode": "text",
      "email": "text",
      "mobile": "text",
      "consents": [
        "text"
      ],
      "customerUid": "text",
      "origin": "text",
      "displayName": "text"
    }
  ]
}

Enroll new customer to loyalty program

post

Enroll new customer to loyalty program. If the mobile number is not in the country of the tenant you must add the country code (e.g. +358 for Finland). The store is where the enroll was made from.

Authorizations
Path parameters
tenantUidstringRequired

Reference to a tenant.

Pattern: ^[A-Za-z0-9-_]+
Body
mobilestringRequired
mobileCountryCodestringOptional
storeUidstringRequiredPattern: ^[A-Za-z0-9-_]+
Responses
204
No Content
post
POST /v2/tenants/{tenantUid}/customers/loyalty HTTP/1.1
Host: api.flowretail.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 62

{
  "mobile": "text",
  "mobileCountryCode": "text",
  "storeUid": "text"
}
204

No Content

No content

Get loyalty program member details for customer

get

Get loyalty program member details for customer.

Authorizations
Path parameters
tenantUidstringRequired

Reference to a tenant.

Pattern: ^[A-Za-z0-9-_]+
customerUidstringRequired

Reference to a Customer.

Pattern: ^[A-Za-z0-9-_]+
Responses
200
Example response
application/json
get
GET /v2/tenants/{tenantUid}/customers/{customerUid}/loyalty HTTP/1.1
Host: api.flowretail.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
200

Example response

{
  "address": "text",
  "city": "text",
  "companyName": "text",
  "countryCode": "text",
  "createdAt": "2025-07-30T18:00:45.279Z",
  "customerUid": "text",
  "customerType": "COMPANY",
  "email": "text",
  "externalId": "text",
  "firstname": "text",
  "lastModifiedAt": "2025-07-30T18:00:45.279Z",
  "lastname": "text",
  "ledgerNumber": "text",
  "mobile": "text",
  "postalCode": "text",
  "pricelistUid": "text",
  "vatNumber": "text",
  "origin": "text"
}

Enroll existing customer to loyalty program

post

Enroll existing customer to loyalty program. The store is where the enroll is made from.

Authorizations
Path parameters
tenantUidstringRequired

Reference to a tenant.

Pattern: ^[A-Za-z0-9-_]+
customerUidstringRequired

Reference to a Customer.

Pattern: ^[A-Za-z0-9-_]+
Body
storeUidstringRequiredPattern: ^[A-Za-z0-9-_]+
Responses
200
Example response
application/json
post
POST /v2/tenants/{tenantUid}/customers/{customerUid}/loyalty HTTP/1.1
Host: api.flowretail.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 19

{
  "storeUid": "text"
}
200

Example response

{
  "address": "text",
  "city": "text",
  "companyName": "text",
  "countryCode": "text",
  "createdAt": "2025-07-30T18:00:45.279Z",
  "customerUid": "text",
  "customerType": "COMPANY",
  "email": "text",
  "externalId": "text",
  "firstname": "text",
  "lastModifiedAt": "2025-07-30T18:00:45.279Z",
  "lastname": "text",
  "ledgerNumber": "text",
  "mobile": "text",
  "postalCode": "text",
  "pricelistUid": "text",
  "vatNumber": "text",
  "origin": "text",
  "addresses": [
    {
      "address": "text",
      "city": "text",
      "companyName": "text",
      "firstname": "text",
      "lastname": "text",
      "countryCode": "text",
      "email": "text",
      "phone": "text",
      "postalCode": "text",
      "type": "DELIVERY_ADDRESS",
      "customerAddressUid": "text",
      "displayName": "text"
    }
  ],
  "contacts": [
    {
      "firstname": "text",
      "lastname": "text",
      "email": "text",
      "mobile": "text",
      "createdAt": "2025-07-30T18:00:45.279Z",
      "lastModifiedAt": "2025-07-30T18:00:45.279Z",
      "customerContactUid": "text",
      "extensions": [
        {
          "extensionCode": "TWO_INVOICE",
          "organizationUid": "text"
        }
      ],
      "displayName": "text"
    }
  ],
  "extensions": [
    {
      "extensionCode": "TWO_INVOICE",
      "organizationUid": "text"
    }
  ],
  "consents": [
    {
      "consentUid": "text",
      "name": "text",
      "status": true,
      "source": "text",
      "createdAt": "2025-07-30T18:00:45.279Z"
    }
  ],
  "loyaltyId": "text",
  "displayName": "text",
  "credit": {
    "limit": 1,
    "balance": 1
  },
  "paymentTerms": 1,
  "internalNote": "text",
  "accountManager": {
    "tenantUserUid": "text",
    "displayName": "text",
    "userCode": "text"
  },
  "ehfEnabled": true,
  "customerGroupUids": [
    "text"
  ]
}

List loyalty program discounts for customer

get

List available loyalty program member discounts for customer.

Authorizations
Path parameters
tenantUidstringRequired

Reference to a tenant.

Pattern: ^[A-Za-z0-9-_]+
customerUidstringRequired

Reference to a Customer.

Pattern: ^[A-Za-z0-9-_]+
Responses
200
Example response
application/json
get
GET /v2/tenants/{tenantUid}/customers/{customerUid}/loyalty/discounts HTTP/1.1
Host: api.flowretail.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
200

Example response

{
  "items": [
    {
      "discountCode": "text",
      "title": "text",
      "description": "text",
      "validFrom": "2025-07-30T18:00:45.279Z",
      "validTo": "2025-07-30T18:00:45.279Z",
      "discountType": "PERCENTAGE",
      "discountValue": 1,
      "maxUsage": 1,
      "timesUsed": 1,
      "productSkus": [
        "text"
      ]
    }
  ]
}

Was this helpful?