or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

Files

docs

core-types.mdcreative-work.mdevents.mdindex.mdperson-organization.mdplace-location.mdproducts-commerce.mdroles-relationships.mdschema-generation.md

products-commerce.mddocs/

0

# Product and Commerce Types

1

2

Schema.org types for products, offers, orders, payments, and e-commerce functionality.

3

4

## Capabilities

5

6

### Product Base Type

7

8

The root type for all products and commercial items.

9

10

```typescript { .api }

11

/**

12

* Any offered product or service. For example: a pair of shoes; a concert ticket;

13

* the rental of a car; a haircut; or an episode of a TV show streamed online

14

*/

15

type Product = ProductLeaf | DietarySupplement | Drug | IndividualProduct |

16

ProductCollection | ProductGroup | ProductModel | SomeProducts | Vehicle;

17

18

interface ProductBase extends ThingBase {

19

/** A property-value pair representing an additional characteristic of the entity */

20

additionalProperty?: SchemaValue<PropertyValue, "additionalProperty">;

21

/** The overall rating, based on a collection of reviews or ratings, of the item */

22

aggregateRating?: SchemaValue<AggregateRating, "aggregateRating">;

23

/** An intended audience, i.e. a group for whom something was created */

24

audience?: SchemaValue<Audience, "audience">;

25

/** An award won by or for this item */

26

award?: SchemaValue<Text, "award">;

27

/** The brand(s) associated with the product */

28

brand?: SchemaValue<Brand | Organization, "brand">;

29

/** A category for the item */

30

category?: SchemaValue<CategoryCode | PhysicalActivityCategory | Text | Thing | URL, "category">;

31

/** The color of the product */

32

color?: SchemaValue<Text, "color">;

33

/** The depth of the item */

34

depth?: SchemaValue<Distance | QuantitativeValue, "depth">;

35

/** A Global Trade Item Number (GTIN) */

36

gtin?: SchemaValue<Text, "gtin">;

37

/** The GTIN-12 code of the product, or the product to which the offer refers */

38

gtin12?: SchemaValue<Text, "gtin12">;

39

/** The GTIN-13 code of the product, or the product to which the offer refers */

40

gtin13?: SchemaValue<Text, "gtin13">;

41

/** The GTIN-14 code of the product, or the product to which the offer refers */

42

gtin14?: SchemaValue<Text, "gtin14">;

43

/** The GTIN-8 code of the product, or the product to which the offer refers */

44

gtin8?: SchemaValue<Text, "gtin8">;

45

/** Indicates whether this content is family friendly */

46

isFamilyFriendly?: SchemaValue<Boolean, "isFamilyFriendly">;

47

/** A predefined value from the OfferItemCondition enumeration */

48

itemCondition?: SchemaValue<OfferItemCondition, "itemCondition">;

49

/** Keywords or tags used to describe this content */

50

keywords?: SchemaValue<DefinedTerm | Text | URL, "keywords">;

51

/** A logo associated with an organization or product */

52

logo?: SchemaValue<ImageObject | URL, "logo">;

53

/** The manufacturer of the product */

54

manufacturer?: SchemaValue<Organization, "manufacturer">;

55

/** A material that something is made from */

56

material?: SchemaValue<Product | Text | URL, "material">;

57

/** The model of the product */

58

model?: SchemaValue<ProductModel | Text, "model">;

59

/** The Manufacturer Part Number (MPN) of the product */

60

mpn?: SchemaValue<Text, "mpn">;

61

/** An offer to provide this item */

62

offers?: SchemaValue<Demand | Offer, "offers">;

63

/** The product identifier, such as ISBN */

64

productID?: SchemaValue<Text, "productID">;

65

/** The date of production of the item */

66

productionDate?: SchemaValue<Date, "productionDate">;

67

/** The date the item was purchased */

68

purchaseDate?: SchemaValue<Date, "purchaseDate">;

69

/** The release date of a product or product model */

70

releaseDate?: SchemaValue<Date, "releaseDate">;

71

/** A review of the item */

72

review?: SchemaValue<Review, "review">;

73

/** The Stock Keeping Unit (SKU) */

74

sku?: SchemaValue<Text, "sku">;

75

/** A slogan or motto associated with the item */

76

slogan?: SchemaValue<Text, "slogan">;

77

/** The weight of the product or person */

78

weight?: SchemaValue<QuantitativeValue, "weight">;

79

/** The width of the item */

80

width?: SchemaValue<Distance | QuantitativeValue, "width">;

81

/** The height of the item */

82

height?: SchemaValue<Distance | QuantitativeValue, "height">;

83

}

84

```

