Loyalty & Rewards

Build and manage loyalty programs that drive customer retention. Create tiered reward structures, enroll members, track point balances and transactions, configure rewards and redemptions, and set up automated service reminders.


GET/v1/loyalty/program

Get loyalty program

Retrieve the loyalty program configuration for your business.

Request

GET
/v1/loyalty/program
curl https://api.umbraerp.com/v1/loyalty/program \
  -H "Authorization: Bearer <your_access_token>"

Response

{
  "result": "success",
  "data": {
    "publicId": "abc-123",
    "name": "LESRUS Rewards",
    "pointsName": "Stars",
    "pointsPerCurrency": 10,
    "currency": "USD",
    "enrollmentType": "automatic",
    "pointsExpiryDays": 365,
    "isActive": true,
    "autoNotify": true,
    "dateCreated": "2026-03-17T10:00:00Z"
  }
}

POST/v1/loyalty/program

Create loyalty program

Create a new loyalty program for your business. Only one program can be active per business.

Required attributes

  • Name
    name
    Type
    string
    Description

    The name of the loyalty program (e.g., "LESRUS Rewards").

  • Name
    pointsName
    Type
    string
    Description

    What your points are called (e.g., "Stars", "Points", "Miles").

  • Name
    pointsPerCurrency
    Type
    integer
    Description

    How many points are earned per unit of currency spent.

  • Name
    currency
    Type
    string
    Description

    Three-letter ISO currency code (e.g., USD).

Optional attributes

  • Name
    enrollmentType
    Type
    string
    Description

    How customers join: automatic or manual. Default: automatic.

  • Name
    pointsExpiryDays
    Type
    integer
    Description

    Number of days before points expire. Set to 0 for no expiry.

  • Name
    autoNotify
    Type
    boolean
    Description

    Whether to send automatic notifications to members on point changes. Default: true.

Request

POST
/v1/loyalty/program
curl -X POST https://api.umbraerp.com/v1/loyalty/program \
  -H "Authorization: Bearer <your_access_token>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "LESRUS Rewards",
    "pointsName": "Stars",
    "pointsPerCurrency": 10,
    "currency": "USD",
    "enrollmentType": "automatic",
    "pointsExpiryDays": 365,
    "autoNotify": true
  }'

Response

{
  "result": "success",
  "data": {
    "publicId": "abc-123",
    "name": "LESRUS Rewards",
    "pointsName": "Stars",
    "pointsPerCurrency": 10,
    "currency": "USD",
    "enrollmentType": "automatic",
    "pointsExpiryDays": 365,
    "isActive": true,
    "autoNotify": true,
    "dateCreated": "2026-03-17T10:00:00Z"
  }
}

PUT/v1/loyalty/program

Update loyalty program

Update the loyalty program configuration.

Optional attributes

  • Name
    name
    Type
    string
    Description

    Updated program name.

  • Name
    pointsName
    Type
    string
    Description

    Updated points name.

  • Name
    pointsPerCurrency
    Type
    integer
    Description

    Updated points-per-currency ratio.

  • Name
    enrollmentType
    Type
    string
    Description

    Updated enrollment type: automatic or manual.

  • Name
    pointsExpiryDays
    Type
    integer
    Description

    Updated expiry period in days.

  • Name
    isActive
    Type
    boolean
    Description

    Enable or disable the loyalty program.

  • Name
    autoNotify
    Type
    boolean
    Description

    Enable or disable automatic member notifications.

Request

PUT
/v1/loyalty/program
curl -X PUT https://api.umbraerp.com/v1/loyalty/program \
  -H "Authorization: Bearer <your_access_token>" \
  -H "Content-Type: application/json" \
  -d '{
    "pointsPerCurrency": 15,
    "pointsExpiryDays": 180
  }'

Response

{
  "result": "success",
  "message": "Loyalty program updated successfully."
}

DELETE/v1/loyalty/program

Delete loyalty program

Delete the loyalty program. This will deactivate the program and remove all associated tiers, but member records are retained for historical reporting.

Request

