# Shipping Rate

> Shipping rate with amount, currency, carrier, and estimated delivery days.

- Name: `shipping-rate`
- Categories: ecommerce
- Detail page: https://open-types.dev/types/shipping-rate

## Install

```bash
# Types only
npx shadcn add @open-types/shipping-rate

# Types + Zod v4 validators
npx shadcn add @open-types/shipping-rate-zod

# Types + real-world examples
npx shadcn add @open-types/shipping-rate-examples
```

## Types

```typescript
export interface ShippingRate {
  id: string;
  name: string;
  amount: number;
  currency: string;
  estimated_days?: number;
  carrier?: string;
}
```

## Zod validator

```typescript
import * as z from "zod";
import type { ShippingRate } from "../types/shipping-rate";

const ISO_CURRENCY_REGEX = /^[A-Z]{3}$/;

export const shippingRateSchema = z.object({
  id: z.string().min(1, { error: "Shipping rate ID is required" }),
  name: z.string().min(1, { error: "Shipping rate name is required" }),
  amount: z.number().min(0, { error: "Amount cannot be negative" }),
  currency: z.string().regex(ISO_CURRENCY_REGEX, {
    error: "Currency must be a 3-letter ISO code",
  }),
  estimated_days: z.number().int({ error: "Estimated days must be a whole number" }).min(1, {
    error: "Estimated days must be at least 1",
  }).optional(),
  carrier: z.string().optional(),
}) satisfies z.ZodType<ShippingRate>;

export type { ShippingRate } from "../types/shipping-rate";
```

## Examples

```typescript
// Source: hand-crafted
import type { ShippingRate } from "../types/shipping-rate";

export const shippingRateExamples = {
  standard: {
    id: "ship_standard_001",
    name: "Standard Shipping",
    amount: 5.99,
    currency: "USD",
    estimated_days: 5,
    carrier: "USPS",
  } satisfies ShippingRate,
  express: {
    id: "ship_express_002",
    name: "Express Shipping",
    amount: 14.99,
    currency: "USD",
    estimated_days: 2,
    carrier: "FedEx",
  } satisfies ShippingRate,
  overnight: {
    id: "ship_overnight_003",
    name: "Overnight",
    amount: 29.99,
    currency: "USD",
    estimated_days: 1,
    carrier: "UPS",
  } satisfies ShippingRate,
  free: {
    id: "ship_free_004",
    name: "Free Shipping",
    amount: 0,
    currency: "USD",
    estimated_days: 7,
  } satisfies ShippingRate,
  minimal: {
    id: "ship_min_005",
    name: "Pickup",
    amount: 0,
    currency: "USD",
  } satisfies ShippingRate,
} as const;
```
