RentalTideRentalTideDocs
Dashboard

Memberships API

Manage membership programs, tiers, billing, and member access

Endpoints for managing membership programs including tiers, billing, credits, family plans, organizations, public enrollment, and the member portal.

Memberships

Get all memberships

GET /memberships

Retrieves all memberships for a customer with pagination and optional status filtering

Parameters

NameInTypeRequiredDescription
customerIdquerystringYesThe customer ID
statusquerystringNoFilter by membership status
tierIdquerystringNoFilter by tier ID
pagequeryintegerNoPage number
limitqueryintegerNoItems per page

Responses

CodeDescription
200Successfully retrieved memberships
400customerId is required
500Server error

Create a new membership

POST /memberships

Creates a new membership (staff-created). Can optionally create a new renter.

Request body

FieldTypeRequiredDescription
customerIdstringYes
tierIdstringYes
memberTypestringNo
memberIdstringNo
renterIdstringNoAlias for memberId
memberEmailstringYes
memberNamestringNo
memberPhonestringNo
billingCyclestringNo
staffIdstringNo
notesstringNo
createRenterbooleanNoCreate a new renter if true
firstNamestringNo
lastNamestringNo

Responses

CodeDescription
201Membership created successfully
400Missing required fields or member already has active membership
404Tier not found
500Server error

Get a specific membership

GET /memberships/{membershipId}

Retrieves a specific membership with full details including tier and renter info

Parameters

NameInTypeRequiredDescription
membershipIdpathstringYesThe membership ID
customerIdquerystringYesThe customer ID

Responses

CodeDescription
200Successfully retrieved membership
400customerId is required
404Membership not found
500Server error

Cancel a membership

POST /memberships/{membershipId}/cancel

Cancels a membership. Can cancel immediately or at period end.

Parameters

NameInTypeRequiredDescription
membershipIdpathstringYesThe membership ID

Request body

FieldTypeRequiredDescription
customerIdstringYes
cancelImmediatelybooleanNoIf true, cancels immediately. Otherwise cancels at period end.

Responses

CodeDescription
200Membership canceled or scheduled for cancellation
400customerId is required
404Membership not found
500Server error

Reactivate a canceled membership

POST /memberships/{membershipId}/reactivate

Reactivates a membership that was canceled

Parameters

NameInTypeRequiredDescription
membershipIdpathstringYesThe membership ID

Request body

FieldTypeRequiredDescription
customerIdstringYes

Responses

CodeDescription
200Membership reactivated
400customerId is required
500Server error

Pause a membership

POST /memberships/{membershipId}/pause

Pauses a membership. Staff can use force=true to bypass tier policy restrictions.

Parameters

NameInTypeRequiredDescription
membershipIdpathstringYesThe membership ID

Request body

FieldTypeRequiredDescription
customerIdstringYes
resumeAtstringNoOptional date to auto-resume
forcebooleanNoBypass tier pause policy restrictions

Responses

CodeDescription
200Membership paused
400customerId is required or pause not enabled or max pauses reached
404Membership not found
500Server error

Resume a paused membership

POST /memberships/{membershipId}/resume

Resumes a membership that was paused

Parameters

NameInTypeRequiredDescription
membershipIdpathstringYesThe membership ID

Request body

FieldTypeRequiredDescription
customerIdstringYes

Responses

CodeDescription
200Membership resumed
400customerId is required or membership is not paused
404Membership not found
500Server error

Get Stripe invoices and billing history for a membership

GET /memberships/{membershipId}/invoices

Parameters

NameInTypeRequiredDescription
membershipIdpathstringYes
customerIdquerystringYes
limitqueryintegerNo

Responses

CodeDescription
200Successfully retrieved invoices and billing history
400customerId is required
404Membership not found

Memberships - Billing

Add a free month to membership

POST /memberships/{membershipId}/billing/add-free-month

Extends the current period end date by one billing cycle without charging

Parameters

NameInTypeRequiredDescription
membershipIdpathstringYesThe membership ID

Request body

FieldTypeRequiredDescription
customerIdstringYes
reasonstringNoReason for adding free month (for audit purposes)

Responses

CodeDescription
200Free month added successfully
400customerId is required
404Membership not found
500Server error

Change billing date

POST /memberships/{membershipId}/billing/change-date

Changes the billing date by updating the current period end

Parameters

NameInTypeRequiredDescription
membershipIdpathstringYesThe membership ID

Request body

FieldTypeRequiredDescription
customerIdstringYes
newBillingDatestringYesNew billing date (must be in the future)
proRatebooleanNoWhether to pro-rate the price difference
reasonstringNo

