RetailContract Schema Pack v2.1
Overview
RetailContract is a Beckn v2.1 schema pack that declares buyer preferences, special instructions, and transaction terms at the contract (order) level. This schema was migrated directly from v2's `RetailCoreOrderAttributes` with no structural changes, establishing buyer-side terms and preferences for fulfillment execution.
The schema enables buyers to specify:
- Special instructions for the provider
- Delivery preferences (timing, contactless, leave-at-door options)
- Gift attributes (gift wrapping, personalized messages)
- Invoice preferences (tax ID, company name, email)
- Loyalty program participation and points redemption
- Source attribution for marketing and analytics
Attachment Points
This schema attaches to the following Beckn v2.0 core entities via the contractAttributes container:
- Contract: High-level buyer terms and preferences
- Order (legacy naming): Buyer-side special instructions and delivery preferences
- Fulfillment: Fulfillment-specific buyer constraints
Schema Structure
Design Rationale
Field Semantics
buyerInstructions: Free-text field for any buyer-to-provider communication that doesn't fit structured fields. Examples: "Please ring the doorbell twice," "Avoid green bell peppers," "Call before arriving."
deliveryPreferences: Three distinct boolean flags provide granular control:
leaveAtDoor: Override signature/contact requirementcontactless: Explicitly request no-contact delivery (e.g., during health crises)preferredTimeSlot: Time-bounded delivery window for convenience or availability
gift: Separates transactional purchase (invoicePreferences) from gift context:
isGift: Enables gift-specific handlingmessage: Personalized text (max length implementation-dependent)wrap: Boolean for premium presentation
invoicePreferences: Supports both B2C and B2B transactions:
taxId: Multi-jurisdiction support via scheme and country codescompanyName: For B2B invoicingemail: PDF invoice delivery destination
loyalty: Enables rewards redemption at transaction time:
programId: Links to buyer's loyalty accountpointsRedeemed: Credits points used for discounts/benefits
source: Supports marketing analytics and attribution modeling:
channel: Acquisition source (organic, paid, referral, etc.)campaignId: Campaign-specific tracking for A/B testing and ROI
Non-Goals
This schema does not:
- Define loyalty program mechanics (point structure, tiers, rules)
- Enforce tax compliance or validation (that's provider/market responsibility)
- Specify delivery success metrics or outcomes (see Fulfillment)
- Model buyer communication preferences (see a separate PreferencesAttributes schema)
- Encode pricing or surcharge logic
- Define payment method preferences (see PaymentAttributes)
Upstream Candidates
Future enhancement opportunities for v2.2+:
1. Communication Preferences: communicationChannel (sms, email, whatsapp) for delivery updates 2. Sustainability Preferences: ecoPreferences: {minimalPackaging: boolean, sustainableMaterials: boolean} 3. Insurance Election: insuranceOptIn: boolean, insuranceType: enum 4. Subscription Metadata: isSubscription: boolean, subscriptionId: string, nextBillingDate: date-time 5. Recurring Instructions: recurringInstructions: {frequency: string, startDate: date-time, endDate: date-time} 6. Recipient Details: recipientName: string, recipientPhone: string for sender ≠ receiver 7. Dietary/Allergy Info: dietaryRequirements: array, allergies: array (F&B specific but generalizable) 8. Regional Tax Handling: reverseChargeApplicable: boolean, placeOfSupply: string 9. Payment Terms: paymentTerms: {creditDays: number, dueDate: date} for B2B 10. Notification Preferences: notificationSettings: {email: boolean, sms: boolean, push: boolean}