Video chapters
- 0:00 Welcome
- 0:20 How rentals work
- 0:47 1 · Rental terms and the item: explained
- 1:03 1 · Rental terms and the item — configuration, item, live site
- 2:50 2 · The customer books and pays: explained
- 3:03 2 · The customer books and pays — dates, agreement, Stripe test payment, email
- 3:59 3 · The booking in Studio: explained
- 4:11 3 · The booking in Studio — paid, deposit held, agreement, confirm
- 4:37 4 · Handover and return: explained
- 4:52 4 · Handover and return — check-out and check-in with condition
- 5:24 5 · Damage, late return and cancellation: explained
- 5:39 5 · Damage, late return and cancellation — deduction, late fee, refunded cancellation
- 6:37 6 · Giving the deposit back: explained
- 6:51 6 · Giving the deposit back — card refund of the deposit, complete
- 7:19 Wrap-up
Written guide
Overview
Configure an Appmint rental offering, then follow its availability, booking, handover and return. The item, policy, payment and condition records each prove a different part of the outcome.
01. Create shared rental policy
Why this matters
Configuration supplies defaults; an item can override them. Defaults should be deliberate before creating multiple rental items.
Follow these steps
Open Storefront → Rental → Configuration → Add Configuration. Enter Name, Title, Description and Status; leave Set as Default off until reviewed. Set Currency and Tax Rate. Configure Deposit Required, Refundable, Deposit Type and Amount. Configure late-fee rate, unit, cap, grace period/unit and additional fees. Set cancellation allowance, free-cancellation hours, fee/type, refund policy and policy text. Save and reopen.
Save a policy you can identify again
- Open Storefront → Rental → Configuration → Add Configuration. Give the policy a unique Name and readable Title. The illustrated record uses
course-exhibition-policy/Cedar Exhibition Policy. - Keep Status → Inactive and Set as Default off while preparing it. Enter the intended Currency and Tax Rate (%); the training image uses USD and0, not a recommendation for your business's tax treatment.
- Expand Default Deposit Settings, Default Late Fee Settings and Default Additional Fees one at a time. Decide whether the deposit is required, its amount/type and whether it is refundable. Configure only the fees you intend to apply.
- Review cancellation/availability rules before Save. Refresh the configuration list, search the same name, reopen and check the policy values. Saving configuration does not collect or refund a deposit.

Historical Appmint rental editor capture, not a fresh booking or payment. The saved policy is inactive and is not the default. Its deposit/late-fee sections are collapsed in this frame; no charged fee is shown.
Check the result
An inactive policy may still appear in a selector; selecting it is not proof it is operationally enabled. No deposit is collected simply by saving the policy.
02. Create an item and availability
Why this matters
Quantity, price intervals and buffered availability control different parts of a rental.
Follow these steps
Open Rental Items → Add Item. Enter Name, SKU, Slug, Quantity, Description, Images and status. Select Configuration. Set hourly/daily/weekly/monthly rates and currency as applicable. Review item deposit/late/additional-fee overrides. Set availability start/end time, timezone, min/max duration and buffer time with units. Save and reopen the item.
Attach the policy and read the item back
- Open Rental Items → Add Item. Enter the item Name, unique SKU, Slug and physical Quantity. Quantity is the number of items available to rent, not the number of days.
- Select the saved policy in Configuration (labelled Config in the schema view shown below). Keep the item inactive until the offering is ready.
- Enter the supported price intervals and review item-specific overrides. Review availability, timezone, minimum/maximum duration and buffer units before saving.
- Save, refresh the item list and reopen the same SKU. Confirm that the selected policy remains a readable named choice, rather than becoming blank or
[object Object].

