Skip to main content
A fee sheet summarizes the estimated rate, payment, and closing costs for a loan at a specific rate. You can generate one for the rate selected on the loan, or for any eligible rate returned by pricing without selecting that rate. Retrieve the result as a PDF download or as structured GraphQL data to render your own fee sheet.
1

Request a fee sheet

Call feeSheet.createFeeSheetRequestForLoan for the loan, optionally naming an eligible product structure to quote.
2

Poll until it is ready

Poll feeSheet.feeSheetRequestStatus until the request reaches SUCCEEDED.
3

Retrieve the fee sheet

Download the PDF from the signed url, or query data to build your own fee sheet.

Request a fee sheet

Call feeSheet.createFeeSheetRequestForLoan with the loan and, optionally, an eligible product structure:
Variables:
A TBD loan cannot have a selected rate, so productStructureId is required when generating its fee sheet.
A successful request returns an ID to poll:
If feeSheetRequestId is null, the request was not created. This mutation reports creation failures through errorMessage rather than userErrors; show or log the message, and do not start polling.

Poll until the fee sheet is ready

Fee sheet generation is asynchronous. Poll feeSheet.feeSheetRequestStatus with the request ID:
Variables:
Poll about every two seconds and enforce a client-side timeout, such as 90 seconds.

Download the PDF

A completed request returns a signed download URL:
The URL is scoped to your organization and expires after three days. Treat it as short-lived rather than persisting it. Query a successful request again to obtain a newly signed URL.

Build your own fee sheet from structured data

After the request reaches SUCCEEDED, query data on the same feeSheetRequestStatus object. It returns the structured generated fee sheet, so clients can render their own experience without parsing the PDF.
data is null while the request is PENDING, PROCESSING, or FAILED. Poll only status and url, then request the larger structured payload after the request succeeds.
Variables:
The example selects common fields for a custom fee-sheet view. structure and fees expose additional fields in the GraphQL API Reference. In the current response, structure.rate, structure.ltv, and structure.dti are decimal fractions (0.065 means 6.5%), while structure.apr is a percentage.

Retries and duplicate requests

Requests with the same loan, product structure, and server-derived pricing inputs are idempotent. A retry reuses an active or successful request instead of generating another fee sheet. A retry after FAILED creates a new request. If polling times out or the client loses the request ID, call the creation mutation again with the same input and continue with the returned request ID.
  • TBD pricing — Price a loan before its street address is known and quote estimated fee sheets for eligible rates.
  • Full rate sheet optimizations — Retrieve complete pricing results and the EligibleProductStructure IDs you can pass as productStructureId.
  • Pricing optimizations overview — Learn about optimization objectives, constraints, and pricing response types.