Responses

CodeDescription
200Billing date changed successfully
400Invalid request
404Membership not found
500Server error

Switch billing cycle

POST /memberships/{membershipId}/billing/switch-cycle

Switches between monthly and yearly billing cycles with pro-rating

Parameters

NameInTypeRequiredDescription
membershipIdpathstringYesThe membership ID

Request body

FieldTypeRequiredDescription
customerIdstringYes
newBillingCyclestringYes
proRatebooleanNo

Responses

CodeDescription
200Billing cycle switched successfully
400Invalid request
404Membership not found
500Server error

Change membership price

POST /memberships/{membershipId}/billing/change-price

Changes the recurring price for an individual membership

Parameters

NameInTypeRequiredDescription
membershipIdpathstringYesThe membership ID

Request body

FieldTypeRequiredDescription
customerIdstringYes
newPricenumberYesNew price in cents
proRatebooleanNo
reasonstringNo

Responses

CodeDescription
200Price changed successfully
400Invalid request
404Membership not found
500Server error

Refund a membership invoice payment

POST /memberships/{membershipId}/refund


Resend a membership invoice receipt email

POST /memberships/{membershipId}/invoices/{invoiceId}/resend


Memberships - Credits

Get credit balance and history

GET /memberships/{membershipId}/credits

Retrieves the credit balance and transaction history for a membership

Parameters

NameInTypeRequiredDescription
membershipIdpathstringYesThe membership ID
customerIdquerystringYesThe customer ID
limitqueryintegerNoNumber of history entries to return

Responses

CodeDescription
200Successfully retrieved credits
400customerId is required
404Membership not found
500Server error

Adjust membership credits

POST /memberships/{membershipId}/credits/adjust

Manual credit adjustment for a membership (staff only)

Parameters

NameInTypeRequiredDescription
membershipIdpathstringYesThe membership ID

Request body

FieldTypeRequiredDescription
customerIdstringYes
amountnumberYesPositive to add, negative to deduct
descriptionstringYesReason for the adjustment
staffIdstringNo

Responses

CodeDescription
200Credit adjustment successful
400Missing required fields or would result in negative balance
404Membership not found
500Server error

Memberships - Family

Add a family member

POST /memberships/{membershipId}/family

Adds a family member to a membership

Parameters

NameInTypeRequiredDescription
membershipIdpathstringYesThe membership ID

Request body

FieldTypeRequiredDescription
customerIdstringYes
renterIdstringYes
namestringNo
emailstringYes

Responses

CodeDescription
200Family member added
400Missing required fields or family members not enabled or max reached or already a member
404Membership not found
500Server error

Remove a family member

DELETE /memberships/{membershipId}/family/{renterId}

Removes a family member from a membership

Parameters

NameInTypeRequiredDescription
membershipIdpathstringYesThe membership ID
renterIdpathstringYesThe renter ID to remove
customerIdquerystringYesThe customer ID

Responses

CodeDescription
200Family member removed
400customerId is required
404Membership not found or renter not a family member
500Server error

Memberships - Organizations

Get all organizations

GET /memberships/organizations

Retrieves all organizations for a customer

Parameters

NameInTypeRequiredDescription
customerIdquerystringYesThe customer ID

Responses

CodeDescription
200Successfully retrieved organizations
400customerId is required
500Server error

Create an organization

POST /memberships/organizations

Creates a new organization for membership purposes

Request body

FieldTypeRequiredDescription
customerIdstringYes
namestringYes
contactEmailstringYes
contactNamestringYes
contactPhonestringNo
billingAddressobjectNo
maxAuthorizedRentersintegerNo

Responses

CodeDescription
201Organization created successfully
400Missing required fields
500Server error

Get organization by ID

GET /memberships/organizations/{orgId}

Retrieves a specific organization with its membership details

Parameters

NameInTypeRequiredDescription
orgIdpathstringYesThe organization ID
customerIdquerystringYesThe customer ID

Responses

CodeDescription
200Successfully retrieved organization
400customerId is required
404Organization not found
500Server error

Update an organization

PATCH /memberships/organizations/{orgId}

Updates an existing organization's details

Parameters

NameInTypeRequiredDescription
orgIdpathstringYesThe organization ID

Request body

FieldTypeRequiredDescription
customerIdstringYes
namestringNo
contactEmailstringNo
contactNamestringNo
contactPhonestringNo
billingAddressobjectNo
maxAuthorizedRentersintegerNo

Responses

CodeDescription
200Organization updated successfully
400customerId is required
500Server error

Delete an organization

DELETE /memberships/organizations/{orgId}

