Skip to content

Customer account ​

Connect API · https://api.conciar.com/connect/v1

For a signed-in customer (bearer token from /auth/otp/verify). Without a valid token: 401 Unauthenticated.

Get the profile ​

GET/connect/v1/store/customer/profile
Publishable or secret keyNeeds X-Sales-ChannelSigned-in customer

Status codes

  • 404NOT_A_MEMBER — the customer is not a member of this organization.

Good to know

  • member_reference is the value to show as the membership QR code.
curl "https://api.conciar.com/connect/v1/store/customer/profile" \
  -H "Accept: application/json" \
  -H "X-Api-Key: pk_your_publishable_key" \
  -H "X-Sales-Channel: cnct_ch_your_channel_token" \
  -H "Authorization: Bearer your_customer_access_token"
Example response · 200
{
  "data": {
    "id": 4242,
    "first_name": "Alex",
    "last_name": "Example",
    "email": "alex@example.com",
    "member_since": "2026-03-01T10:00:00+01:00",
    "member_reference": "M-EXAM-PLE0-0000",
    "marketing_opt_in": false
  }
}

Get points, stamps and history ​

The points balance and its value, the stamp card, the programme rules and the last 20 loyalty events.

GET/connect/v1/store/customer/loyalty
Publishable or secret keyNeeds X-Sales-ChannelSigned-in customer

Status codes

  • 404NOT_A_MEMBER.
curl "https://api.conciar.com/connect/v1/store/customer/loyalty" \
  -H "Accept: application/json" \
  -H "X-Api-Key: pk_your_publishable_key" \
  -H "X-Sales-Channel: cnct_ch_your_channel_token" \
  -H "Authorization: Bearer your_customer_access_token"
Example response · 200
{
  "data": {
    "member_reference": "M-EXAM-PLE0-0000",
    "points": {
      "enabled": true,
      "balance": 120,
      "value": {
        "amount": "1.20",
        "minor": 120,
        "currency": "EUR"
      },
      "point_value": 0.01,
      "min_redemption": 100,
      "max_redemption_pct": 50,
      "can_redeem": true,
      "earn_rate": 1,
      "earn_on": "gross",
      "qualifying": {
        "scope": "all",
        "category_ids": [],
        "item_ids": null
      },
      "boosts": []
    },
    "stamps": {
      "enabled": true,
      "count": 4,
      "per_reward": 10,
      "rewards_available": 0,
      "title": "Coffee card",
      "description": null,
      "…": "…"
    },
    "history": [
      {
        "id": 1,
        "type": "points_earned",
        "stamps": 0,
        "points": 25,
        "order_reference": "EXAMPLE-0001",
        "created_at": "2026-10-10T12:31:00+02:00"
      }
    ]
  }
}

List deals ​

Promotions that apply on this channel now (no code needed) and the personal coupons assigned to this member.

GET/connect/v1/store/customer/deals
Publishable or secret keyNeeds X-Sales-ChannelSigned-in customer

Status codes

  • 404NOT_A_MEMBER.
curl "https://api.conciar.com/connect/v1/store/customer/deals" \
  -H "Accept: application/json" \
  -H "X-Api-Key: pk_your_publishable_key" \
  -H "X-Sales-Channel: cnct_ch_your_channel_token" \
  -H "Authorization: Bearer your_customer_access_token"
Example response · 200
{
  "data": [
    {
      "id": "promo_12",
      "title": "2 for 1 on Tuesdays",
      "description": null,
      "item_id": 101,
      "coupon_code": null,
      "valid_until": null
    },
    {
      "id": "coupon_8",
      "title": "Welcome gift",
      "description": null,
      "item_id": null,
      "coupon_code": "WELCOME-EXAMPLE",
      "valid_until": "2026-12-31T23:59:59+01:00"
    }
  ]
}

List takeaway orders ​

The customer's app and takeaway orders, newest first, paginated.

GET/connect/v1/store/customer/restaurant/orders
Publishable or secret keyNeeds X-Sales-ChannelSigned-in customer

Query parameters

  • per_pageinteger

    1–50, default 20.

  • pageinteger

    Page number.

curl "https://api.conciar.com/connect/v1/store/customer/restaurant/orders" \
  -H "Accept: application/json" \
  -H "X-Api-Key: pk_your_publishable_key" \
  -H "X-Sales-Channel: cnct_ch_your_channel_token" \
  -H "Authorization: Bearer your_customer_access_token"
