Recued
Menu
← Back to recipes

Observe a quote payment

by recued-core v1 9 views

Use “Observe a quote payment” in Recued. It carries out the named workflow using the connections and settings you choose.

Complete workflow

Seller Quote Request 5 pinned recipes

Use Seller Quote Request in Recued for unspecified pricing, estimate, order, and reception. It includes 7 built-in actions and 4 ready-to-run workflows. Actions that change data use Recued's approval controls.

You are viewing one recipe in this workflow. Installing it opens the complete pack so its other recipes and background automations arrive together.

Use “Observe a quote payment” in Recued. It carries out the named workflow using the connections and settings you choose.

pack:seller-quote-requestsellerquotepayment
by recued-core pinned v1

Use “Open a quote request” in Recued. Exact-form template that turns one owner-accepted Reception intake response into an order awaiting your price, and records the request itself in the pack's own Records storage. Changes remain behind Recued's approval controls.

pack:seller-quote-requestform-response-templatesellerquote
by recued-core pinned v3

Use “Price and send a quote” in Recued. Pin your price onto a waiting quote request, then send the customer a payment link for exactly that figure.

pack:seller-quote-requestsellerquoteunspecified-pricing
by recued-core pinned v3

Use “Quote board” in Recued. Every quote request against one offer, with the two things you act on: which ones are still waiting for your price, and which ones you have priced and are waiting on the customer. It reads information without changing data in the connected service.

pack:seller-quote-requestsellerquoteboard
by recued-core pinned v3
View pack details, dependencies, and permissions →

Closing the loop

Without this recipe a quote reaches awaiting_payment and stops: core.seller.order.confirm-payment is the only route to paid, and it needs provider evidence that only a webhook-scoped run can gather.

  1. Install alongside Seller Quote Request and enrol the same Stripe connection the pricing recipe uses.
  2. Bind the quote_payment_events webhook and subscribe checkout.session.completed + checkout.session.async_payment_succeeded (the async one matters for delayed methods — a bank debit completes minutes or days later).
  3. Set Sender account if you want the customer to get a confirmation from you as well as Stripe's own card receipt.

The webhook payload is never the evidence. Every figure that authorizes the transition comes from a fresh Session read over your connection. That is why an attacker who could forge a delivery still cannot mark an order paid.

Offline payments do not come through here. A cheque or bank transfer produces no Stripe session, so no evidence can exist and the order stays in awaiting_payment by design — paid is evidence-backed on purpose. Track that work on the job board instead of forcing it through an order.

How it works 49 steps

Inspect the data fetches, transforms, gates, and output this recipe runs.

Process (49 steps)
webhook_event ?
profile_exact compare
Check if webhook event delivery profile id is one of stripe.event.v1
decoded_schema_exact compare
Check if webhook event delivery decoded schema id is one of stripe.event.v1
transport_exact compare
Check if webhook event delivery transport assurance is one of authenticated
source_truth_policy_exact compare
Check if webhook event delivery minimum source truth policy is one of provider_readback_required
freshness_exact compare
Check if webhook event delivery freshness checked is one of true
payload_object_exact compare
Check if webhook event payload object is one of event
payload_event_id_exact compare
Check if webhook event payload id is one of webhook event event provider event id
payload_event_type_exact compare
Check if webhook event payload type is one of webhook event event provider event type
envelope_shared_valid all
Check if all conditions are true
payment_event_type compare
Check if webhook event event provider event type is one of checkout.session.completed,checkout.session.async_payment_succeeded
payment_resource_object_exact compare
Check if webhook event payload data object object is one of checkout.session
payment_session_id_exact compare
Check if webhook event payload data object id is one of webhook event event provider resource id
payment_session_id_prefix starts_with
Check if webhook event event provider resource id starts with cs_
payment_session_id_truncated truncate
Truncate webhook event event provider resource id to a max length
payment_session_id_bounded compare
Check if webhook event event provider resource id is one of payment session id truncated
order_handle_prefix starts_with
Check if webhook event payload data object client reference id starts with oh_
order_handle_truncated truncate
Truncate webhook event payload data object client reference id to a max length
order_handle_bounded compare
Check if webhook event payload data object client reference id is one of order handle truncated
payment_envelope_valid all
Check if all conditions are true
payment_order_read ?
skip: step.payment_envelope_valid equal false
payment_order_found compare
Check if payment order read order exists
payment_phase_eligible compare
Check if payment order read order phase is one of awaiting_payment
payment_already_paid compare
Check if payment order read order phase is one of paid,fulfilling,approved,delivering,complete
payment_session_matches_order compare
Check if webhook event payload data object id is one of payment order read order provider session id
payment_read_allowed all
Check if all conditions are true
payment_session_read ?
skip: step.payment_read_allowed equal false
session_id_matches compare
Check if payment session read result id is one of payment order read order provider session id
session_status_complete compare
Check if payment session read result status is one of complete
session_paid compare
Check if payment session read result payment status is one of paid
session_mode_payment compare
Check if payment session read result mode is one of payment
session_reference_matches compare
Check if payment session read result client reference id is one of payment order read order order handle
session_metadata_matches compare
Check if payment session read result metadata recued workflow key is one of payment order read order order key
session_amount_matches compare
Check if payment session read result amount total equals payment order read order amount minor
payment_order_currency_lower lowercase
Convert payment order read order currency to lowercase
session_currency_matches compare
Check if payment session read result currency equals payment order currency lower
session_payment_intent_present compare
Check if payment session read result payment intent exists
payment_confirm_allowed all
Check if all conditions are true
confirm_payment ?
skip: step.payment_confirm_allowed equal false
payment_advanced compare
Check if confirm payment order phase is one of paid
payment_source_mismatch all
Check if all conditions are true
payment_correlation_mismatch all
Check if all conditions are true
payment_phase_ineligible all
Check if all conditions are true
sender_mail trim
Trim whitespace from setting sender mail instance
defaults defaults
Apply defaults
receipt_skip any
Check if any of the conditions are true
receipt_reconciliation template
Generate text from a template
receipt_send ?
skip: step.receipt_skip equal true
event_summary to_summary
Format results as a summary card
Settings 2 configurable

Configurable at install. Defaults shown — change them anytime in Recued.

stripe setting =
sender mail instance setting =

Trust & control

What installing this recipe would let it do. Recued grants these permissions at install — review them there before approving.

Data it touches

Warehousedata.objectdata.mail

About

Tags

pack:seller-quote-requestsellerquotepaymentwebhookstripeverified-eventmoneyv1

Details

49 steps 2 configurable settings recipe_id: observe-quote-payment