85

86

### Product Variants and Collections

87

88

Types for product variations, groupings, and collections.

89

90

```typescript { .api }

91

/**

92

* A specific product, either a unique instance of a more generic product or

93

* a product offered for sale by specific sellers

94

*/

95

type IndividualProduct = IndividualProductLeaf;

96

97

interface IndividualProductBase extends ProductBase {

98

/** The serial number or any alphanumeric identifier of a particular product */

99

serialNumber?: SchemaValue<Text, "serialNumber">;

100

}

101

102

/**

103

* A ProductCollection is a set of products in e-commerce

104

*/

105

type ProductCollection = ProductCollectionLeaf;

106

107

/**

108

* A ProductGroup represents a group of Products that vary only in certain attributes

109

*/

110

type ProductGroup = ProductGroupLeaf;

111

112

interface ProductGroupBase extends ProductBase {

113

/** Indicates a textual identifier for a ProductGroup */

114

productGroupID?: SchemaValue<Text, "productGroupID">;

115

/** Indicates the property or properties by which the products in the group vary */

116

variesBy?: SchemaValue<DefinedTerm | Text, "variesBy">;

117

}

118

119

/**

120

* A datasheet or vendor specification of a product

121

*/

122

type ProductModel = ProductModelLeaf;

123

124

interface ProductModelBase extends ProductBase {

125

/** A pointer to a base product from which this product is a variant */

126

isVariantOf?: SchemaValue<ProductGroup | ProductModel, "isVariantOf">;

127

/** A pointer from a previous, often discontinued variant of the product to its newer variant */

128

predecessorOf?: SchemaValue<ProductModel, "predecessorOf">;

129

/** A pointer from a newer variant of a product to its previous, often discontinued predecessor */

130

successorOf?: SchemaValue<ProductModel, "successorOf">;

131

}

132

```

133

134

**Usage Examples:**

135

136

```typescript

137

import type { Product, IndividualProduct, ProductGroup, ProductModel } from "schema-dts";

138

139

// Basic product

140

const smartphone: Product = {

141

"@type": "Product",

142

name: "Galaxy S24",

143

description: "Latest flagship smartphone",

144

brand: {

145

"@type": "Brand",

146

name: "Samsung"

147

},

148

manufacturer: {

149

"@type": "Organization",

150

name: "Samsung Electronics"

151

},

152

model: "SM-S921U",

153

category: "Electronics",

154

color: ["Black", "White", "Purple"],

155

gtin13: "1234567890123",

156

mpn: "SM-S921U-256GB",

157

offers: {

158

"@type": "Offer",

159

price: "999.99",

160

priceCurrency: "USD",

161

availability: "InStock",

162

seller: {

163

"@type": "Organization",

164

name: "Electronics Store"

165

}

166

}

167

};

168

169

// Individual product instance

170

const specificPhone: IndividualProduct = {

171

"@type": "IndividualProduct",

172

name: "Galaxy S24 - Serial ABC123",

173

model: "SM-S921U",

174

serialNumber: "ABC123456789",

175

color: "Black",

176

productionDate: "2024-02-15",

177

itemCondition: "NewCondition"

178

};

179

180

// Product group with variants

181

const phoneGroup: ProductGroup = {

182

"@type": "ProductGroup",

183

name: "Galaxy S24 Series",

184

productGroupID: "GALAXY-S24-GROUP",

185

variesBy: ["color", "storage capacity"],

186

hasVariant: [

187

{

188

"@type": "Product",

189

name: "Galaxy S24 128GB Black",

190

color: "Black"

191

},

192

{

193

"@type": "Product",

194

name: "Galaxy S24 256GB White",

195

color: "White"

196

}

197

]

198

};

199

```