DELETE
/v1/loyalty/program
curl -X DELETE https://api.umbraerp.com/v1/loyalty/program \
  -H "Authorization: Bearer <your_access_token>"

Response

{
  "result": "success",
  "message": "Loyalty program deleted successfully."
}

GET/v1/loyalty/tiers

List tiers

Retrieve all tiers configured for the loyalty program.

Request

GET
/v1/loyalty/tiers
curl https://api.umbraerp.com/v1/loyalty/tiers \
  -H "Authorization: Bearer <your_access_token>"

Response

{
  "result": "success",
  "data": [
    {
      "publicId": "tier-001",
      "name": "Bronze",
      "color": "#CD7F32",
      "minPoints": 0,
      "multiplier": 1.0,
      "sortOrder": 1
    },
    {
      "publicId": "tier-002",
      "name": "Silver",
      "color": "#C0C0C0",
      "minPoints": 1000,
      "multiplier": 1.25,
      "sortOrder": 2
    },
    {
      "publicId": "tier-003",
      "name": "Gold",
      "color": "#FFD700",
      "minPoints": 5000,
      "multiplier": 1.5,
      "sortOrder": 3
    },
    {
      "publicId": "tier-004",
      "name": "Platinum",
      "color": "#E5E4E2",
      "minPoints": 15000,
      "multiplier": 2.0,
      "sortOrder": 4
    }
  ]
}

POST/v1/loyalty/tiers

Create tier

Add a new tier to the loyalty program.

Required attributes

  • Name
    name
    Type
    string
    Description

    The name of the tier (e.g., "Gold").

  • Name
    minPoints
    Type
    integer
    Description

    Minimum lifetime points required to reach this tier.

Optional attributes

  • Name
    color
    Type
    string
    Description

    Hex color code for the tier badge (e.g., #FFD700).

  • Name
    multiplier
    Type
    number
    Description

    Points earning multiplier for members in this tier. Default: 1.0.

  • Name
    sortOrder
    Type
    integer
    Description

    Display order for the tier.

Request

POST
/v1/loyalty/tiers
curl -X POST https://api.umbraerp.com/v1/loyalty/tiers \
  -H "Authorization: Bearer <your_access_token>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Diamond",
    "minPoints": 50000,
    "color": "#B9F2FF",
    "multiplier": 3.0,
    "sortOrder": 5
  }'

Response

{
  "result": "success",
  "message": "Tier created successfully."
}

PUT/v1/loyalty/tiers/:publicId

Update tier

Update an existing tier.

Optional attributes

  • Name
    name
    Type
    string
    Description

    Updated tier name.

  • Name
    minPoints
    Type
    integer
    Description

    Updated minimum points threshold.

  • Name
    color
    Type
    string
    Description

    Updated hex color code.

  • Name
    multiplier
    Type
    number
    Description

    Updated points multiplier.

  • Name
    sortOrder
    Type
    integer
    Description

    Updated display order.

Request

PUT
/v1/loyalty/tiers/tier-003
curl -X PUT https://api.umbraerp.com/v1/loyalty/tiers/tier-003 \
  -H "Authorization: Bearer <your_access_token>" \
  -H "Content-Type: application/json" \
  -d '{
    "multiplier": 2.0,
    "minPoints": 4000
  }'

Response

{
  "result": "success",
  "message": "Tier updated successfully."
}

DELETE/v1/loyalty/tiers/:publicId

Delete tier

Remove a tier from the loyalty program. Members in the deleted tier will be moved to the next lower tier.

Request

DELETE
/v1/loyalty/tiers/tier-003
curl -X DELETE https://api.umbraerp.com/v1/loyalty/tiers/tier-003 \
  -H "Authorization: Bearer <your_access_token>"

Response

{
  "result": "success",
  "message": "Tier deleted successfully."
}

GET/v1/loyalty/members

List members

Retrieve a paginated list of all loyalty program members.

