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:
This schema attaches to the following Beckn v2.0 core entities via the contractAttributes container:
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 availabilitygift: Separates transactional purchase (invoicePreferences) from gift context:
isGift: Enables gift-specific handlingmessage: Personalized text (max length implementation-dependent)wrap: Boolean for premium presentationinvoicePreferences: Supports both B2C and B2B transactions:
taxId: Multi-jurisdiction support via scheme and country codescompanyName: For B2B invoicingemail: PDF invoice delivery destinationloyalty: Enables rewards redemption at transaction time:
programId: Links to buyer’s loyalty accountpointsRedeemed: Credits points used for discounts/benefitssource: Supports marketing analytics and attribution modeling:
channel: Acquisition source (organic, paid, referral, etc.)campaignId: Campaign-specific tracking for A/B testing and ROIThis schema does not:
Future enhancement opportunities for v2.2+:
communicationChannel (sms, email, whatsapp) for delivery updatesecoPreferences: {minimalPackaging: boolean, sustainableMaterials: boolean}insuranceOptIn: boolean, insuranceType: enumisSubscription: boolean, subscriptionId: string, nextBillingDate: date-timerecurringInstructions: {frequency: string, startDate: date-time, endDate: date-time}recipientName: string, recipientPhone: string for sender ≠ receiverdietaryRequirements: array, allergies: array (F&B specific but generalizable)reverseChargeApplicable: boolean, placeOfSupply: stringpaymentTerms: {creditDays: number, dueDate: date} for B2BnotificationSettings: {email: boolean, sms: boolean, push: boolean}