Historical Appmint rental editor capture, not a fresh booking or payment. Cedar Exhibition Easel / CF-EASEL-01 has Quantity2 and Cedar Exhibition Policy selected. It is inactive; the schema editor's JSON tab is selected, but the screenshot shows rendered fields, not a raw API response.
Check the result
The configuration picker must persist the policy name, not an object. Earlier capture repaired this local selector; verify the current saved record rather than relying on historical success.
03. Pickup, delivery and restrictions
Why this matters
A rental can have different outbound and return logistics.
Follow these steps
Choose Pickup Location from a saved location or manual address. Set Return Location or Same as Pickup Location. Configure Allow Pickup, lead time, same-day cutoff and instructions. For delivery set fee type, base/per-mile rate, radius, cutoff and lead time. Configure customer dropoff or return pickup and its fees/radius. Review age, KYC, license, location and membership/customer-field restrictions. Save and inspect the rendered customer choices.
Check the result
Do not claim a location rule enforces itself without testing the relevant customer. Pickup eligibility and return pickup are independent.
04. Book, hand over and receive
Why this matters
A booking outcome requires actual dates and quantity, then a saved rental record.
Follow these steps
Open the real rental customer route, choose available dates/quantity and inspect duration, rental price, deposit, fees and agreement. Complete a controlled booking and find it under Rentals. Inspect the customer, item, times and payment references. Use the offered handover and return actions in order, recording condition and the actual completion result. Test an overlapping booking against the remaining quantity.
Operator booking prerequisites
For the staff creation path, select the actual Rental item, enter Start date and End date with end after start, and enter the customer's name plus an email or phone. Current validation checks those prerequisites before submitting. The server assigns the rental number, status, price and deposit; do not manufacture them by editing a record to look completed.
When a creation form records an already held deposit or paid amount, those entries become depositTaken/paymentTaken in the request. They are financial declarations, not harmless switches needed to save. Enter them only when a corresponding collection actually occurred. Verify the saved booking, receipt/payment reference and dates before handover. Availability overlap and return/refund behavior still require their own controlled execution.
Check the result
Earlier evidence only saved an inactive item and policy. The booking/fulfilment operations still require current live proof; do not insert a fabricated confirmation screen.
05. Late, damaged and cancelled rentals
Why this matters
A fee setting is not evidence that the fee was charged. A refundable flag does not establish an implemented gateway refund.
Follow these steps
Inspect grace and late rules on the saved booking, then use the actual offered late/damage/cancellation operation for a controlled record. Compare its calculated amount, payment record and customer result. Review Notifications, template/channel/timing and Rental Agreement separately, testing delivery and acceptance. For a mixed cart compare product shipping and rental logistics independently.
Check the result
Retained source research identified a gateway deposit-refund gap. Keep the refund limitation explicit until the actual provider path is verified. Do not equate a status change with deposit release.
06. Create the offer
Why this matters
A discount’s name identifies the record; its coupon code is what the buyer enters. An empty code can represent automatic application.
Follow these steps
Open Storefront → Discounts and create the record. Enter name and optional code, select Draft while preparing it, then the offered discount type and value. Inspect percentage cap and, for buy/get offers, Buy quantity, Get quantity and percentage off. Set priority and whether the discount can combine with others. Save and reopen.
Check the result
Do not call every percentage field a price. A 100% get-item discount affects the configured get quantity, not necessarily the entire cart.
07. Set scope and conditions
Why this matters
The condition determines who and what qualifies, while the amount determines the benefit.
Follow these steps
Choose scope: cart, products, categories, rentals, rental fees or the offered supported alternative. Select included and excluded products/categories and customer groups/customers. For rental fees choose the actual fee names. Set minimum cart value, minimum items, first-time customer, required products, maximum total uses and per-customer uses. Set the intended active dates and status.
Check the result
A first-time or group restriction needs authenticated customer evidence. Empty inclusions and explicit exclusions have different effects; review both before activation.
08. Apply, remove and compare
Why this matters
The real basket is the test of the rule.
Follow these steps
Activate the discount and open the customer cart with the intended items. Enter the code, apply it and inspect line/total changes. Remove it and confirm the original calculation returns. Repeat below a threshold, with an excluded item and with the wrong customer group. Read the actual rejection rather than predicting a generic error.
Check the result
Reload or recalculate after configuration changes. Do not alter a second rule while trying to identify the first failure.
09. Reconcile the final rental outcome
Why this matters
The connected result must be checked at both sides of this handoff. Keep the original record reference visible while moving to the destination.
Follow these steps
Use the same rental reference from the customer booking through handover and return. Compare dates, quantity, deposit, fees and agreement with the saved policy/item. At return inspect condition, actual late/damage calculation and the payment/refund reference where supported. Reopen item availability after completion and compare an overlapping booking.
Check the result
Do not release a deposit by merely changing a status. The known deposit-refund provider gap stays visible. A saved inactive policy/item is setup evidence, not a completed rental business workflow.
Limitations and checks
Customer booking, payment, handover and deposit refund need live provider/consumer validation. Do not invent unsupported action buttons to fill the gap.
Next steps
Return to the saved records and check the handoff that matters for your use of the platform. A visible result at each end makes the workflow explainable and gives you a precise place to investigate when it fails.
Appmint Rentals: availability, booking and return — supporting guide
Overview
Configure rental policies and items, then follow dates, fulfilment and return conditions without confusing a saved policy with an exercised deposit or booking.
Before you start
A configuration holds shared policy; an item is the thing available for hire; a rental booking records one customer's dates, quantity and money. Save and reopen each separately. The historical example uses course-exhibition-policy and Cedar Exhibition Easel, SKU CF-EASEL-01, quantity2, both inactive. It is setup evidence, not a completed booking or deposit refund.
01. Create shared rental policy
Why this matters
Configuration supplies defaults; an item can override them. Defaults should be deliberate before creating multiple rental items.
Follow these steps
Open Storefront → Rental → Configuration → Add Configuration. Enter Name, Title, Description and Status; leave Set as Default off until reviewed. Set Currency and Tax Rate. Configure Deposit Required, Refundable, Deposit Type and Amount. Configure late-fee rate, unit, cap, grace period/unit and additional fees. Set cancellation allowance, free-cancellation hours, fee/type, refund policy and policy text. Save and reopen.
Check the result
An inactive policy may still appear in a selector; selecting it is not proof it is operationally enabled. No deposit is collected simply by saving the policy.
Save the policy before attaching it to an item
- Choose Configuration → Add Configuration. Enter Name
course-exhibition-policyand TitleCedar Exhibition Policy. - Select Inactive and leave Set as Default off while preparing an isolated example. Review Default Pricing → Currency and Tax Rate (%) for your actual policy.
- Expand Default Deposit Settings. Decide Deposit Required and Refundable separately, then choose Deposit Type and Amount. Refundable is a policy flag, not proof that a gateway refund is implemented.