200

201

### Offer Types

202

203

Types for pricing, availability, and commercial offers.

204

205

```typescript { .api }

206

/**

207

* An offer to transfer some rights to an item or to provide a service

208

*/

209

type Offer = OfferLeaf | AggregateOffer;

210

211

interface OfferBase extends IntangibleBase {

212

/** The payment method(s) accepted by seller or merchant */

213

acceptedPaymentMethod?: SchemaValue<LoanOrCredit | PaymentMethod, "acceptedPaymentMethod">;

214

/** An additional offer that can only be obtained in combination with the first base offer */

215

addOn?: SchemaValue<Offer, "addOn">;

216

/** The amount of time that is required between accepting the offer and the actual usage of the resource or service */

217

advanceBookingRequirement?: SchemaValue<QuantitativeValue, "advanceBookingRequirement">;

218

/** The overall rating, based on a collection of reviews or ratings, of the item */

219

aggregateRating?: SchemaValue<AggregateRating, "aggregateRating">;

220

/** The geographic area where a service or offered item is provided */

221

areaServed?: SchemaValue<AdministrativeArea | GeoShape | Place | Text, "areaServed">;

222

/** The availability of this item */

223

availability?: SchemaValue<ItemAvailability, "availability">;

224

/** The end of the availability of the product or service included in the offer */

225

availabilityEnds?: SchemaValue<Date | DateTime | Time, "availabilityEnds">;

226

/** The beginning of the availability of the product or service included in the offer */

227

availabilityStarts?: SchemaValue<Date | DateTime | Time, "availabilityStarts">;

228

/** The place(s) from which the offer can be obtained */

229

availableAtOrFrom?: SchemaValue<Place, "availableAtOrFrom">;

230

/** The delivery method(s) available for this offer */

231

availableDeliveryMethod?: SchemaValue<DeliveryMethod, "availableDeliveryMethod">;

232

/** The business function (e.g. sell, lease, repair, dispose) of the offer or component of a bundle */

233

businessFunction?: SchemaValue<BusinessFunction, "businessFunction">;

234

/** A category for the item */

235

category?: SchemaValue<CategoryCode | PhysicalActivityCategory | Text | Thing | URL, "category">;

236

/** The typical delay between the receipt of the order and the goods either leaving the warehouse or being prepared for pickup */

237

deliveryLeadTime?: SchemaValue<QuantitativeValue, "deliveryLeadTime">;

238

/** The type(s) of customers for which the given offer is valid */

239

eligibleCustomerType?: SchemaValue<BusinessEntityType, "eligibleCustomerType">;

240

/** The duration for which the given offer is valid */

241

eligibleDuration?: SchemaValue<QuantitativeValue, "eligibleDuration">;

242

/** The interval and unit of measurement of ordering quantities for which the offer or price specification is valid */

243

eligibleQuantity?: SchemaValue<QuantitativeValue, "eligibleQuantity">;

244

/** The ISO 3166-1 (ISO 3166-1 alpha-2) or ISO 3166-2 code, the place, or the GeoShape for the geo-political region(s) for which the offer or delivery charge specification is valid */

245

eligibleRegion?: SchemaValue<GeoShape | Place | Text, "eligibleRegion">;

246

/** The transaction volume, in a monetary unit, for which the offer or price specification is valid */

247

eligibleTransactionVolume?: SchemaValue<PriceSpecification, "eligibleTransactionVolume">;

248

/** A Global Trade Item Number (GTIN) */

249

gtin?: SchemaValue<Text, "gtin">;

250

/** The GTIN-12 code of the product, or the product to which the offer refers */

251

gtin12?: SchemaValue<Text, "gtin12">;

252

/** The GTIN-13 code of the product, or the product to which the offer refers */

253

gtin13?: SchemaValue<Text, "gtin13">;

254

/** The GTIN-14 code of the product, or the product to which the offer refers */

255

gtin14?: SchemaValue<Text, "gtin14">;

256

/** The GTIN-8 code of the product, or the product to which the offer refers */

257

gtin8?: SchemaValue<Text, "gtin8">;

258

/** This links to a node or nodes indicating the exact quantity of the products included in an Offer or ProductCollection */

259

includesObject?: SchemaValue<TypeAndQuantityNode, "includesObject">;

260

/** The current approximate inventory level for the item or items */

261

inventoryLevel?: SchemaValue<QuantitativeValue, "inventoryLevel">;

262

/** A predefined value from the OfferItemCondition enumeration */

263

itemCondition?: SchemaValue<OfferItemCondition, "itemCondition">;

264

/** An item being offered (or demanded) */

265

itemOffered?: SchemaValue<AggregateOffer | CreativeWork | Event | MenuItem | Product | Service | Trip, "itemOffered">;

266

/** Length of the lease for some Accommodation, either particular to some Offer or in some cases intrinsic to the property */

267

leaseLength?: SchemaValue<Duration | QuantitativeValue, "leaseLength">;

268

/** The Manufacturer Part Number (MPN) of the product, or the product to which the offer refers */

269

mpn?: SchemaValue<Text, "mpn">;

270

/** The offer price of a product, or of a price component when attached to PriceSpecification and its subtypes */

271

price?: SchemaValue<Number | Text, "price">;

272

/** The currency of the price, or a price component when attached to PriceSpecification and its subtypes */

273

priceCurrency?: SchemaValue<Text, "priceCurrency">;

274

/** One or more detailed price specifications, indicating the unit price and delivery or payment charges */

275

priceSpecification?: SchemaValue<PriceSpecification, "priceSpecification">;

276

/** The date after which the price is no longer available */

277

priceValidUntil?: SchemaValue<Date, "priceValidUntil">;

278

/** A review of the item */

279

review?: SchemaValue<Review, "review">;

280

/** An entity which offers (sells / leases / lends / loans) the services or goods */

281

seller?: SchemaValue<Organization | Person, "seller">;

282

/** The serial number or any alphanumeric identifier of a particular product */

283

serialNumber?: SchemaValue<Text, "serialNumber">;

284

/** Indicates information about the shipping policies and options associated with an Offer */

285

shippingDetails?: SchemaValue<OfferShippingDetails, "shippingDetails">;

286

/** The Stock Keeping Unit (SKU), i.e. a merchant-specific identifier for a product or service, or the product to which the offer refers */

287

sku?: SchemaValue<Text, "sku">;

288

/** The date when the item becomes valid */

289

validFrom?: SchemaValue<Date | DateTime, "validFrom">;

290

/** The date after when the item is not valid */

291

validThrough?: SchemaValue<Date | DateTime, "validThrough">;

292

/** The warranty promise(s) included in the offer */

293

warranty?: SchemaValue<WarrantyPromise, "warranty">;

294

}

295

296

/**

297

* When a single product is associated with multiple offers (for example, the same pair of shoes offered by different merchants), then AggregateOffer can be used

298

*/

299

type AggregateOffer = AggregateOfferLeaf;

300

301

interface AggregateOfferBase extends OfferBase {

302

/** The highest price of all offers available */

303

highPrice?: SchemaValue<Number | Text, "highPrice">;

304

/** The lowest price of all offers available */

305

lowPrice?: SchemaValue<Number | Text, "lowPrice">;

306

/** The number of offers for the product */

307

offerCount?: SchemaValue<Integer, "offerCount">;

308

/** An offer to provide this item */

309

offers?: SchemaValue<Offer, "offers">;

310

}

311

```

