---
title: "Submit an Offer Enrollment"
method: POST
path: "/form"
tags: ["Forms"]
---

# Submit an Offer Enrollment

`POST /form`

Submits an enrollment for the given offer. Before making this call, GET /form should
already have been called to retrieve the required fields for the offer.

The request body should contain the form fields as defined in the GET /form response
for the selected `offer_id`. The response shape varies by offer category.

Note: This API should use the enroll.wattbuy.com base URL rather than apis.wattbuy.com. It is also recommended that you use QA (qaenroll.wattbuy.com) for development.

For retail electricity offers, this endpoint returns the code, status, sub status, agent, and metadata.

The metadata includes:

    - Customer info fields
    - WattBuy order_id for further reference
    - reference_id from the supplier (if provided by the supplier)
    - status_reason if the order fails
    - deposit amount and payment link if a deposit is required

Order Status Metrix:

|Code|Status|Sub Status|Description|
|----|------|----------|--------|
|S1|SUBMITTED|Approved|The enrollment has been successfully submitted to the supplier but service has not started|
|S2|SUBMITTED|Approved with Deposit Needed|The enrollment has been successfully submitted to the supplier but a deposit is needed to turn on service|
|S3|SUBMITTED|Approved with Deposit Waiver Needed|The enrollment has been successfully submitted to the supplier but a deposit waiver is needed to turn on service|
|F3|FAILED|Declined|The enrollment has been declined by the supplier|

## Query parameters

- `offer_id` string, required
- `ip_address` string, required
- `send_email` true | false

## Request body

- FormSubmission — Dynamic form submission object. The exact fields required depend on the GET /form response. This schema represents the structure of the form data submitted in the POST /form request body. Field validation rules and requirements are defined in the GET /form response.
  - `form` object, required — Dynamic form object containing field values. Keys and requirements vary based on the selected offer_id. All field names and validation rules come from the GET /form endpoint response.

## Response `200`

OK

- SuccessForm
  - `status` 'PENDING' | 'FAILED' | 'SUBMITTED' | 'ACTIVE' | 'CLOSED'
  - `agent` 'Distributor' | 'Supplier' | 'Customer'
  - `sub_status` 'Processing' | 'Account Number' | 'Confirm Plan' | 'Deposit Required' | 'Validation' | 'Approved' | 'Approved with Deposit Needed' | 'Approved with Deposit Waiver Needed' | 'Active' | 'Expired' | 'Declined' | 'Canceled'
  - `description` string
  - `code` 'P1' | 'P2' | 'P3' | 'P4' | 'P5' | 'F1' | 'F2' | 'F3' | 'F4' | 'S1' | 'S2' | 'S3' | 'S4' | 'A1' | 'C1' | 'C2' | 'C3'
  - `metadata` object
    - `deposit_paid` boolean
    - `deposit_amount` number
    - `deposit_payment_link` string
    - `deposit_text` string
    - `service_start_date` string
    - `account_number` string
    - `order_id` string — Wattb order id
    - `reference_id` string — Supplier order id
    - `secondary_id` object — optional id
      - `key` string
      - `value` string
    - `error_message` string
    - `status_reason` string

## Other responses

- `204` — No data found
- `400` — Bad request
- `500` — Internal server error

---

[API](https://skmtc.net/wattbuy/apis/wattbuy-apis.md) · [All operations](https://skmtc.net/wattbuy/apis/wattbuy-apis/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/wattbuy/wattbuy-apis/revisions/97771153b652/schema)