Historical unsaved policy controls. Deposit Required is off while Refundable is on; no money has been collected.
- Review late fees, cancellation and availability sections before saving. Choose Save, reload Configurations and reopen the policy by its name.

This saved readback proves policy identity and inactive/non-default state. It does not prove any item is bookable.
02. Create an item and availability
Why this matters
Quantity, price intervals and buffered availability control different parts of a rental.
Follow these steps
Open Rental Items → Add Item. Enter Name, SKU, Slug, Quantity, Description, Images and status. Select Configuration. Set hourly/daily/weekly/monthly rates and currency as applicable. Review item deposit/late/additional-fee overrides. Set availability start/end time, timezone, min/max duration and buffer time with units. Save and reopen the item.
Check the result
The configuration picker must persist the policy name, not an object. Earlier capture repaired this local selector; verify the current saved record rather than relying on historical success.
Attach the policy and verify the saved item
- Open Rental Items → Add Item. Enter Cedar Exhibition Easel, SKU
CF-EASEL-01, slugcedar-exhibition-easel, quantity2and the intended status. - Select Cedar Exhibition Policy in Configuration/Config. Set the applicable rates, then save.
- Reload Rental Items and reopen the same SKU. Confirm quantity and selected policy together. The screenshot uses the alternate schema form; beginners can stay in the normal Modern form.