312

313

**Usage Examples:**

314

315

```typescript

316

import type { Offer, AggregateOffer } from "schema-dts";

317

318

// Single offer

319

const laptopOffer: Offer = {

320

"@type": "Offer",

321

itemOffered: {

322

"@type": "Product",

323

name: "MacBook Pro 14-inch",

324

brand: "Apple"

325

},

326

price: "1999.00",

327

priceCurrency: "USD",

328

availability: "InStock",

329

seller: {

330

"@type": "Organization",

331

name: "Apple Store"

332

},

333

validFrom: "2024-01-01",

334

validThrough: "2024-12-31",

335

acceptedPaymentMethod: ["CreditCard", "Cash", "PayPal"],

336

availableDeliveryMethod: "OnSitePickup",

337

warranty: {

338

"@type": "WarrantyPromise",

339

durationOfWarranty: {

340

"@type": "QuantitativeValue",

341

value: 1,

342

unitCode: "ANN"

343

}

344

}

345

};

346

347

// Multiple offers aggregated

348

const phoneOffers: AggregateOffer = {

349

"@type": "AggregateOffer",

350

itemOffered: {

351

"@type": "Product",

352

name: "iPhone 15",

353

brand: "Apple"

354

},

355

lowPrice: "799.00",

356

highPrice: "899.00",

357

priceCurrency: "USD",

358

offerCount: 5,

359

offers: [

360

{

361

"@type": "Offer",

362

price: "799.00",

363

seller: {

364

"@type": "Organization",

365

name: "Store A"

366

}

367

},

368

{

369

"@type": "Offer",

370

price: "829.00",

371

seller: {

372

"@type": "Organization",

373

name: "Store B"

374

}

375

}

376

]

377

};

378

```