Deletes an organization. Cannot delete if organization has an active membership.

Parameters

NameInTypeRequiredDescription
orgIdpathstringYesThe organization ID
customerIdquerystringYesThe customer ID

Responses

CodeDescription
200Organization deleted successfully
400customerId is required or organization has active membership
500Server error

Add authorized renter to organization

POST /memberships/organizations/{orgId}/members

Adds a renter to the organization's authorized renters list

Parameters

NameInTypeRequiredDescription
orgIdpathstringYesThe organization ID

Request body

FieldTypeRequiredDescription
customerIdstringYes
renterIdstringYes

Responses

CodeDescription
200Renter added to organization
400Missing required fields or renter already authorized or max limit reached
404Organization not found
500Server error

Get authorized renters for organization

GET /memberships/organizations/{orgId}/members

Retrieves all authorized renters for an organization with their details

Parameters

NameInTypeRequiredDescription
orgIdpathstringYesThe organization ID
customerIdquerystringYesThe customer ID

Responses

CodeDescription
200Successfully retrieved members
400customerId is required
404Organization not found
500Server error

Remove authorized renter from organization

DELETE /memberships/organizations/{orgId}/members/{renterId}

Removes a renter from the organization's authorized renters list

Parameters

NameInTypeRequiredDescription
orgIdpathstringYesThe organization ID
renterIdpathstringYesThe renter ID
customerIdquerystringYesThe customer ID

Responses

CodeDescription
200Renter removed from organization
400customerId is required
404Organization or renter not found
500Server error

Create membership for organization

POST /memberships/organizations/{orgId}/membership

Creates a membership for an organization

Parameters

NameInTypeRequiredDescription
orgIdpathstringYesThe organization ID

Request body

FieldTypeRequiredDescription
customerIdstringYes
tierIdstringYes
billingCyclestringYes

Responses

CodeDescription
201Membership created successfully
400Missing required fields or tier doesn't support organizations or org already has membership
404Organization or tier not found
500Server error

Memberships - Tiers

Get all membership tiers

GET /memberships/tiers

Retrieves all membership tiers for a customer, optionally filtered by active status

Parameters

NameInTypeRequiredDescription
customerIdquerystringYesThe customer ID
activeOnlyquerybooleanNoOnly return active tiers

Responses

CodeDescription
200Successfully retrieved tiers
400customerId is required
500Server error

Create a new membership tier

POST /memberships/tiers

Creates a new membership tier with pricing and benefits

Request body

FieldTypeRequiredDescription
customerIdstringYes
namestringYes
descriptionstringNo
scopestringNo
locationIdsarrayNo
pricingobjectNo
benefitsobjectNo
pausePolicyobjectNo
familyOptionsobjectNo
allowedMemberTypesarrayNo
displayOrderintegerNo

Responses

CodeDescription
201Tier created successfully
400customerId and name are required
500Server error

Get a specific membership tier

GET /memberships/tiers/{tierId}

Retrieves a specific membership tier by ID

Parameters

NameInTypeRequiredDescription
tierIdpathstringYesThe tier ID
customerIdquerystringYesThe customer ID

Responses

CodeDescription
200Successfully retrieved tier
400customerId is required
404Tier not found
500Server error

Update a membership tier

PATCH /memberships/tiers/{tierId}

Updates an existing membership tier

Parameters

NameInTypeRequiredDescription
tierIdpathstringYesThe tier ID

Request body

FieldTypeRequiredDescription
customerIdstringYes
namestringNo
descriptionstringNo
isActivebooleanNo
displayOrderintegerNo
pricingobjectNo
benefitsobjectNo
pausePolicyobjectNo
familyOptionsobjectNo

Responses

CodeDescription
200Tier updated successfully
400customerId is required or no valid fields to update
500Server error

Deactivate a membership tier

DELETE /memberships/tiers/{tierId}

Soft-deletes (deactivates) a membership tier. Cannot delete if tier has active memberships.

Parameters

NameInTypeRequiredDescription
tierIdpathstringYesThe tier ID
customerIdquerystringYesThe customer ID

Responses

CodeDescription
200Tier deactivated successfully
400customerId is required or tier has active memberships
500Server error

Memberships - Public

Get public membership tiers for a location

GET /memberships/public/tiers/{locationId}

Retrieves active membership tiers for a location (no authentication required)

Parameters

NameInTypeRequiredDescription
locationIdpathstringYesThe location ID

Responses

CodeDescription
200Successfully retrieved tiers
404Location not found
500Server error

Create checkout session for membership signup

POST /memberships/public/checkout

Creates a Stripe checkout session for membership signup. If renter has existing payment method, creates subscription directly.

