Webhooks

Quote Converted

Webhook event fired when a quote is accepted or paid, converting it into a confirmed order

Overview

The Quote Converted event fires whenever a quote transitions into a confirmed order in Phasio. This is the recommended event to subscribe to if you need to react to new order placements — for example, syncing to an ERP, triggering fulfilment workflows, or notifying internal systems.

The payload structure is identical to the Order Created event.

When it triggers

This webhook fires on any of the following transitions:

  • A customer accepts a quote (e.g. selects "Accept Quote" in the storefront) before payment — used in deferred-billing flows such as purchase order or invoice payment. The paymentStatus will be UNPAID at this point.
  • A customer or manufacturer confirms payment by purchase order or invoice, transitioning the order to CONFIRMED.
  • A customer completes online payment (Stripe, PayPal, or similar), transitioning the order to PAID.
  • An order is created with payment pre-confirmed — for example, when a manufacturer commits an order on behalf of a customer with payment already arranged.

Note: This event may fire before orderNumber is assigned. When paymentStatus is UNPAID (customer acceptance without payment), orderNumber will be null. It is populated once payment is confirmed.

Payload

The payload structure is identical to the Order Created event. The decrypted payload is a JSON object with the following fields:

FieldTypeNullableDescription
orderIdnumberNoUnique identifier for the order.
threadIdnumberYesConversation thread ID associated with the order, if any.
quoteNumberstringNoThe quote number (e.g., "Q-001").
orderNumberstringYesThe order number (e.g., "ORD-001"). null when the event fires on quote acceptance before payment.
customerOrganisationIdnumberNoID of the customer organisation that placed the order.
customerOrganisationNamestringNoName of the customer organisation.
createdDatestringNoISO 8601 date-time when the order was originally created.
kanbanColumnNamestringYesName of the Kanban column the order is currently in.
kanbanColumnSequencenumberYesSequence number of the Kanban column.
paymentStatusstringYesCurrent payment status — "UNPAID" (accepted, not yet paid), "CONFIRMED" (PO/invoice), or "PAID" (online payment).
actorTypestringYesThe type of actor that triggered this event ("MANUFACTURER" or "CUSTOMER").
customReferencestringYesCustom reference string set by the manufacturer or customer.
partsarrayNoList of parts in the order. See Part object.
expensesarrayNoList of additional expenses. See Expense object.
pricingobjectNoPricing breakdown. See Pricing object.
shippingobjectYesShipping details. See Shipping object. null if no shipping is configured.

For detailed documentation of nested objects (parts, expenses, pricing, shipping, address), see the Order Created event page.

Example payload

{
  "orderId": 12345,
  "threadId": 9876,
  "quoteNumber": "Q-001",
  "orderNumber": "ORD-001",
  "customerOrganisationId": 678,
  "customerOrganisationName": "Binder3D",
  "createdDate": "2025-06-15T10:30:00",
  "kanbanColumnName": "New Orders",
  "kanbanColumnSequence": 1,
  "paymentStatus": "PAID",
  "actorType": "CUSTOMER",
  "customReference": "PO-2025-0042",
  "parts": [
    {
      "id": 1,
      "specificationId": "550e8400-e29b-41d4-a716-446655440000",
      "name": "Bracket Assembly",
      "technology": "CNC Machining",
      "material": "Aluminum 6061",
      "quantity": 100,
      "pricePerPart": 12.50,
      "color": null,
      "infill": null,
      "precision": "Standard",
      "volume": 42.75,
      "area": 128.30,
      "width": 50.00,
      "height": 30.00,
      "depth": 10.00,
      "minBoundingBoxVolume": 15000.00,
      "minimumWallThickness": 1.20,
      "convexHullVolume": 48.50,
      "shrinkWrapVolume": 45.10,
      "postProcessings": [
        {
          "name": "Anodizing",
          "price": 2.00
        }
      ],
      "productionSteps": [
        {
          "name": "Machining",
          "sequence": 1
        },
        {
          "name": "Anodizing",
          "sequence": 2
        },
        {
          "name": "Quality Check",
          "sequence": 3
        }
      ]
    }
  ],
  "expenses": [
    {
      "id": 1,
      "name": "Setup Fee",
      "price": 50.00
    }
  ],
  "pricing": {
    "currency": "USD",
    "totalPrice": 1375.00,
    "totalLocalPrice": 1375.00,
    "shippingFee": 25.00,
    "taxPercentage": 10.00,
    "taxAmount": 125.00,
    "applyTaxToShipping": true,
    "discountPercentage": 5.00,
    "paymentDueDate": "2025-07-15",
    "topUpAmount": null
  },
  "shipping": {
    "shippingMethod": "FedEx Ground",
    "address": {
      "id": "addr-001",
      "street1": "123 Industrial Ave",
      "street2": "Suite 400",
      "city": "Austin",
      "state": "TX",
      "country": "US",
      "zip": "73301",
      "name": "Binder3D",
      "phone": "+1-555-0100",
      "email": "orders@binder3d.com",
      "residential": false
    }
  }
}

Last updated on