379

380

### Order and Purchase Types

381

382

Types for orders, purchases, and transaction management.

383

384

```typescript { .api }

385

/**

386

* An order is a confirmation of a transaction (a receipt), which can contain multiple line items, each represented by an Offer that has been accepted by the customer

387

*/

388

type Order = OrderLeaf;

389

390

interface OrderBase extends IntangibleBase {

391

/** The offer(s) -- e.g., product, quantity and price combinations -- included in the order */

392

acceptedOffer?: SchemaValue<Offer, "acceptedOffer">;

393

/** The billing address for the order */

394

billingAddress?: SchemaValue<PostalAddress, "billingAddress">;

395

/** An entity that arranges for an exchange between a buyer and a seller */

396

broker?: SchemaValue<Organization | Person, "broker">;

397

/** A number that confirms the given order or payment has been received */

398

confirmationNumber?: SchemaValue<Text, "confirmationNumber">;

399

/** Party placing the order or paying the invoice */

400

customer?: SchemaValue<Organization | Person, "customer">;

401

/** Any discount applied (to an Order) */

402

discount?: SchemaValue<Number | Text, "discount">;

403

/** Code used to redeem a discount */

404

discountCode?: SchemaValue<Text, "discountCode">;

405

/** The currency of the discount */

406

discountCurrency?: SchemaValue<Text, "discountCurrency">;

407

/** Was the offer accepted as a gift for someone other than the buyer */

408

isGift?: SchemaValue<Boolean, "isGift">;

409

/** Date order was placed */

410

orderDate?: SchemaValue<Date | DateTime, "orderDate">;

411

/** The delivery of the parcel related to this order or order item */

412

orderDelivery?: SchemaValue<ParcelDelivery, "orderDelivery">;

413

/** The identifier of the transaction */

414

orderNumber?: SchemaValue<Text, "orderNumber">;

415

/** The current status of the order */

416

orderStatus?: SchemaValue<OrderStatus, "orderStatus">;

417

/** The item ordered */

418

orderedItem?: SchemaValue<OrderItem | Product | Service, "orderedItem">;

419

/** The organization or person from which the product was purchased */

420

seller?: SchemaValue<Organization | Person, "seller">;

421

/** The date payment is due */

422

paymentDue?: SchemaValue<DateTime, "paymentDue">;

423

/** The date that payment is due */

424

paymentDueDate?: SchemaValue<Date | DateTime, "paymentDueDate">;

425

/** The name of the credit card or other method of payment for the order */

426

paymentMethod?: SchemaValue<PaymentMethod, "paymentMethod">;

427

/** An identifier for the method of payment used */

428

paymentMethodId?: SchemaValue<Text, "paymentMethodId">;

429

/** The URL for sending a payment */

430

paymentUrl?: SchemaValue<URL, "paymentUrl">;

431

}

432

433

/**

434

* An order item is a line of an order. It includes the quantity and shipping details of a bought offer

435

*/

436

type OrderItem = OrderItemLeaf;

437

438

interface OrderItemBase extends IntangibleBase {

439

/** The delivery of the parcel related to this order or order item */

440

orderDelivery?: SchemaValue<ParcelDelivery, "orderDelivery">;

441

/** The identifier of the order item */

442

orderItemNumber?: SchemaValue<Text, "orderItemNumber">;

443

/** The current status of the order item */

444

orderItemStatus?: SchemaValue<OrderStatus, "orderItemStatus">;

445

/** The number of the item ordered */

446

orderQuantity?: SchemaValue<Number, "orderQuantity">;

447

/** The item ordered */

448

orderedItem?: SchemaValue<OrderItem | Product | Service, "orderedItem">;

449

}

450

```

