admin-projects

Upload Po On Behalf

Submit a PO on the user's behalf for a QUOTED/APPROVED project.

Mirrors the user-side POST /payments/purchase-order side effects via the shared PaymentService._submit_purchase_order_internal helper. Adds the admin attribution column on the Payment row, fires a user-facing in-app notification (no email), reuses the existing PO_SUBMITTED admin notification fan-out, and writes an audit log entry tagged po_uploaded_by_admin.

Returns the fully-populated payment detail response with a presigned PO download URL — same shape the admin payment detail endpoint returns so the frontend can render without a follow-up GET.

post/api/v1/admin/projects/{project_id}/upload-po-on-behalf

Path parameters

project_idstring uuid required

Request body

po_numberstring required
po_document_r2_keystring required
order_placed_atstring date nullable

Response

Successful Response

idstring uuid required
project_idstring uuid required
quote_idstring uuid required
user_idstring uuid required
methodstring required
statusstring required
amountstring required
total_with_taxstring nullable
deposit_amountstring nullable
currencystring required
stripe_payment_intent_idstring nullable
po_numberstring nullable
po_document_r2_keystring nullable
po_document_download_urlstring nullable
shipping_addressstring nullable
notesstring nullable
paid_atstring date-time nullable
created_atstring date-time required
updated_atstring date-time required
project_namestring required
customer_namestring required
customer_emailstring required
customer_billing_addressstring nullable
submitted_by_admin_idstring uuid nullable
submitted_by_labelstring nullable
payment_terms_net_daysinteger nullable
order_placed_at_overridestring date-time nullable
order_placed_atstring date-time nullable

Changes

No recorded changes to this endpoint across all 1 revision of this API.