Optional parameters

  • Name
    status
    Type
    string
    Description

    Filter by status: active, inactive, suspended.

  • Name
    tier
    Type
    string
    Description

    Filter by tier public ID.

  • Name
    search
    Type
    string
    Description

    Search by member name or email.

  • Name
    limit
    Type
    integer
    Description

    Maximum number of records to return (default: 50).

  • Name
    offset
    Type
    integer
    Description

    Number of records to skip for pagination.

Request

GET
/v1/loyalty/members
curl https://api.umbraerp.com/v1/loyalty/members \
  -H "Authorization: Bearer <your_access_token>"

Response

{
  "result": "success",
  "data": [
    {
      "publicId": "def-456",
      "customerName": "John Moyo",
      "customerEmail": "john@example.com",
      "tierName": "Gold",
      "tierColor": "#FFD700",
      "pointsBalance": 2400,
      "lifetimePoints": 8200,
      "status": "active",
      "enrolledAt": "2026-01-15T08:30:00Z"
    }
  ],
  "totalCount": 142
}

GET/v1/loyalty/members/:publicId

Get member

Retrieve details of a specific loyalty member by their public ID.

Request

GET
/v1/loyalty/members/def-456
curl https://api.umbraerp.com/v1/loyalty/members/def-456 \
  -H "Authorization: Bearer <your_access_token>"

Response

{
  "result": "success",
  "data": {
    "publicId": "def-456",
    "customerName": "John Moyo",
    "customerEmail": "john@example.com",
    "customerPhone": "+263771234567",
    "tierName": "Gold",
    "tierColor": "#FFD700",
    "pointsBalance": 2400,
    "lifetimePoints": 8200,
    "status": "active",
    "enrolledAt": "2026-01-15T08:30:00Z"
  }
}

POST/v1/loyalty/members

Enroll member

Enroll a customer as a new loyalty program member.

Required attributes

  • Name
    customerId
    Type
    string
    Description

    The public ID of the customer to enroll.

Optional attributes

  • Name
    tierId
    Type
    string
    Description

    Public ID of the tier to assign. Defaults to the lowest tier.

  • Name
    initialPoints
    Type
    integer
    Description

    Starting point balance. Default: 0.

Request

POST
/v1/loyalty/members
curl -X POST https://api.umbraerp.com/v1/loyalty/members \
  -H "Authorization: Bearer <your_access_token>" \
  -H "Content-Type: application/json" \
  -d '{
    "customerId": "cust_123",
    "tierId": "tier-001",
    "initialPoints": 100
  }'

Response

{
  "result": "success",
  "data": {
    "publicId": "def-456",
    "customerName": "John Moyo",
    "customerEmail": "john@example.com",
    "tierName": "Bronze",
    "tierColor": "#CD7F32",
    "pointsBalance": 100,
    "lifetimePoints": 100,
    "status": "active",
    "enrolledAt": "2026-03-17T10:00:00Z"
  }
}

POST/v1/loyalty/members/bulk

Bulk enroll members

Enroll multiple customers into the loyalty program in a single request.

Required attributes

  • Name
    customerIds
    Type
    array
    Description

    Array of customer public IDs to enroll.

Optional attributes

  • Name
    tierId
    Type
    string
    Description

    Tier to assign to all enrollees. Defaults to the lowest tier.

  • Name
    initialPoints
    Type
    integer
    Description

    Starting point balance for each member. Default: 0.

Request

POST
/v1/loyalty/members/bulk
curl -X POST https://api.umbraerp.com/v1/loyalty/members/bulk \
  -H "Authorization: Bearer <your_access_token>" \
  -H "Content-Type: application/json" \
  -d '{
    "customerIds": ["cust_123", "cust_456", "cust_789"],
    "tierId": "tier-001",
    "initialPoints": 50
  }'

Response

{
  "result": "success",
  "data": {
    "enrolled": 3,
    "skipped": 0,
    "errors": []
  }
}

PUT/v1/loyalty/members/:publicId

Update member

Update a loyalty member's status or tier assignment.

Optional attributes

  • Name
    tierId
    Type
    string
    Description

    Public ID of the new tier to assign.

  • Name
    status
    Type
    string
    Description

    Updated status: active, inactive, or suspended.

Request

