Data exports
Export granular store data for external analysis and reporting.
While the FastSpring dashboard provides high-level performance metrics, financial reconciliation often requires granular, line-item detail. The Data Exports tool allows you to generate comprehensive CSV reports for Orders, Subscriptions, and Returns, exposing specific attributes and tax data that may not be visible in standard app views.
Create a data export
Exports are generated based on specific parameters you define, such as date range and report type. Once configured, the system processes the report in the background and makes the file available for download.
- In the FastSpring app, go to Reports > Data Exports.
- Click Create Data Export.
- Report Name: Enter an optional name for the export (e.g., "FY2025 Q1 Sales"). This helps identify the file in your historical list.
- Date and Number Formatting: Select a language/region. FastSpring uses this locale to format dates and currency figures (e.g., "English" vs. "German").
- Export Date Range: Enter the From and To dates to specify the time frame for the data.
- Report Type: Select the specific dataset you wish to export. Changing this selection may reveal additional configuration fields.
- Order Reports: Includes Order Export, Order Export (Excluding Returns), Canceled Order Export, and Survey Result Export.
- Order Item Reports: Includes Order Item Export (line-item details) and Base Order Item Export.
- Quote Reports: Exports data for B2B quotes.
- Subscriptions: Exports a list of Active or Inactive subscribers.
- Special Use Reports: Shipment Export
- Order Reports - Custom: Select New CSV Template or New Text Template.
Note: Selecting New CSV Template as the report type reveals two additional fields: Custom Report CSV Columns and Custom Report Template. See Customize your data export below for details.
- (Conditional) Tax Export Country: If you select a tax-related report type, this field appears. Select the applicable country or region (e.g., EU, United States) to filter the tax data.
- Click Create.
The export will appear in the list with a Processing status. Once complete, you can Download, Preview, or Delete the file via the Actions column.
Customize your data export
Use the New CSV Template or New Text Template options to define exactly which fields appear in your report.
- Follow the Create a data export steps above to start a new data export.
- In the Report Type dropdown, select New CSV Template. Additional fields appear.
- Custom Report CSV Columns: Enter a comma-separated list of column names for the custom CSV.
- Example:
Reference,Date,Amount,Amount(USD)
- Example:
- Custom Report Template: Create a custom template using the object name of each data point to include in the export, such as
#{order.reference}or#{order.customer.fullName}.- Example:
#{order.id},#{order.createdDate},#{order.subTotal},#{order.subTotalUSD}
- Example:
- Click Create.
Tip: Click order below the Custom Report Template text area to access a list of available order attributes.
Calculate chargeback percentage
Industry standards suggest maintaining a chargeback percentage below 0.5%. To calculate your chargeback percentage, create an order item export report.
- Follow the Create a data export steps above to start a new data export.
- In the Report Type dropdown, select Order Item Export.
- Under Export Date Range, enter the From and To dates to specify the time frame for the data.
- Click Create.
The report will include order details about:
- Purchases
- Returns
- Return-Disputes
Chargebacks that have completed in our system will appear as Return-Dispute. Use the following formula to calculate your chargeback percentage for any given period of time:
Chargeback % = (Total # of Return-Dispute) / (Total # of Purchase)
Example: 20 Return-Disputes out of 1,000 Total Purchases results in a 2% chargeback rate (20 / 1000 = 0.02).
Available parameters
Expand the sections below to view the variables available for custom export templates.
Order items
These parameters relate to the general order object.
| Variable | Template Tag | Description |
|---|---|---|
| accountUrl | #{order.accountUrl} | URL of the customer account associated with the order. |
| activeReview | #{order.activeReview} | Returns true if the order is currently under review. |
| address | #{order.address.___} | Customer address object. Use specific fields like address1, city, etc. |
| address1 | #{order.address.address1} | First line of the customer address. |
| address2 | #{order.address.address2} | Second line of the customer address. |
| city | #{order.address.city} | City. |
| country | #{order.address.country} | Country code. |
| countryDisplay | #{order.address.countryDisplay} | Country name formatted for display. |
| postalCode | #{order.address.postalCode} | Postal/Zip code. |
| region | #{order.address.region} | State/Region code (e.g., for US addresses). |
| regionDisplay | #{order.address.regionDisplay} | State/Region formatted for display. |
| allItems | #{order.allItems} | All order items (requires loop in template). |
| allProductNames | #{order.allProductNames} | List of all product names in the order. |
| baseItems | #{order.baseItems} | Base order items (excluding add-ons). |
| baseProductNames | #{order.baseProductNames} | Product names of base items only. |
| billDescriptor | #{order.billDescriptor} | The descriptor that appears on the customer's bank statement. |
| coupons | #{order.coupons} | List of coupons applied. |
| created | #{order.createdDate} | Recommended: Use createdDate for CSVs to avoid format conflicts. (e.g., 1/1/23 12:01 PM). |
| currency | #{order.currency} | ISO currency code (e.g., USD, EUR). |
| customList | #{order.customList} | Custom list associated with the order. |
| customTagsList | #{order.customTagsList} | Key=value list of order-level custom tags. |
| customer | #{order.customer.___} | Customer contact object. |
| customerReference | #{order.reference} | The public order reference ID (e.g., ORD-12345). |
| discountTotal | #{order.discountTotal} | Total discount amount in order currency. |
| discountTotalUSD | #{order.discountTotalUSD} | Total discount amount converted to USD. |
| due | #{order.due} | Payment due date. |
| hasActiveReview | #{order.hasActiveReview} | Returns true if the order is in review status. |
| hasCustomTagsJson | #{order.hasCustomTagsJson} | Returns true if the order contains custom JSON tags. |
| hasEmailFulfillment | #{order.hasEmailFulfillment} | Returns true if email fulfillment is configured. |
| hasPayPalPayment | #{order.hasPayPalPayment} | Returns true if paid via PayPal. |
| hasSource | #{order.hasSource} | Returns true if source tracking info is available. |
| hasSurveyFields | #{order.hasSurveyFields} | Returns true if the order includes survey data. |
| hasTax | #{order.hasTax} | Returns true if any tax was charged. |
| hasUSTax | #{order.hasUSTax} | Returns true if US Sales Tax was applied. |
| hasVAT | #{order.hasVAT} | Returns true if VAT was applied. |
| httpReferrer | #{order.httpReferrer} | The HTTP referrer URL. |
| id | #{order.id} | Internal Order ID. |
| isEmbedded | #{order.isEmbedded} | Returns true if the order occurred in an embedded storefront. |
| isFree | #{order.isFree} | Returns true if the order total was 0. |
| isGift | #{order.isGift} | Returns true if marked as a gift. |
| isProcessing | #{order.isProcessing} | Returns true if the order status is pending. |
| isRebill | #{order.isRebill} | Returns true if this is a subscription renewal. |
| isReturned | #{order.isReturned} | Returns true if the order was refunded/returned. |
| isTest | #{order.isTest} | Returns true if this was a test transaction. |
| language | #{order.language} | ISO language code. |
| notify | #{order.notify.___} | Notification contact information. |
| offerNames | #{order.offerNames} | Names of all product offers in the order. |
| originIp | #{order.originIp} | IP address of the purchaser. |
| payments | #{order.payments} | List of successful payments. |
| purchaserAddress | #{order.purchaserAddress.___} | Customer physical address object. |
| purchaserContact | #{order.purchaserContact.___} | Customer contact info object. |
| referrer | #{order.referrer} | The referrer source. |
| shippingTotal | #{order.shippingTotal} | Shipping fees in order currency. |
| shippingTotalUSD | #{order.shippingTotalUSD} | Shipping fees converted to USD. |
| siteDisplay | #{order.siteDisplay} | Display name of the store. |
| siteMainUrl | #{order.siteMainUrl} | The store's homepage/landing URL. |
| siteName | #{order.siteName} | Internal system name of the store. |
| siteSupportEmail | #{order.siteSupportEmail} | Support email configured for the store. |
| sourceCampaign | #{order.sourceCampaign} | Campaign parameter (from URL). |
| sourceKey | #{order.sourceKey} | Source key parameter. |
| sourceName | #{order.sourceName} | Source name parameter. |
| status | #{order.status} | Current order status (e.g., completed, pending). |
| statusChange | #{order.statusChange} | Timestamp of the last status change. |
| subTotal | #{order.subTotal} | Subtotal in order currency. |
| subTotalUSD | #{order.subTotalUSD} | Subtotal converted to USD. |
| surveyFieldValues | #{order.surveyFieldValues.___} | Map of survey keys to values. |
| tagNameString | #{order.tagNameString} | Comma-separated list of tag names. |
| tagString | #{order.tagString} | String version of tags (key=value). |
| tags | #{order.tags.___} | Map of tag names to values. |
| tax | #{order.tax} | Total tax amount (Sales Tax, VAT, JCT). |
| taxUSD | #{order.taxUSD} | Total tax amount converted to USD. |
| total | #{order.total} | Grand total in order currency. |
| totalUSD | #{order.totalUSD} | Grand total converted to USD. |
| type | #{order.type} | Order type. |
| url | #{order.url.___} | Link to the order receipt/page. |
| visibleItems | #{order.visibleItems} | List of items visible to the consumer. |
Subscription variables
These parameters are specific to subscription-based products within an export.
| Variable | Template Tag | Description |
|---|---|---|
| accountUrl | #{subscription.accountUrl} | URL of the customer management portal. |
| attributes | #{subscription.attributes} | Subscription attributes. |
| beginDate | #{subscription.beginDate} | Start date of the subscription. |
| coupon | #{subscription.coupon} | Active coupon code on the subscription. |
| customer | #{subscription.customer.___} | Customer contact object. |
| display | #{subscription.display} | Display name of the subscription. |
| endDate | #{subscription.endDate} | Expiration/Cancellation date. |
| hasPaymentMethod | #{subscription.hasPaymentMethod} | Returns true if a valid payment method is attached. |
| hasSource | #{subscription.hasSource} | Returns true if tracking source data exists. |
| isTest | #{subscription.isTest} | Returns true if it is a test subscription. |
| nextDunningStep | #{subscription.nextDunningStep} | The next scheduled dunning attempt. |
| nextDunningStepDate | #{subscription.nextDunningStepDate} | Date of the next dunning attempt. |
| nextPeriodDate | #{subscription.nextPeriodDate} | Date of the next scheduled rebill. |
| notify | #{subscription.notify.___} | Notification contact info. |
| paymentExpires... | #{subscription.paymentExpiresBeforeRenewalDate} | Returns true if card expires before next charge. |
| paymentMethodExpirationDate | #{subscription.paymentMethodExpirationDate} | Expiration date of the stored payment method. |
| productDisplay | #{subscription.productDisplay} | Display name of the product. |
| productName | #{subscription.productName} | System name of the product. |
| productPath | #{subscription.productPath} | URL path to the product. |
| quantity | #{subscription.quantity} | Quantity of the subscription. |
| reference | #{subscription.reference} | Unique API reference ID. |
| referrer | #{subscription.referrer} | Custom referrer identifier. |
| siteName | #{subscription.siteName} | Store name. |
| sourceCampaign | #{subscription.sourceCampaign} | Campaign tracking parameter. |
| sourceKey | #{subscription.sourceKey} | Source key tracking parameter. |
| sourceName | #{subscription.sourceName} | Source name tracking parameter. |
| status | #{subscription.status} | Active, Canceled, Deactivated, etc. |
| statusReason | #{subscription.statusReason} | Reason for the current status (e.g., "payment failed"). |
| successfulPeriodCount | #{subscription.successfulPeriodCount} | Count of successful charges. |
| tagNameString | #{subscription.tagNameString} | Tag names as a string. |
| tagString | #{subscription.tagString} | Tags (key=value) as a string. |
| tags | #{subscription.tags.___} | Map of tag objects. |
| terms | #{subscription.terms} | Description of billing terms (e.g., "$10 / month"). |
| totalPrice | #{subscription.totalPrice} | Rebill amount. |
| url | #{subscription.url.___} | URL to manage the subscription. |
Return variables
These parameters are specific to returns and refunds.
| Variable | Template Tag | Description |
|---|---|---|
| address | #{return.address.___} | Address associated with the return. |
| allItems | #{return.allItems} | List of all items in the return. |
| allProductNames | #{return.allProductNames} | Names of all products returned. |
| baseItems | #{return.baseItems} | Base products returned. |
| baseProductNames | #{return.baseProductNames} | Names of base products returned. |
| created | #{return.created} | Date/Time the return was processed. |
| currency | #{return.currency} | ISO currency code. |
| customer | #{return.customer.___} | Customer contact object. |
| discountTotal | #{return.discountTotal} | Total discount reversed. |
| discountTotalUSD | #{return.discountTotalUSD} | Total discount reversed in USD. |
| hasReview | #{return.hasReview} | Returns true if the return requires review. |
| hasTax | #{return.hasTax} | Returns true if tax was refunded. |
| hasUSTax | #{return.hasUSTax} | Returns true if US Tax was refunded. |
| hasVAT | #{return.hasVAT} | Returns true if VAT was refunded. |
| id | #{return.id} | Return ID. |
| isProcessing | #{return.isProcessing} | Returns true if return is pending. |
| isTest | #{return.isTest} | Returns true if this was a test return. |
| notify | #{return.notify.___} | Notification contact info. |
| original | #{return.original.___} | Object linking to the original order. |
| purchaserAddress | #{return.purchaserAddress.___} | Address of the purchaser. |
| purchaserContact | #{return.purchaserContact.___} | Contact info of the purchaser. |
| reasonText | #{return.reasonText} | Reason provided for the return. |
| review | #{return.review.___} | Review status object. |
| shippingTotal | #{return.shippingTotal} | Shipping cost refunded. |
| shippingTotalUSD | #{return.shippingTotalUSD} | Shipping cost refunded in USD. |
| siteDisplay | #{return.siteDisplay} | Store display name. |
| siteMainUrl | #{return.siteMainUrl} | Store URL. |
| siteName | #{return.siteName} | Store system name. |
| siteSupportEmail | #{return.siteSupportEmail} | Support email. |
| status | #{return.status} | Status of the return. |
| statusChange | #{return.statusChange} | Time of last status change. |
| subTotal | #{return.subTotal} | Subtotal refunded. |
| subTotalUSD | #{return.subTotalUSD} | Subtotal refunded in USD. |
| tax | #{return.tax} | Tax refunded. |
| taxUSD | #{return.taxUSD} | Tax refunded in USD. |
| total | #{return.total} | Total refund amount. |
| totalUSD | #{return.totalUSD} | Total refund amount in USD. |
| type | #{return.type} | Type of return. |
Updated 2 days ago