Skip to main content

Orders, Milestones & Deliverables

Structure work under a contract; upload, review, accept/reject.

C
Written by Catalin Fetean
Updated over 3 weeks ago

Audience: Project leads, Contributors, Developers
​Outcomes: Consistent order design; clear handoffs and approvals

Order lifecycle

stateDiagram-v2 [*] --> Created Created --> DepositPending DepositPending --> DepositPaid DepositPaid --> InProgress InProgress --> MilestoneReleased MilestoneReleased --> InProgress InProgress --> Completed InProgress --> Disputed Disputed --> Resolved Completed --> [*] Resolved --> [*]

Create an order

curl -X POST $API_BASE/api/orders -b cookies.txt \ -H 'Content-Type: application/json' \ -d '{ "title":"Landing page redesign", "total":150000,"currency":"USD", "milestones":[{"name":"Wireframes","amount":50000},{"name":"Final design","amount":100000}] }'

Best practices

  • Tie each milestone to objective acceptance criteria.

  • Prefer several smaller milestones over one huge payout.

Deliverables & acceptance

Upload

curl -X POST $API_BASE/api/orders/ord_123/deliverables -b cookies.txt \ -F '[email protected]' -F '[email protected]'
  • Allowed: PNG/JPG, PDF, DOC/DOCX, TXT/MD, JSON/CSV/XML, ZIP/RAR/7z.

  • Defaults: 10 MB/file, 6 files/request. AV scan + MIME validation.

Accept / Reject

# accept curl -X POST $API_BASE/api/orders/ord_123/deliverables/dlv_456/accept -b cookies.txt # reject curl -X POST $API_BASE/api/orders/ord_123/deliverables/dlv_456/reject -b cookies.txt \ -H 'Content-Type: application/json' -d '{"reason":"Need higher-resolution assets"}'

Anti-patterns

  • Accepting via chat/email only β€” do it in-app.

QA checklist

  • Upload rejects wrong MIME/oversized files with 400.

  • Acceptance toggles milestone status and audit logs reviewer + timestamp.

  • Rejection requires reason; order stays InProgress.

Did this answer your question?