PUT
/v1/loyalty/members/def-456
curl -X PUT https://api.umbraerp.com/v1/loyalty/members/def-456 \
  -H "Authorization: Bearer <your_access_token>" \
  -H "Content-Type: application/json" \
  -d '{
    "tierId": "tier-003",
    "status": "active"
  }'

Response

{
  "result": "success",
  "message": "Member updated successfully."
}

DELETE/v1/loyalty/members/:publicId

Delete member

Remove a member from the loyalty program. Their transaction history is retained for reporting.

Request

DELETE
/v1/loyalty/members/def-456
curl -X DELETE https://api.umbraerp.com/v1/loyalty/members/def-456 \
  -H "Authorization: Bearer <your_access_token>"

Response

{
  "result": "success",
  "message": "Member deleted successfully."
}

GET/v1/loyalty/transactions

List transactions

Retrieve a paginated list of all loyalty point transactions across all members.

Optional parameters

  • Name
    type
    Type
    string
    Description

    Filter by transaction type: earn, redeem, adjust, expire.

  • Name
    limit
    Type
    integer
    Description

    Maximum number of records to return (default: 50).

  • Name
    offset
    Type
    integer
    Description

    Number of records to skip for pagination.

Request

GET
/v1/loyalty/transactions
curl https://api.umbraerp.com/v1/loyalty/transactions \
  -H "Authorization: Bearer <your_access_token>"

Response

{
  "result": "success",
  "data": [
    {
      "publicId": "tx-789",
      "type": "earn",
      "points": 50,
      "balanceAfter": 2450,
      "description": "Earned from Invoice #INV-0042",
      "referenceType": "invoice",
      "multiplierApplied": 1.5,
      "dateCreated": "2026-03-17T14:30:00Z"
    }
  ],
  "totalCount": 328
}

GET/v1/loyalty/members/:publicId/transactions

Get member transactions

Retrieve all transactions for a specific loyalty member.

Optional parameters

  • Name
    type
    Type
    string
    Description

    Filter by transaction type: earn, redeem, adjust, expire.

  • Name
    limit
    Type
    integer
    Description

    Maximum number of records to return (default: 50).

  • Name
    offset
    Type
    integer
    Description

    Number of records to skip for pagination.

Request

GET
/v1/loyalty/members/def-456/transactions
curl https://api.umbraerp.com/v1/loyalty/members/def-456/transactions \
  -H "Authorization: Bearer <your_access_token>"

Response

{
  "result": "success",
  "data": [
    {
      "publicId": "tx-789",
      "type": "earn",
      "points": 50,
      "balanceAfter": 2450,
      "description": "Earned from Invoice #INV-0042",
      "referenceType": "invoice",
      "multiplierApplied": 1.5,
      "dateCreated": "2026-03-17T14:30:00Z"
    },
    {
      "publicId": "tx-790",
      "type": "redeem",
      "points": -200,
      "balanceAfter": 2250,
      "description": "Redeemed: Free Oil Change",
      "referenceType": "reward",
      "multiplierApplied": 1.0,
      "dateCreated": "2026-03-16T09:15:00Z"
    }
  ],
  "totalCount": 24
}

POST/v1/loyalty/transactions/adjust

Create adjustment

Manually adjust a member's point balance. Use this for corrections, promotional bonuses, or goodwill credits.

Required attributes

  • Name
    memberId
    Type
    string
    Description

    Public ID of the member to adjust.

  • Name
    points
    Type
    integer
    Description

    Number of points to add (positive) or remove (negative).

  • Name
    description
    Type
    string
    Description

    Reason for the adjustment.

Request

POST
/v1/loyalty/transactions/adjust
curl -X POST https://api.umbraerp.com/v1/loyalty/transactions/adjust \
  -H "Authorization: Bearer <your_access_token>" \
  -H "Content-Type: application/json" \
  -d '{
    "memberId": "def-456",
    "points": 500,
    "description": "Welcome bonus for new Gold member"
  }'

Response

