Skip to content

v1 Orders and Checkout

The checkout flow

  1. POST /v1/orders returns a response containing a checkoutUrl
  2. Redirect your customer to that URL to pay by card
  3. Stripe redirects back to your successUrl with a session_id
  4. GET /v1/orders/status/{sessionId} returns the created order
  5. order.payment_completed, then later order.delivered, arrive as webhooks

POST /v1/orders

Request

json
{
  "customerName": "John Smith",
  "customerEmail": "john.smith@example.com",
  "address": "123 Main Street, Austin, TX 78701",
  "latitude": 30.2672,
  "longitude": -97.7431,
  "propertyType": "Residential",
  "serviceId": "SERVICE_ID",
  "rushOrder": false,
  "pdfRequired": true,
  "additionalInstructions": "Please include detached garage.",
  "insuredName": "Jane Doe",
  "claimNumber": "CLM-2026-001234",
  "notes": "Internal reference: contract #4421",
  "referenceImageUrl": "https://example.com/photos/123-main.jpg",
  "successUrl": "https://yourapp.com/payment/success",
  "cancelUrl": "https://yourapp.com/payment/cancelled"
}

Same fields as v4, plus:

FieldRequiredNotes
successUrlYesWhere Stripe returns after payment, receives session_id
cancelUrlYesWhere Stripe returns if the customer abandons checkout

Response 200: includes checkoutUrl. The order is not final until payment clears.

POST /v1/orders/bulk

Up to 50 orders paid in a single Stripe checkout.

GET /v1/orders/status/

After Stripe redirects to your successUrl?session_id=..., exchange that session id for the order:

bash
curl https://sandboxclient-api.roofangle.com/v1/orders/status/SESSION_ID \
  -H "Authorization: Bearer eyJhbGciOi..."

Listing orders

GET /v1/orders, GET /v1/orders/{orderId}, and GET /v1/orders/by-customer?email= behave exactly as in v4.

Need an API key? Contact support@roofangle.com