Request body

FieldTypeRequiredDescription
customerIdstringYes
tierIdstringYes
billingCyclestringYes
renterEmailstringYes
renterNamestringNo
renterPhonestringNo
renterIdstringNoOptional existing renter ID
successUrlstringNo
cancelUrlstringNo

Responses

CodeDescription
200Checkout session or subscription created
400Missing required fields or Stripe not configured
404Tier or location not found
500Server error

Check membership signup status

GET /memberships/public/status/{sessionId}

Check the status of a membership signup by checkout session ID

Parameters

NameInTypeRequiredDescription
sessionIdpathstringYesThe Stripe checkout session ID

Responses

CodeDescription
200Membership status retrieved
404Membership not found
500Server error

Member Portal

Get membership details

GET /portal/membership

Returns the current member's membership details, credits balance, tier information, and business info. Requires OTP session authentication.

Parameters

NameInTypeRequiredDescription
x-otp-sessionheaderstringYesOTP session token

Responses

CodeDescription
200Membership details retrieved successfully
401Unauthorized - invalid or missing OTP session
404Membership not found
500Internal server error

Get credit transaction history

GET /portal/membership/credits

Returns the member's credit transaction history, sorted by most recent first

Parameters

NameInTypeRequiredDescription
x-otp-sessionheaderstringYesOTP session token
limitqueryintegerNoMaximum number of transactions to return

Responses

CodeDescription
200Credit transactions retrieved successfully
401Unauthorized - invalid or missing OTP session
500Internal server error

Pause membership

POST /portal/membership/pause

Pauses the member's subscription if the tier's pause policy allows it. Pauses the Stripe subscription collection.

Parameters

NameInTypeRequiredDescription
x-otp-sessionheaderstringYesOTP session token

Responses

CodeDescription
200Membership paused successfully
400Pausing not allowed or membership not active
401Unauthorized - invalid or missing OTP session
404Membership not found
500Internal server error

Resume paused membership

POST /portal/membership/resume

Resumes a paused membership and reactivates Stripe subscription collection

Parameters

NameInTypeRequiredDescription
x-otp-sessionheaderstringYesOTP session token

Responses

CodeDescription
200Membership resumed successfully
400Membership is not paused
401Unauthorized - invalid or missing OTP session
404Membership not found
500Internal server error

Cancel membership

POST /portal/membership/cancel

Schedules the membership for cancellation at the end of the current billing period. Respects minimum commitment periods.

Parameters

NameInTypeRequiredDescription
x-otp-sessionheaderstringYesOTP session token

Request body

FieldTypeRequiredDescription
reasonstringNoOptional cancellation reason

Responses

CodeDescription
200Membership scheduled for cancellation
400Cancellation not allowed, already canceled, or minimum commitment not met
401Unauthorized - invalid or missing OTP session
404Membership not found
500Internal server error

GET /portal/membership/payment

Returns a Stripe Customer Portal URL where the member can update their payment method

Parameters

NameInTypeRequiredDescription
x-otp-sessionheaderstringYesOTP session token

Responses

CodeDescription
200Portal URL generated successfully
400No payment information found or payment management unavailable
401Unauthorized - invalid or missing OTP session
500Internal server error

Get member's bookings

GET /portal/bookings

Returns the member's booking history with optional filtering by status

Parameters

NameInTypeRequiredDescription
x-otp-sessionheaderstringYesOTP session token
limitqueryintegerNoMaximum number of bookings to return
statusquerystringNoFilter bookings by status

Responses

CodeDescription
200Bookings retrieved successfully
401Unauthorized - invalid or missing OTP session
500Internal server error

Get booking details

GET /portal/bookings/{rentalId}

Returns detailed information about a specific booking

Parameters

NameInTypeRequiredDescription
x-otp-sessionheaderstringYesOTP session token
rentalIdpathstringYesThe booking rental ID

Responses

CodeDescription
200Booking details retrieved successfully
401Unauthorized - invalid or missing OTP session
403Access denied - booking belongs to different member
404Booking not found
500Internal server error

Get saved payment methods

GET /portal/payment-methods

Returns the member's saved payment methods (credit cards) from Stripe

Parameters

NameInTypeRequiredDescription
x-otp-sessionheaderstringYesOTP session token

Responses

CodeDescription
200Payment methods retrieved successfully
401Unauthorized - invalid or missing OTP session
500Internal server error

Was this page helpful?
Need help? Contact Support.See what’s new. Check out changelog.Questions? Book a video chat.
Ask AI
Responses are generated using AI and may contain mistakes.
Ask questions about RentalTide and get help with your integration.