{
  "result": "success",
  "data": {
    "publicId": "tx-791",
    "type": "adjust",
    "points": 500,
    "balanceAfter": 2900,
    "description": "Welcome bonus for new Gold member",
    "referenceType": "manual",
    "multiplierApplied": 1.0,
    "dateCreated": "2026-03-17T15:00:00Z"
  }
}

GET/v1/loyalty/rewards

List rewards

Retrieve all rewards available in the loyalty program.

Optional parameters

  • Name
    isActive
    Type
    boolean
    Description

    Filter by active or inactive rewards.

Request

GET
/v1/loyalty/rewards
curl https://api.umbraerp.com/v1/loyalty/rewards \
  -H "Authorization: Bearer <your_access_token>"

Response

{
  "result": "success",
  "data": [
    {
      "publicId": "rwd-001",
      "name": "Free Oil Change",
      "description": "Complimentary oil change service",
      "pointsCost": 500,
      "rewardType": "service",
      "isActive": true,
      "totalRedemptions": 42,
      "dateCreated": "2026-02-01T09:00:00Z"
    },
    {
      "publicId": "rwd-002",
      "name": "10% Discount Voucher",
      "description": "10% off your next purchase",
      "pointsCost": 200,
      "rewardType": "discount",
      "discountPercent": 10,
      "isActive": true,
      "totalRedemptions": 87,
      "dateCreated": "2026-02-01T09:00:00Z"
    }
  ]
}

POST/v1/loyalty/rewards

Create reward

Add a new reward to the loyalty program catalog.

Required attributes

  • Name
    name
    Type
    string
    Description

    The name of the reward.

  • Name
    pointsCost
    Type
    integer
    Description

    Number of points required to redeem this reward.

  • Name
    rewardType
    Type
    string
    Description

    Type of reward: discount, service, product, voucher.

Optional attributes

  • Name
    description
    Type
    string
    Description

    Detailed description of the reward.

  • Name
    discountPercent
    Type
    number
    Description

    Discount percentage (only for discount type rewards).

  • Name
    isActive
    Type
    boolean
    Description

    Whether the reward is immediately available. Default: true.

Request

POST
/v1/loyalty/rewards
curl -X POST https://api.umbraerp.com/v1/loyalty/rewards \
  -H "Authorization: Bearer <your_access_token>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Free Car Wash",
    "description": "Complimentary full car wash",
    "pointsCost": 300,
    "rewardType": "service"
  }'

Response

{
  "result": "success",
  "message": "Reward created successfully."
}

PUT/v1/loyalty/rewards/:publicId

Update reward

Update an existing reward.

Optional attributes

  • Name
    name
    Type
    string
    Description

    Updated reward name.

  • Name
    description
    Type
    string
    Description

    Updated description.

  • Name
    pointsCost
    Type
    integer
    Description

    Updated points cost.

  • Name
    rewardType
    Type
    string
    Description

    Updated reward type.

  • Name
    discountPercent
    Type
    number
    Description

    Updated discount percentage.

  • Name
    isActive
    Type
    boolean
    Description

    Enable or disable the reward.

Request

PUT
/v1/loyalty/rewards/rwd-001
curl -X PUT https://api.umbraerp.com/v1/loyalty/rewards/rwd-001 \
  -H "Authorization: Bearer <your_access_token>" \
  -H "Content-Type: application/json" \
  -d '{
    "pointsCost": 450,
    "description": "Premium oil change with synthetic oil"
  }'

Response

{
  "result": "success",
  "message": "Reward updated successfully."
}

DELETE/v1/loyalty/rewards/:publicId

Delete reward

Remove a reward from the loyalty program catalog. Existing redemptions for this reward are not affected.

Request

DELETE
/v1/loyalty/rewards/rwd-001
curl -X DELETE https://api.umbraerp.com/v1/loyalty/rewards/rwd-001 \
  -H "Authorization: Bearer <your_access_token>"

Response

{
  "result": "success",
  "message": "Reward deleted successfully."
}

GET/v1/loyalty/redemptions

List redemptions

Retrieve a paginated list of all reward redemptions.

