Skip to main content
Phantom is charged-first merchant of record: the eater pays (or a hold is placed) before submit, and the restaurant is paid out on acceptance. See the payment branches in Agent Onboarding for how to pick a flow.

start_payment

Start a customer payment before the final submit. The branch is chosen from what is supplied: Input:
Output:

charge_saved_card

Charge the eater’s saved card (vaulted on the shared MealOps Stripe account) for the order’s quote total before submitting. Phantom is charged-first merchant of record. Input: { "restaurant_id": "…", "order": {}, "customer_id": "cus_123", "payment_method_id": "pm_123" } Output:

charge_payment

Charge the saved card for an already-submitted order, then pay out the restaurant. Input: { "order_id": "order_123", "customer_id": "cus_123", "payment_method_id": "pm_123" } Output:

create_payout

Reconcile fallback: link an order’s pre-submit charge and settle it (capture + restaurant payout). This normally runs automatically when the restaurant accepts the order. While the order is still pre-acceptance the call defers (deferred: true) without capturing. Input: { "order_id": "order_123" } Output: { "ok": true, "payoutTriggered": false, "paymentStatus": "authorized", "deferred": true }

void_payment

Release a held authorization (e.g. the order failed to submit). No funds are charged. Input: { "restaurant_id": "…", "order": {} } Output: { "ok": true, "status": "canceled", "paymentIntentId": "pi_123" }

get_payment_status

Reconciliation: the current stored payment status for an order’s external reference. Input: { "external_reference": "yourapp-order-1001" } Output:
Ownership: a payment is the agent’s when its linked order is theirs, or — pre-submit, when no order exists yet — when the payment carries their agent stamp in metadata.