451

452

**Usage Examples:**

453

454

```typescript

455

import type { Order, OrderItem } from "schema-dts";

456

457

// Complete order

458

const purchaseOrder: Order = {

459

"@type": "Order",

460

orderNumber: "ORD-2024-001234",

461

orderDate: "2024-03-15T10:30:00",

462

orderStatus: "OrderProcessing",

463

customer: {

464

"@type": "Person",

465

name: "John Customer",

466

email: "john@example.com"

467

},

468

seller: {

469

"@type": "Organization",

470

name: "Online Electronics Store"

471

},

472

acceptedOffer: [

473

{

474

"@type": "Offer",

475

itemOffered: {

476

"@type": "Product",

477

name: "Wireless Headphones",

478

sku: "WH-1000XM5"

479

},

480

price: "299.99",

481

priceCurrency: "USD",

482

quantity: 1

483

}

484

],

485

billingAddress: {

486

"@type": "PostalAddress",

487

streetAddress: "123 Main St",

488

addressLocality: "Anytown",

489

addressRegion: "CA",

490

postalCode: "90210",

491

addressCountry: "US"

492

},

493

paymentMethod: "CreditCard",

494

paymentDue: "2024-03-15T10:30:00",

495

discount: "50.00",

496

discountCode: "SAVE50",

497

discountCurrency: "USD"

498

};

499

500

// Individual order item

501

const orderItem: OrderItem = {

502

"@type": "OrderItem",

503

orderItemNumber: "ITEM-001",

504

orderQuantity: 2,

505

orderedItem: {

506

"@type": "Product",

507

name: "USB Cable",

508

sku: "USB-C-001"

509

},

510

orderItemStatus: "OrderInTransit",

511

orderDelivery: {

512

"@type": "ParcelDelivery",

513

expectedArrivalFrom: "2024-03-20",

514

expectedArrivalUntil: "2024-03-22",

515

hasDeliveryMethod: "ParcelService"

516

}

517

};

518

```

519

520

### Payment and Financial Types

521

522

Types for payment methods, invoices, and financial transactions.

523

524