Optional parameters

  • Name
    status
    Type
    string
    Description

    Filter by status: pending, fulfilled, cancelled, expired.

  • Name
    memberId
    Type
    string
    Description

    Filter by member public ID.

  • Name
    limit
    Type
    integer
    Description

    Maximum number of records to return (default: 50).

  • Name
    offset
    Type
    integer
    Description

    Number of records to skip for pagination.

Request

GET
/v1/loyalty/redemptions
curl https://api.umbraerp.com/v1/loyalty/redemptions \
  -H "Authorization: Bearer <your_access_token>"

Response

{
  "result": "success",
  "data": [
    {
      "publicId": "rdm-001",
      "memberName": "John Moyo",
      "rewardName": "Free Oil Change",
      "pointsSpent": 500,
      "status": "fulfilled",
      "voucherCode": "VOUCH-A1B2C3",
      "redeemedAt": "2026-03-15T11:00:00Z",
      "fulfilledAt": "2026-03-16T09:30:00Z"
    }
  ],
  "totalCount": 87
}

POST/v1/loyalty/redemptions

Create redemption

Redeem a reward for a loyalty member. The member's point balance will be debited by the reward's point cost.

Required attributes

  • Name
    memberId
    Type
    string
    Description

    Public ID of the member redeeming the reward.

  • Name
    rewardId
    Type
    string
    Description

    Public ID of the reward to redeem.

Optional attributes

  • Name
    notes
    Type
    string
    Description

    Additional notes about the redemption.

Request

POST
/v1/loyalty/redemptions
curl -X POST https://api.umbraerp.com/v1/loyalty/redemptions \
  -H "Authorization: Bearer <your_access_token>" \
  -H "Content-Type: application/json" \
  -d '{
    "memberId": "def-456",
    "rewardId": "rwd-002",
    "notes": "Customer requested via phone"
  }'

Response

{
  "result": "success",
  "data": {
    "publicId": "rdm-002",
    "memberName": "John Moyo",
    "rewardName": "10% Discount Voucher",
    "pointsSpent": 200,
    "status": "pending",
    "voucherCode": "VOUCH-D4E5F6",
    "redeemedAt": "2026-03-17T15:30:00Z",
    "fulfilledAt": null
  }
}

PUT/v1/loyalty/redemptions/:publicId

Update redemption

Update the status of a redemption, such as marking it as fulfilled or cancelled.

Required attributes

  • Name
    status
    Type
    string
    Description

    Updated status: pending, fulfilled, cancelled.

Optional attributes

  • Name
    notes
    Type
    string
    Description

    Additional notes about the status change.

Request

PUT
/v1/loyalty/redemptions/rdm-002
curl -X PUT https://api.umbraerp.com/v1/loyalty/redemptions/rdm-002 \
  -H "Authorization: Bearer <your_access_token>" \
  -H "Content-Type: application/json" \
  -d '{
    "status": "fulfilled",
    "notes": "Service completed at workshop"
  }'

Response

{
  "result": "success",
  "message": "Redemption updated successfully."
}

GET/v1/loyalty/vouchers/:code/verify

Verify voucher code

Verify whether a voucher code is valid and retrieve its details. Returns the associated reward and redemption status.

Request

GET
/v1/loyalty/vouchers/VOUCH-A1B2C3/verify
curl https://api.umbraerp.com/v1/loyalty/vouchers/VOUCH-A1B2C3/verify \
  -H "Authorization: Bearer <your_access_token>"

Response

{
  "result": "success",
  "data": {
    "valid": true,
    "voucherCode": "VOUCH-A1B2C3",
    "rewardName": "Free Oil Change",
    "memberName": "John Moyo",
    "status": "pending",
    "redeemedAt": "2026-03-15T11:00:00Z",
    "expiresAt": "2026-04-15T11:00:00Z"
  }
}

GET/v1/loyalty/stats

Get loyalty stats

Retrieve aggregate statistics for the loyalty program, including member counts, point totals, redemption rates, and tier distribution.

Request

GET
/v1/loyalty/stats
curl https://api.umbraerp.com/v1/loyalty/stats \
  -H "Authorization: Bearer <your_access_token>"