Historical readback after the policy-selector repair. The item is Inactive; this does not demonstrate availability or customer booking.
- Review availability days, start/end times and timezone explicitly. A default shown as an example is not necessarily a saved selection. Set buffer/minimum/maximum duration with their units and test the intended start/end boundary later.
03. Pickup, delivery and restrictions
Why this matters
A rental can have different outbound and return logistics.
Follow these steps
Choose Pickup Location from a saved location or manual address. Set Return Location or Same as Pickup Location. Configure Allow Pickup, lead time, same-day cutoff and instructions. For delivery set fee type, base/per-mile rate, radius, cutoff and lead time. Configure customer dropoff or return pickup and its fees/radius. Review age, KYC, license, location and membership/customer-field restrictions. Save and inspect the rendered customer choices.
Check the result
Do not claim a location rule enforces itself without testing the relevant customer. Pickup eligibility and return pickup are independent.
04. Book, hand over and receive
Why this matters
A booking outcome requires actual dates and quantity, then a saved rental record.
Follow these steps
Open the real rental customer route, choose available dates/quantity and inspect duration, rental price, deposit, fees and agreement. Complete a controlled booking and find it under Rentals. Inspect the customer, item, times and payment references. Use the offered handover and return actions in order, recording condition and the actual completion result. Test an overlapping booking against the remaining quantity.
Check the result
Earlier evidence only saved an inactive item and policy. The booking/fulfilment operations still require current live proof; do not insert a fabricated confirmation screen.
Current staff-booking validation: the source requires a selected rental item, start/end dates with end after start, a customer name, and email or phone. The create request sends SKU, quantity, customer, dates and selected fulfilment/return choices; the server establishes the booking number, price and deposit. A deposit marked held or a recorded paid amount is included as a monetary input, so do not mark either as collected merely to finish the form. This documented path still needs a fresh Appmint customer/staff booking demonstration.
05. Late, damaged and cancelled rentals
Why this matters
A fee setting is not evidence that the fee was charged. A refundable flag does not establish an implemented gateway refund.
Follow these steps
Inspect grace and late rules on the saved booking, then use the actual offered late/damage/cancellation operation for a controlled record. Compare its calculated amount, payment record and customer result. Review Notifications, template/channel/timing and Rental Agreement separately, testing delivery and acceptance. For a mixed cart compare product shipping and rental logistics independently.
Check the result
Retained source research identified a gateway deposit-refund gap. Keep the refund limitation explicit until the actual provider path is verified. Do not equate a status change with deposit release.
Detailed instructions
The following retained material documents earlier local work. Its pending checks remain pending; historical successful outcomes are not claims of a fresh execution. Use the source-authored instructions above to prepare the new recording, and preserve these references for comparison.
T09: Offer a rental instead of a permanent sale
Worked example
Now open Rental Items and Add Item. Enter Cedar Exhibition Easel, S K U C F dash EASEL dash zero one, and the slug cedar-exhibition-easel. Quantity is two. Daily Rate is ten dollars, Currency U S D and Status Inactive. Choose Cedar Exhibition Policy in Configuration; the picker resolves the saved policy name. Save Item, then reload the app and reopen the row using its eye action. Check quantity two, the ten-dollar daily rate, Inactive and the same policy. That proves the saved rental setup. It does not prove that particular dates are available, that a customer has paid a deposit or that either easel has been picked up. A rental sells a period of use, so a booking must still establish dates, quantity and availability before delivery or return can be taught as completed.
Included controls: Dashboard, Rental Items, Rentals, Configuration, item/config save, hour/day/week/month, dates/quantity, availability, tax, rental price versus deposit, pickup/delivery, return/dropoff, mixed cart.
Limitations and checks: Actual rental config/item→available dates/quantity quote→reservation/order→pickup/delivery→return/dropoff; hours/days/weeks/months differences, tax, rental-only/mixed cart and unavailable-period validation. Mask unverified exact amounts.
Check the result: Same item/period/quantity availability and rental/deposit totals persisted through real booking.
Implementation reference: rental-config-form.tsx, rental-item-form.tsx, rental-fulfillment.tsx.
New actual evidence: SF26-subscription-rental-local.webm, LEDGER.md.
T10: Handle rental policies and deposit boundaries
Worked example
Before listing the exhibition easel, create the policy it will refer to. Open Rental, Configuration and Add Configuration. Name it course-exhibition-policy and title it Cedar Exhibition Policy. Keep Set as Default off and change Status to Inactive so this exercise does not replace the shop’s default policy. Currency remains U S D. Open Notifications and check that no notifications are configured. The deposit, late-fee, cancellation, availability and agreement sections describe different rules; we have not exercised those charges or customer agreements yet. Save Configuration, then use the list’s eye action to reopen it. The persisted policy is Inactive. We can now link our practice item to this policy, while keeping an actual rental, deposit and return as separate lifecycle tests.
Included controls: Default Pricing, Deposit, Late Fee, Additional Fees, Cancellation, Availability, Notifications, Agreement, refundability, grace/cap, damage deductions, history, deposit refund limitation.
Limitations and checks: Check rental configuration, late fees, grace periods, cancellations, availability, notifications, agreements and fulfilment history. Gateway refunds remain unverified; confirm the provider transaction before treating money as returned.
Check the result: Each policy applies actual supported amount/state; depositrefund source gap never hidden.
Implementation reference: rental-config-form.tsx, rental.service.ts.
New actual evidence: SF26-subscription-rental-local.webm, LEDGER.md.
Limitations and checks
Current UI entry and editor: . Corresponding SDK storefront schemas and the retained AppEngine references define fields and consumer boundaries. Provider calls, external delivery, payments and financial mutations were not performed for this writing task.
Next steps
You can now follow the module from its configuration to the record that proves the result. Use the relevant chapter to revisit an alternative or troubleshoot the exact failed handoff.