v1 Orders and Checkout
The checkout flow
POST /v1/ordersreturns a response containing acheckoutUrl- Redirect your customer to that URL to pay by card
- Stripe redirects back to your
successUrlwith asession_id GET /v1/orders/status/{sessionId}returns the created orderorder.payment_completed, then laterorder.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:
| Field | Required | Notes |
|---|---|---|
successUrl | Yes | Where Stripe returns after payment, receives session_id |
cancelUrl | Yes | Where 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.