Response

{
  "result": "success",
  "data": {
    "totalMembers": 142,
    "activeMembers": 128,
    "totalPointsIssued": 45200,
    "totalPointsRedeemed": 12800,
    "redemptionRate": 28.3,
    "tierDistribution": [
      {"name": "Bronze", "count": 80, "color": "#CD7F32"},
      {"name": "Silver", "count": 35, "color": "#C0C0C0"},
      {"name": "Gold", "count": 20, "color": "#FFD700"},
      {"name": "Platinum", "count": 7, "color": "#E5E4E2"}
    ]
  }
}

GET/v1/loyalty/reminders

List service reminders

Retrieve all service reminders configured for the loyalty program. Service reminders automatically notify members when a service is due.

Optional parameters

  • Name
    isActive
    Type
    boolean
    Description

    Filter by active or inactive reminders.

Request

GET
/v1/loyalty/reminders
curl https://api.umbraerp.com/v1/loyalty/reminders \
  -H "Authorization: Bearer <your_access_token>"

Response

{
  "result": "success",
  "data": [
    {
      "publicId": "rem-001",
      "name": "Oil Change Reminder",
      "description": "Remind customers when oil change is due",
      "intervalDays": 90,
      "bonusPoints": 50,
      "isActive": true,
      "dateCreated": "2026-02-01T09:00:00Z"
    },
    {
      "publicId": "rem-002",
      "name": "Annual Service",
      "description": "Yearly vehicle service reminder",
      "intervalDays": 365,
      "bonusPoints": 200,
      "isActive": true,
      "dateCreated": "2026-02-01T09:00:00Z"
    }
  ]
}

POST/v1/loyalty/reminders

Create service reminder

Create a new service reminder that will automatically notify members at configured intervals.

Required attributes

  • Name
    name
    Type
    string
    Description

    The name of the service reminder.

  • Name
    intervalDays
    Type
    integer
    Description

    Number of days between reminders.

Optional attributes

  • Name
    description
    Type
    string
    Description

    Detailed description of the reminder.

  • Name
    bonusPoints
    Type
    integer
    Description

    Bonus points awarded when the service is completed. Default: 0.

  • Name
    isActive
    Type
    boolean
    Description

    Whether the reminder is immediately active. Default: true.

Request

POST
/v1/loyalty/reminders
curl -X POST https://api.umbraerp.com/v1/loyalty/reminders \
  -H "Authorization: Bearer <your_access_token>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Tire Rotation",
    "description": "Remind customers to rotate tires",
    "intervalDays": 180,
    "bonusPoints": 100
  }'

Response

{
  "result": "success",
  "message": "Service reminder created successfully."
}

PUT/v1/loyalty/reminders/:publicId

Update service reminder

Update an existing service reminder.

Optional attributes

  • Name
    name
    Type
    string
    Description

    Updated reminder name.

  • Name
    description
    Type
    string
    Description

    Updated description.

  • Name
    intervalDays
    Type
    integer
    Description

    Updated interval in days.

  • Name
    bonusPoints
    Type
    integer
    Description

    Updated bonus points.

  • Name
    isActive
    Type
    boolean
    Description

    Enable or disable the reminder.

Request

PUT
/v1/loyalty/reminders/rem-001
curl -X PUT https://api.umbraerp.com/v1/loyalty/reminders/rem-001 \
  -H "Authorization: Bearer <your_access_token>" \
  -H "Content-Type: application/json" \
  -d '{
    "intervalDays": 60,
    "bonusPoints": 75
  }'

Response

{
  "result": "success",
  "message": "Service reminder updated successfully."
}

DELETE/v1/loyalty/reminders/:publicId

Delete service reminder

Remove a service reminder from the loyalty program.

Request

DELETE
/v1/loyalty/reminders/rem-001
curl -X DELETE https://api.umbraerp.com/v1/loyalty/reminders/rem-001 \
  -H "Authorization: Bearer <your_access_token>"

Response

{
  "result": "success",
  "message": "Service reminder deleted successfully."
}

Was this page helpful?