```typescript { .api }

525

/**

526

* A payment method is a standardized procedure for transferring the monetary amount for a purchase

527

*/

528

type PaymentMethod = PaymentMethodLeaf | CreditCard | DigitalWallet | PaymentCard;

529

530

/**

531

* A credit or debit card type as a standardized procedure for transferring the monetary amount for a purchase

532

*/

533

type CreditCard = CreditCardLeaf;

534

type PaymentCard = PaymentCardLeaf;

535

536

/**

537

* A statement of the money due for goods or services; a bill

538

*/

539

type Invoice = InvoiceLeaf;

540

541

interface InvoiceBase extends IntangibleBase {

542

/** The identifier for the account the payment will be applied to */

543

accountId?: SchemaValue<Text, "accountId">;

544

/** The time interval used to compute the invoice */

545

billingPeriod?: SchemaValue<Duration, "billingPeriod">;

546

/** An entity that arranges for an exchange between a buyer and a seller */

547

broker?: SchemaValue<Organization | Person, "broker">;

548

/** A category for the item */

549

category?: SchemaValue<CategoryCode | PhysicalActivityCategory | Text | Thing | URL, "category">;

550

/** A number that confirms the given order or payment has been received */

551

confirmationNumber?: SchemaValue<Text, "confirmationNumber">;

552

/** Party placing the order or paying the invoice */

553

customer?: SchemaValue<Organization | Person, "customer">;

554

/** The minimum payment required at this time */

555

minimumPaymentDue?: SchemaValue<MonetaryAmount | PriceSpecification, "minimumPaymentDue">;

556

/** The date that payment is due */

557

paymentDue?: SchemaValue<DateTime, "paymentDue">;

558

/** The date that payment is due */

559

paymentDueDate?: SchemaValue<Date | DateTime, "paymentDueDate">;

560

/** The name of the credit card or other method of payment for the order */

561

paymentMethod?: SchemaValue<PaymentMethod, "paymentMethod">;

562

/** An identifier for the method of payment used */

563

paymentMethodId?: SchemaValue<Text, "paymentMethodId">;

564

/** The status of payment; whether the invoice has been paid or not */

565

paymentStatus?: SchemaValue<PaymentStatusType | Text, "paymentStatus">;

566

/** The service provider, service operator, or service performer; the goods producer */

567

provider?: SchemaValue<Organization | Person, "provider">;

568

/** The Order(s) related to this Invoice */

569

referencesOrder?: SchemaValue<Order, "referencesOrder">;

570

/** The date the invoice is scheduled to be paid */

571

scheduledPaymentDate?: SchemaValue<Date, "scheduledPaymentDate">;

572

/** The total amount due */

573

totalPaymentDue?: SchemaValue<MonetaryAmount | PriceSpecification, "totalPaymentDue">;

574

}

575

```

576

577

**Usage Examples:**

578

579

```typescript

580

import type { PaymentMethod, CreditCard, Invoice } from "schema-dts";

581

582

// Credit card payment method

583

const creditCard: CreditCard = {

584

"@type": "CreditCard",

585

name: "Visa ending in 1234",

586

paymentMethodId: "card_1234567890"

587

};

588

589

// Invoice

590

const serviceInvoice: Invoice = {

591

"@type": "Invoice",

592

confirmationNumber: "INV-2024-5678",

593

customer: {

594

"@type": "Organization",

595

name: "ABC Company"

596

},

597

provider: {

598

"@type": "Organization",

599

name: "Consulting Services LLC"

600

},

601

paymentDueDate: "2024-04-15",

602

paymentStatus: "PaymentDue",

603

totalPaymentDue: {

604

"@type": "MonetaryAmount",

605

currency: "USD",

606

value: "2500.00"

607

},

608

minimumPaymentDue: {

609

"@type": "MonetaryAmount",

610

currency: "USD",

611

value: "500.00"

612

},

613

billingPeriod: {

614

"@type": "Duration",

615

startDate: "2024-03-01",

616

endDate: "2024-03-31"

617

}

618

};

619

```