Example response · 200
{
  "data": [
    {
      "reference": "EXAMPLE-0001",
      "pickup_number": null,
      "pickup_name": "Alex",
      "store": {
        "sales_channel_token": "cnct_ch_your_channel_token",
        "name": "Bistro Example"
      },
      "status": "awaiting_payment",
      "pickup_at": "2026-10-16T12:30:00+02:00",
      "release_at": null,
      "created_at": "2026-10-16T11:58:12+02:00",
      "customer_notes": null,
      "lines": [
        {
          "item_id": 101,
          "name": "Example burger",
          "image_url": null,
          "qty": 2,
          "selections": [
            "Extra cheese"
          ],
          "option_ids": [
            501
          ],
          "unit_price": {
            "amount": "12.50",
            "minor": 1250,
            "currency": "EUR"
          },
          "total_price": {
            "amount": "25.00",
            "minor": 2500,
            "currency": "EUR"
          }
        }
      ],
      "subtotal": {
        "amount": "25.00",
        "minor": 2500,
        "currency": "EUR"
      },
      "discount": {
        "amount": "0.00",
        "minor": 0,
        "currency": "EUR"
      },
      "total": {
        "amount": "25.00",
        "minor": 2500,
        "currency": "EUR"
      },
      "reward_redeemed": false,
      "points_redeemed": 0,
      "points_discount": {
        "amount": "0.00",
        "minor": 0,
        "currency": "EUR"
      },
      "loyalty": {
        "stamps_earned": 0,
        "points_earned": 0
      }
    }
  ],
  "links": {
    "first": "…",
    "last": "…",
    "prev": null,
    "next": null
  },
  "meta": {
    "current_page": 1,
    "from": 1,
    "last_page": 1,
    "per_page": 20,
    "to": 1,
    "total": 1,
    "…": "…"
  }
}

List store orders ​

The customer's orders with this organization, newest first. Each order has its status, currency, lines (with prices and taxes) and order prices. Internal fields, such as staff notes, are never included.

GET/connect/v1/store/customer/orders
Publishable or secret keyNeeds X-Sales-ChannelSigned-in customer

Query parameters

  • per_pageinteger

    Default 10.

  • pageinteger

    Page number.

Good to know

  • A customer who is not a member gets {"orders": []}.
curl "https://api.conciar.com/connect/v1/store/customer/orders" \
  -H "Accept: application/json" \
  -H "X-Api-Key: pk_your_publishable_key" \
  -H "X-Sales-Channel: cnct_ch_your_channel_token" \
  -H "Authorization: Bearer your_customer_access_token"
Example response · 200
{
  "orders": {
    "current_page": 1,
    "data": [
      {
        "id": 1,
        "reference": "ORD-EXAMPLE00001",
        "status": {
          "name": "paid"
        },
        "currency": {
          "symbol": "EUR"
        },
        "lines": [
          "…"
        ],
        "prices": [
          "…"
        ],
        "created_at": "2026-10-10T10:00:00.000000Z",
        "…": "…"
      }
    ],
    "per_page": 10,
    "total": 1,
    "…": "…"
  }
}

Get a store order ​

One order with its addresses, lines, invoice and payment transactions (key, amount, status, method, paid_at), and credit notes.

GET/connect/v1/store/customer/orders/{reference}
Publishable or secret keyNeeds X-Sales-ChannelSigned-in customer

Path parameters

  • referencestringrequired

    The order reference.

Status codes

  • 404Not found, or not this customer's order with this organization.
curl "https://api.conciar.com/connect/v1/store/customer/orders/ORD-EXAMPLE00001" \
  -H "Accept: application/json" \
  -H "X-Api-Key: pk_your_publishable_key" \
  -H "X-Sales-Channel: cnct_ch_your_channel_token" \
  -H "Authorization: Bearer your_customer_access_token"
Example response · 200
{
  "order": {
    "reference": "ORD-EXAMPLE00001",
    "status": {
      "name": "paid"
    },
    "shipping_address": {
      "…": "…"
    },
    "lines": [
      "…"
    ],
    "invoice": {
      "transactions": [
        "…"
      ]
    },
    "…": "…"
  }
}