> ## Documentation Index
> Fetch the complete documentation index at: https://offergrid.io/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Order Submission Process

> What happens after you submit an order

## Submission Workflow

After you click "Place Order" or submit via API:

<Steps>
  <Step title="Order validation">
    Offergrid validates the order data (customer info, service address, offer availability)
  </Step>

  <Step title="Order created">
    Order is created with status `pending`. You receive an order ID.
  </Step>

  <Step title="Sent to provider">
    Order is routed to the service provider with status `submitted_to_provider`
  </Step>

  <Step title="Provider reviews">
    Provider checks serviceability and capacity (usually within 24 hours)
  </Step>

  <Step title="Accepted or rejected">
    Provider either accepts the order or rejects it with a reason
  </Step>
</Steps>

## Order Status Progression

### Success Path

```
pending → submitted_to_provider → accepted → scheduled →
in_progress → completed → active
```

### Rejection Path

```
pending → submitted_to_provider → rejected
```

## What You Receive

### Immediate Response

Upon successful submission:

```json theme={null}
{
  "orderId": "ord-123-abc",
  "items": [
    {
      "itemId": "item-456-def",
      "offerId": "off-789-ghi",
      "status": "pending"
    }
  ],
  "createdAt": "2025-01-02T10:00:00Z"
}
```

Save the `orderId` and `itemId` values to track this order.

### Provider Response (within 24-48 hours)

**If accepted**:

```json theme={null}
{
  "status": "accepted",
  "providerNotes": "Order accepted. Customer will be contacted within 24 hours to schedule installation."
}
```

**If rejected**:

```json theme={null}
{
  "status": "rejected",
  "providerNotes": "Service not available at this address. Building does not have fiber infrastructure."
}
```

## Tracking Submissions

### Via Dashboard

1. Navigate to **Orders**
2. View all submitted orders
3. Filter by status to see pending orders
4. Click an order for detailed history

### Via API

```bash theme={null}
# List all your orders
GET /reseller/orders

# Get specific order
GET /reseller/orders/{orderId}

# Filter by status
GET /reseller/orders?status=pending
```

### Via Webhooks

Receive real-time notifications:

```json theme={null}
{
  "event": "order.status_changed",
  "orderId": "ord-123-abc",
  "itemId": "item-456-def",
  "newStatus": "accepted",
  "providerNotes": "..."
}
```

## Common Submission Issues

### Order Validation Errors

**Invalid customer email**:

```json theme={null}
{
  "error": "Invalid email format",
  "field": "customerInfo.email"
}
```

**Missing required field**:

```json theme={null}
{
  "error": "Service address is required",
  "field": "serviceAddress"
}
```

**Offer not found**:

```json theme={null}
{
  "error": "Offer not found or not available to your team",
  "field": "items[0].offerId"
}
```

### Provider Rejections

Common rejection reasons:

1. **Service not available**
   * Address outside service area
   * ZIP code served but not specific address
   * Technology unavailable (no fiber infrastructure)

2. **Address issues**
   * Invalid or incomplete address
   * Cannot verify address
   * Building restrictions (HOA, landlord policy)

3. **Technical limitations**
   * No line of sight (satellite/wireless)
   * Distance too far from equipment (DSL)
   * Building wiring incompatible

4. **Business reasons**
   * Credit check requirement not met
   * Duplicate order for same customer
   * Service area at capacity

## Handling Rejections

When an order is rejected:

<Steps>
  <Step title="Review provider notes">
    Understand why the order was rejected
  </Step>

  <Step title="Inform customer">
    Explain the reason clearly and professionally
  </Step>

  <Step title="Offer alternatives">
    * Different technology (cable instead of fiber)
    * Different provider
    * Different service tier
  </Step>

  <Step title="Address fixable issues">
    * Correct address errors
    * Obtain building approvals
    * Resolve credit check requirements
  </Step>
</Steps>

## Resubmitting Orders

If you can fix the issue:

1. **Don't resubmit identical order** - It will likely be rejected again
2. **Address the root cause** - Fix the address, get approvals, etc.
3. **Submit new order** - Create a fresh order with corrections
4. **Add notes** - Explain what was fixed

Example:

```json theme={null}
{
  "items": [{ "offerId": "off-789-ghi" }],
  "customerInfo": { ... },
  "serviceAddress": {
    "street": "123 Main St, Building B",
    "city": "San Francisco",
    "state": "CA",
    "zipCode": "94102",
    "country": "US"
  },
  "notes": "Resubmitting with corrected building designation. Previous order rejected due to incomplete address."
}
```

## Best Practices

<AccordionGroup>
  <Accordion title="Save order IDs">
    Store order and item IDs in your system for future reference and tracking.
  </Accordion>

  <Accordion title="Set customer expectations">
    Tell customers it may take 24-48 hours for provider confirmation, then 5-10 days for installation.
  </Accordion>

  <Accordion title="Monitor pending orders">
    Check pending orders daily. Follow up if no response after 48 hours.
  </Accordion>

  <Accordion title="Learn from rejections">
    Track common rejection reasons and address them proactively in future orders.
  </Accordion>

  <Accordion title="Communicate proactively">
    Update customers as soon as you hear from providers, whether accepted or rejected.
  </Accordion>
</AccordionGroup>

## Next Steps

<CardGroup cols={2}>
  <Card title="Tracking Orders" icon="chart-line" href="/docs/resellers/tracking-orders">
    Monitor order fulfillment
  </Card>

  <Card title="Order Lifecycle" icon="arrows-spin" href="/docs/resellers/order-lifecycle">
    Understanding order status progression
  </Card>

  <Card title="Cancellations" icon="ban" href="/docs/resellers/cancellations">
    How to cancel orders
  </Card>

  <Card title="API Reference" icon="code" href="/docs/api-reference/introduction">
    Complete API documentation
  </Card>
</CardGroup>
