order.approval.pending
Overview of the order.approval.pending webhook
order.approval.pending webhookWhen an order.approval.pending event is triggered, FastSpring sends a webhook payload containing details about the order awaiting approval. This webhook fires only when you've enabled the Invoicing Service with purchase-order approval required and a customer submits a PO.
If webhook expansion is enabled, the payload includes full account and product objects. Otherwise, the payload includes only the corresponding IDs.
This page provides:
- A full sample payload showing a populated
order.approval.pendingwebhook - A detailed table listing every payload property, including name, type, and description
- Notes on when this webhook is triggered and which fields appear based on Webhook Expansion
Browse the table sections below or use the quick links to jump to a specific group of fields.
Tip: Not all fields are always included. Refer to the Payload properties table to understand when a field appears.
Webhook payload example (expansion enabled)
When a order.approval.pending event is triggered, the webhook sends the following JSON payload:
{
"order": "aBCDE12fGH3iJkL4mNOpq",
"id": "aBCDE12fGH3iJkL4mNOpq",
"reference": "ABC123456-7891-01112",
"buyerReference": null,
"ipAddress": "000.000.00.000",
"completed": false,
"changed": 1751898991060,
"changedValue": 1751898991060,
"changedInSeconds": 1751898991,
"changedDisplay": "7/7/25",
"changedDisplayISO8601": "2025-07-07",
"changedDisplayEmailEnhancements": "Jul 07, 2025",
"changedDisplayEmailEnhancementsWithTime": "Jul 07, 2025 02:36:31 PM",
"language": "en",
"live": false,
"currency": "USD",
"payoutCurrency": "USD",
"quote": "QUW6Z4TYTPOJDRTF5DJ7E2CVYAWA",
"invoiceUrl": "https://company.onfastspring.com/account/order/null/invoice",
"siteId": "LDN5SX4KBZCI2",
"acquisitionTransactionType": "INVOICE_PAYMENT_ORDER",
"account": {
"id": "abCdE1FGH2Hij3KLMnOpqR",
"account": "abCdE1FGH2Hij3KLMnOpqR",
"contact": {
"first": "Jane",
"last": "Doe",
"email": "[email protected]",
"company": "ABC Company",
"phone": "5555555555",
"subscribed": true
},
"address": {
"address line 1": "801 Garden St",
"address line 2": "Suite 201",
"city": "Santa Barbara",
"country": "US",
"postal code": "93101",
"region": "US-CA",
"region custom": null,
"company": "ABC Company"
},
"language": "en",
"country": "US",
"lookup": { "global": "8x3FKfUESieeIgGoxHBRLg" },
"url": "https://company.onfastspring.com/account"
},
"total": 60.0,
"totalDisplay": "$60.00",
"totalInPayoutCurrency": 60.0,
"totalInPayoutCurrencyDisplay": "$60.00",
"tax": 0.0,
"taxDisplay": "$0.00",
"taxInPayoutCurrency": 0.0,
"taxInPayoutCurrencyDisplay": "$0.00",
"subtotal": 60.0,
"subtotalDisplay": "$60.00",
"subtotalInPayoutCurrency": 60.0,
"subtotalInPayoutCurrencyDisplay": "$60.00",
"discount": 0.0,
"discountDisplay": "$0.00",
"discountInPayoutCurrency": 0.0,
"discountInPayoutCurrencyDisplay": "$0.00",
"discountWithTax": 0.0,
"discountWithTaxDisplay": "$0.00",
"discountWithTaxInPayoutCurrency": 0.0,
"discountWithTaxInPayoutCurrencyDisplay": "$0.00",
"billDescriptor": "N/A",
"payment": {},
"reason": "purchaseOrder",
"customer": {
"first": "Jane",
"last": "Doe",
"email": "[email protected]",
"company": "ABC Company",
"phone": "5555555555",
"subscribed": true
},
"address": {
"addressLine1": "801 Garden St",
"addressLine2": "Suite 201",
"city": "Santa Barbara",
"regionCode": "CA",
"regionDisplay": "California",
"region": "California",
"postalCode": "93101",
"country": "US",
"display": "801 Garden St, Suite 201, Santa Barbara, California, 93101, US"
},
"recipients": [
{
"recipient": {
"first": "John",
"last": "Doe",
"email": "[email protected]",
"company": "ABC Company",
"phone": "5555555555",
"subscribed": true,
"account": {
"id": "abCdE1FGH2Hij3KLMnOpqR",
"account": "abCdE1FGH2Hij3KLMnOpqR",
"contact": {
"first": "John",
"last": "Doe",
"email": "[email protected]",
"company": "ABC Company",
"phone": "5555555555",
"subscribed": true
},
"address": {
"address line 1": "801 Garden St",
"address line 2": "Suite 201",
"city": "Santa Barbara",
"country": "US",
"postal code": "93101",
"region": "US-CA",
"region custom": null,
"company": "ABC Company"
},
"language": "en",
"country": "US",
"lookup": { "global": "8x3FKfUESieeIgGoxHBRLg" },
"url": "https://company.onfastspring.com/account"
}
}
}
],
"notes": [],
"items": [
{
"product": "cloud-storage",
"quantity": 1,
"display": "Cloud Storage Service",
"sku": "SKU-CS-101",
"imageUrl": null,
"shortDisplay": "Cloud Storage Service",
"subtotal": 60.0,
"subtotalDisplay": "$60.00",
"subtotalInPayoutCurrency": 60.0,
"subtotalInPayoutCurrencyDisplay": "$60.00",
"discount": 0.0,
"discountDisplay": "$0.00",
"discountInPayoutCurrency": 0.0,
"discountInPayoutCurrencyDisplay": "$0.00",
"fulfillments": {},
"withholdings": { "taxWithholdings": false },
"proratedItemChangeAmount": 0.0,
"proratedItemChangeAmountDisplay": "$0.00",
"proratedItemChangeAmountInPayoutCurrency": 0.0,
"proratedItemChangeAmountInPayoutCurrencyDisplay": "$0.00",
"proratedItemProratedCharge": 0.0,
"proratedItemProratedChargeDisplay": "$0.00",
"proratedItemProratedChargeInPayoutCurrency": 0.0,
"proratedItemProratedChargeInPayoutCurrencyDisplay": "$0.00",
"proratedItemCreditAmount": 0.0,
"proratedItemCreditAmountDisplay": "$0.00",
"proratedItemCreditAmountInPayoutCurrency": 0.0,
"proratedItemCreditAmountInPayoutCurrencyDisplay": "$0.00",
"proratedItemTaxAmount": 0.0,
"proratedItemTaxAmountDisplay": "$0.00",
"proratedItemTaxAmountInPayoutCurrency": 0.0,
"proratedItemTaxAmountInPayoutCurrencyDisplay": "$0.00",
"proratedItemTotal": 0.0,
"proratedItemTotalDisplay": "$0.00",
"proratedItemTotalInPayoutCurrency": 0.0,
"proratedItemTotalInPayoutCurrencyDisplay": "$0.00"
}
]
}Navigate this webhook
The order.approval.pending webhook payload includes dozens of fields. Use the cards below to jump to a specific section of the property reference.
Payload properties
All fields below are included in the order.approval.pending webhook payload. Fields are grouped into categories for easier navigation.
| Name | Type | Description |
|---|---|---|
| Order Details | ||
| order | string | Unique identifier for the order (duplicate of id) |
| id | string | Unique identifier for the order |
| reference | string | Customer-facing order reference |
| buyerReference | string|null | Buyer-provided reference identifier when supplied |
| ipAddress | string|null | IP address captured at checkout when available |
| completed | boolean | Whether the order has completed processing; for pending orders this is always false |
| Timestamps | ||
| changed | integer | Last order update timestamp in milliseconds |
| changedValue | integer | Duplicate of changed for backward compatibility |
| changedInSeconds | integer | Last order update timestamp in seconds |
| changedDisplay | string | User-friendly display of the last update |
| changedDisplayISO8601 | string | Last update in ISO 8601 format |
| changedDisplayEmailEnhancements | string | Email-friendly last update date |
| changedDisplayEmailEnhancementsWithTime | string | Email-friendly last update date with time |
| Order Settings | ||
| language | string | Two-letter ISO code for the order’s language |
| live | boolean | Whether the order was processed in live mode |
| currency | string | Three-letter ISO currency code used for the order |
| payoutCurrency | string | Three-letter ISO currency code used for payouts |
| quote | string|null | Associated quote ID when the order originated from a quote |
| invoiceUrl | string | URL to view or download the invoice |
| siteId | string | Identifier of the site where the order was placed |
| acquisitionTransactionType | string | Type of acquisition transaction such as INVOICE_PAYMENT_ORDER |
| Account Object | ||
| account.id | string | Unique identifier for the customer account |
| account.account | string | Duplicate of account.id for backward compatibility |
| account.contact.first | string | First name of the account contact |
| account.contact.last | string | Last name of the account contact |
| account.contact.email | string | Email address of the account contact |
| account.contact.company | string | Company name of the account contact when provided |
| account.contact.phone | string | Phone number of the account contact when provided |
| account.contact.subscribed | boolean | Whether the account contact is subscribed to updates |
| account.address.address line 1 | string | Primary street address line of the account |
| account.address.address line 2 | string | Secondary street address line of the account |
| account.address.city | string | City of the account address |
| account.address.country | string | Two-letter ISO country code for the account address |
| account.address.postal code | string | Postal or ZIP code of the account address |
| account.address.region | string | Region or state of the account address |
| account.address.region custom | string | Custom region name when not standard |
| account.address.company | string | Company name associated with the account address |
| account.language | string | Two-letter ISO code for the customer’s preferred language |
| account.country | string | Two-letter ISO country code for the customer |
| account.lookup.global | string | Globally unique public ID used to look up the account in portals |
| account.url | string | Customer-facing account management URL |
| Pricing | ||
| total | number | Total order amount in transaction currency |
| totalDisplay | string | Formatted display of total |
| totalInPayoutCurrency | number | Total order amount in payout currency |
| totalInPayoutCurrencyDisplay | string | Formatted display of totalInPayoutCurrency |
| tax | number | Tax amount in transaction currency |
| taxDisplay | string | Formatted display of tax |
| taxInPayoutCurrency | number | Tax amount in payout currency |
| taxInPayoutCurrencyDisplay | string | Formatted display of taxInPayoutCurrency |
| subtotal | number | Subtotal before discounts and tax in transaction currency |
| subtotalDisplay | string | Formatted display of subtotal |
| subtotalInPayoutCurrency | number | Subtotal in payout currency |
| subtotalInPayoutCurrencyDisplay | string | Formatted display of subtotalInPayoutCurrency |
| Discount Details | ||
| discount | number | Total discount applied in transaction currency |
| discountDisplay | string | Formatted display of discount |
| discountInPayoutCurrency | number | Total discount applied in payout currency |
| discountInPayoutCurrencyDisplay | string | Formatted display of discountInPayoutCurrency |
| discountWithTax | number | Total discount including tax in transaction currency |
| discountWithTaxDisplay | string | Formatted display of discountWithTax |
| discountWithTaxInPayoutCurrency | number | Total discount including tax in payout currency |
| discountWithTaxInPayoutCurrencyDisplay | string | Formatted display of discountWithTaxInPayoutCurrency |
| Payment Method | ||
| billDescriptor | string | Billing descriptor that appears on the customer’s statement |
| payment.type | string | Payment method used for the order (e.g., paypal, creditcard, upi, test) |
| payment.variant | string | Returned when payment.type is upi, identifies the UPI app or flow (e.g., upipaytm, upiphonepe) |
| payment.creditcard | string | Returned when payment.type is creditcard, indicates card brand (e.g., visa, mastercard, amex) |
| payment.cardEnding | string | Returned when payment.type is creditcard, last four digits of the card |
| payment.bank | string | Returned when payment.type is bank, type of bank transfer (e.g., sepa, giropay, sofort) |
| reason | string | Reason the order approval is pending (e.g., purchaseOrder) |
| Customer Object | ||
| customer.first | string | Customer first name |
| customer.last | string | Customer last name |
| customer.email | string | Customer email address |
| customer.company | string | Customer company name when provided |
| customer.phone | string | Customer phone number |
| customer.subscribed | boolean | Whether the customer is subscribed to updates |
| Address Object | ||
| address.addressLine1 | string | Primary street address line |
| address.addressLine2 | string | Secondary street address line |
| address.city | string | City of the billing address |
| address.regionCode | string | Region code such as state or province abbreviation |
| address.regionDisplay | string | Display label of the region |
| address.region | string | Full region name |
| address.postalCode | string | Postal or ZIP code |
| address.country | string | Two-letter ISO country code |
| address.display | string | Formatted display of the full address |
| Recipients Array | ||
| recipients | array | List of recipients associated with the order |
| recipient.first | string | Recipient first name |
| recipient.last | string | Recipient last name |
| recipient.email | string | Recipient email address |
| recipient.company | string | Recipient company name when provided |
| recipient.phone | string | Recipient phone number |
| recipient.subscribed | boolean | Whether the recipient is subscribed to updates |
| recipient.account | object | Account object for the recipient (mirrors account structure) |
| account.id | string | FastSpring-generated account ID |
| account.account | string | Duplicate of account.id for backward compatibility |
| account.contact.first | string | First name of the recipient |
| account.contact.last | string | Last name of the recipient |
| account.contact.email | string | Email address of the recipient |
| account.contact.company | string | Company name of the recipient when provided |
| account.contact.phone | string | Phone number of the recipient when provided |
| account.contact.subscribed | boolean | Whether the recipient is subscribed to updates |
| recipient.address.addressLine1 | string | Recipient primary street address line |
| recipient.address.addressLine2 | string | Recipient secondary street address line |
| recipient.address.city | string | Recipient city |
| recipient.address.country | string | Recipient two-letter ISO country code |
| recipient.address.postalCode | string | Recipient postal or ZIP code |
| recipient.address.region | string | Full region name for the recipient address |
| recipient.address.company | string | Company name of the recipient when provided |
| recipient.language | string | Two-letter ISO code for the recipient’s preferred language |
| recipient.country | string | Two-letter ISO country code for the recipient |
| recipient.lookup.global | string | Globally unique public ID used to look up the account in customer-facing portals |
| recipient.url | string | Customer-facing account management URL |
| Notes | ||
| notes | array | Array of internal note objects associated with the order; typically added in the FastSpring App or API and not customer-facing |
| Items Array | ||
| items | array | Array of items included in the order |
| items.product | string | Product path or identifier |
| items.quantity | integer | Quantity of the product purchased |
| items.display | string | Customer-facing product name |
| items.sku | string | SKU of the product when available |
| items.imageUrl | string | Image URL for the product when available |
| items.shortDisplay | string | Short display name of the product |
| items.subtotal | number | Subtotal for the item in transaction currency |
| items.subtotalDisplay | string | Formatted display of item subtotal |
| items.subtotalInPayoutCurrency | number | Subtotal for the item in payout currency |
| items.subtotalInPayoutCurrencyDisplay | string | Formatted display of item subtotal in payout currency |
| items.discount | number | Total discount applied to the item in transaction currency |
| items.discountDisplay | string | Formatted display of item discount |
| items.discountInPayoutCurrency | number | Discount amount for the item in payout currency |
| items.discountInPayoutCurrencyDisplay | string | Formatted display of item discount in payout currency |
| Fulfillments Object | ||
| items.fulfillments.display | string | Display name of the downloadable file or fulfillment action |
| items.fulfillments.size | integer | File size in bytes when applicable |
| items.fulfillments.file | string | Secure URL for downloading the fulfillment file |
| items.fulfillments.type | string | Fulfillment type such as file or license |
| Withholdings Object | ||
| items.withholdings.amount | number | Total amount withheld from this item in transaction currency |
| items.withholdings.amountDisplay | string | Formatted display of the withheld amount |
| items.withholdings.amountInPayoutCurrency | number | Withheld amount in payout currency |
| items.withholdings.amountInPayoutCurrencyDisplay | string | Formatted display of withheld amount in payout currency |
| items.withholdings.percentage | number | Percentage of the item’s total that was withheld |
| items.withholdings.taxWithholdings | boolean | Whether the withholding relates to taxes |
| Proration Details | ||
| items.proratedItemChangeAmount | number | Net change in the item’s amount due to plan change and proration in transaction currency |
| items.proratedItemChangeAmountDisplay | string | Formatted display of proratedItemChangeAmount |
| items.proratedItemChangeAmountInPayoutCurrency | number | Net change amount converted to payout currency |
| items.proratedItemChangeAmountInPayoutCurrencyDisplay | string | Formatted display of net change amount in payout currency |
| items.proratedItemProratedCharge | number | Charge amount for the prorated portion of the new item in transaction currency |
| items.proratedItemProratedChargeDisplay | string | Formatted display of prorated charge |
| items.proratedItemProratedChargeInPayoutCurrency | number | Prorated charge amount in payout currency |
| items.proratedItemProratedChargeInPayoutCurrencyDisplay | string | Formatted display of prorated charge in payout currency |
| items.proratedItemCreditAmount | number | Credit amount issued for the unused portion of the previous item in transaction currency |
| items.proratedItemCreditAmountDisplay | string | Formatted display of prorated credit |
| items.proratedItemCreditAmountInPayoutCurrency | number | Credit amount in payout currency |
| items.proratedItemCreditAmountInPayoutCurrencyDisplay | string | Formatted display of prorated credit in payout currency |
| items.proratedItemTaxAmount | number | Tax amount applied to the prorated adjustment in transaction currency |
| items.proratedItemTaxAmountDisplay | string | Formatted display of prorated tax amount |
| items.proratedItemTaxAmountInPayoutCurrency | number | Prorated tax amount in payout currency |
| items.proratedItemTaxAmountInPayoutCurrencyDisplay | string | Formatted display of prorated tax in payout currency |
| items.proratedItemTotal | number | Total prorated adjustment (charges minus credits plus tax) in transaction currency |
| items.proratedItemTotalDisplay | string | Formatted display of prorated total |
| items.proratedItemTotalInPayoutCurrency | number | Total prorated adjustment in payout currency |
| items.proratedItemTotalInPayoutCurrencyDisplay | string | Formatted display of prorated total in payout currency |