
604 N.W.2d 611 (2000)
DATA DOCUMENTS, INC., a Nebraska Corporation, Appellant,
v.
POTTAWATTAMIE COUNTY, Appellee.
No. 97-1962.
Supreme Court of Iowa.
January 20, 2000.
*612 Drew H. Kouris, Council Bluffs, and Todd E. Frazier of Frazier, Teichman & Weiland, Omaha, Nebraska, for appellant.
Richard D. Crowl, Jr., County Attorney, for appellee.
Considered by McGIVERIN, C.J., and CARTER, NEUMAN, CADY and HARRIS,[*] JJ.
McGIVERIN, Chief Justice.
The controlling issue here is whether the district court correctly found that plaintiff Data Documents was not entitled to recover for damages it sustained when the Iowa County Treasurers' Group Limited, a party not named in these proceedings, allegedly breached a contract with plaintiff.
Upon our review, we conclude that the district court correctly determined that plaintiff was not entitled to a judgment for damages. Accordingly, we affirm the judgment of the district court.


*613 I. Background facts and proceedings.
Defendant Pottawattamie County is a member of the Iowa State County Treasurers' Association (ISCTA), an association made up of the county treasurers of the ninety-nine Iowa counties.
In 1989, Pottawattamie County was also a member of the Iowa County Treasurers' Group Limited (the Group), an unincorporated association of fifty-seven Iowa county treasurers. The Group was formed so that its county treasurers could join together for purposes of purchasing motor vehicle license renewal notices. The notices would then be sent out to vehicle owners in their respective counties before the owners' vehicle licenses would expire. By joining together, the county treasurers could order larger quantities of renewal notice forms and therefore purchase the forms at a lower price. Each member county had the right to join or leave the Group with thirty days notice.
An eight-member committee known as the Motor Vehicle Renewal Notice Committee (RNC) acted on behalf of the Group to acquire bids for the production and distribution of the motor vehicle renewal notice forms. Charles Pacha, Washington County Treasurer, was co-chairperson of the RNC in 1989-1990.
On March 28, 1989, Pacha, acting as co-chair of the RNC and on behalf of the Group, sent out bid requests to four printers, including the plaintiff, Data Documents, Inc. (Data), for the production of motor vehicle renewal notice forms (MVRNs or notices). The bid notice indicated that the number of monthly renewal notices would be approximately 1.25 million notices per annum.
On April 4, plaintiff Data Documents submitted a written proposal to the RNC for the printing and handling of the monthly renewal notices for the participating Iowa counties. Data's bid quoted a price of $74.00 per thousand, for 1.25 million notices per year, plus postage. This included the notices, and outside and reply envelopes that were to be sent to the vehicle owners.
Later, on April 12, Pacha informed Data by letter that the RNC had selected Data to produce and distribute the renewal notices, beginning in July 1989 and ending in June 1990. The parties later agreed to lower the quantity of notices to be produced to 1.2 million, with an adjusted price of $75.00 per thousand.
To keep costs down, Data printed all the notices ordered under the contract, including component parts, early in the contract period. A completed notice included the notice form, a reply envelope and an outside envelope. Data would receive a tape at the beginning of each month from the Iowa Department of Transportation, which contained all the information that would be included on the renewal notice forms. Data would fill in the owner's names and the vehicle descriptions on the forms. Data would then assemble the renewal notice forms, put them in envelopes, and forward the MVRNs to vehicle owners in each of the fifty-seven member counties whose vehicle licenses would be expiring in the next month. Data billed each individual county based on the number of notices sent to the vehicle owners in that county.
In July 1990, Data informed Pacha that 862,026 notices had been mailed, but that Data still had 337,974 notices and a lesser number of outside and reply envelopes on hand. Data requested that it be allowed to produce and mail at least 279,000 more renewal notices to deplete its remaining inventory.
Later, on October 5, 1990, Data sent an invoice to Pacha for $25,350 covering the alleged contract price for the unused notices and envelopes.
In response, Pacha, acting in behalf of the RNC and the Group, wrote to Data indicating his refusal to pay the invoice or to accept delivery of the remaining notices. Pacha indicated in the letter that Data might contact Midwest Printing Services, *614 the 1990-91 contract holder for MVRNs, to see if Midwest would be interested in purchasing Data Documents' unused supply of envelopes. The notices were at that time outdated and obsolete under current law.
Data contacted Midwest Printing Services and offered to sell Midwest its overstock of outside and return envelopes for $14.78 per thousand and $12.56 per thousand, respectively. Midwest Printing did not accept Data's offer. Lloyd Royer, a Midwest Printing employee, testified that Midwest had purchased outer envelopes in the past at $13.25 per thousand and return envelopes at $10.34 per thousand and that he would have bought the envelopes from Data at those prices. Royer also testified that Data showed no willingness to lower the price for the envelopes. Data made no other attempts to resell the envelopes.
Thereafter, Data filed a petition in district court against defendant Pottawattamie County on February 21, 1996. In its petition, Data alleged that defendant Pottawattamie County was a member of the Group and that the Group breached its agreement with Data by refusing to accept delivery of and tender payment for the remaining MVRNs and envelopes. The petition further alleged that defendant Pottawattamie County was jointly and severally liable for the Group's contractual obligations and asked for judgment against defendant Pottawattamie County in the amount of $25,350, the amount allegedly unpaid under the contract. Defendant's answer raised several affirmative defenses.
After a bench trial in this law action, the district court entered judgment in favor of defendant county. The court concluded that Data had a written contract with the Group concerning production of 1.2 million notices.
The court further concluded that the Group had breached its agreement with Data for the production of the MVRNs, that defendant county was jointly and severally liable for any debts incurred by the Group while defendant county was a member of the Group, but that Data was not entitled to recover damages because Data submitted no evidence concerning lost profits or costs associated with performance of the contract. The court thus concluded that there was no reasonable basis in the evidence from which to calculate damages sustained by Data and entered judgment for defendant.
In overruling Data's posttrial motion concerning damages, the court additionally found that Data failed to make a reasonable effort to resell the goods at a reasonable price and thus was not entitled to recover the remaining amount due under the contract pursuant to Iowa Code section 554.2709 (1989) (seller's right to recover contract price when seller is unable to resell the goods at a reasonable price or the circumstances reasonably indicate that such effort will be unavailing). The court also found that Data had presented no evidence regarding the market price for goods, expenses saved due to defendant's breach, or profits, and thus Data was not, alternatively, entitled to recover damages under Iowa Code section 554.2708.
Plaintiff Data appeals the district court's decision that it is not entitled to damages. Defendant Pottawattamie County cross-appeals concerning the court's conclusion that it is jointly and severally liable for damages stemming from the Group's alleged breach of contract.

II. Standard of review.
This law action was tried to the district court. Our standard of review in such cases is for correction of errors at law and the court's findings of fact have the effect of a special verdict. Iowa R.App. P. 4; accord Dow City Cemetery Ass'n v. Defiance State Bank, 596 N.W.2d 77, 80 (Iowa 1999). In such cases, the court's findings of fact are binding upon us if supported by substantial evidence. Iowa R.App. P. 14(f)(1). "Evidence is substantial if a reasonable mind could accept it as adequate to reach the same findings." *615 Bluffs Dev. Co. v. Board of Adjustment, 499 N.W.2d 12, 14 (Iowa 1993). Under this standard, we view the evidence in a light most favorable to upholding the district court's judgment. Dow City Cemetery Ass'n, 596 N.W.2d at 80.

III. The remedies available to plaintiff.
The district court concluded, based on the exchange of letters, that Data had an enforceable written contract with the Group for the production and handling of 1.2 million license renewal notices and accompanying envelopes and that the Group breached that agreement. Additionally, the court concluded that defendant Pottawattamie County was jointly and severally liable for damages sustained by Data due to the Group's breach of contract, but that Data was not entitled to damages due to inadequate proof thereof.
We believe that substantial evidence supports the district court's conclusion that there was a written contract between Data and the Group and that the Group breached that contract. Plaintiff Data asserts it was entitled to recover the remaining contract price under Iowa Code section 554.2709(1)(b), Iowa's adoption of the Uniform Commercial Code (UCC), or in the alternative, to recover under section 554.2708. For purposes of analysis, and assuming without deciding that the defendant county is jointly and severally liable for the Group's breach of contract, we proceed to address the more controlling issue of whether, based on this record, the trial court correctly denied damages to Data.

A. Iowa Code § 554.2709.
Data contends that the district court's conclusion that Data was not entitled to damages was contrary to Iowa Code section 554.2709. That section provides in pertinent part:
1. When the buyer fails to pay the price as it becomes due the seller may recover, together with any incidental damages under the next section, the price
....
b. of goods identified to the contract if the seller is unable after reasonable effort to resell them at a reasonable price or the circumstances reasonably indicate that such effort will be unavailing.
....
3. After the buyer has wrongfully rejected or revoked acceptance of the goods or has failed to make a payment due or has repudiated (section 554.2610), a seller who is held not entitled to the price under this section shall nevertheless be awarded damages for nonacceptance under the preceding section [section 554.2708].
(Emphasis added.) As indicated by the above-quoted language, evidence concerning the remaining amount due under the contract is only the first step to recover damages under Iowa Code section 554.2709. The party seeking to recover damages under that section must also present sufficient evidence that a reasonable effort was made to resell the goods at a reasonable price or that such effort would be unavailing. See Lupofresh, Inc. v. Pabst Brewing Co., 505 A.2d 37, 40 (Del.Super.Ct.1985), aff'd, 510 A.2d 487 (Del.1986). The burden of proving that the goods could not be resold rests with the plaintiff. Karen v. Cane, 152 Misc.2d 639, 578 N.Y.S.2d 85, 87 (Civ.Ct.1991).
Data produced and was compensated for 862,026 notices, including envelopes, that were sent to motor vehicle owners in the Group's fifty-seven counties. Pacha, acting on behalf of the RNC and the Group, refused to accept the 337,974 remaining notices and envelopes. Based on these numbers, at the revised contract price of $75.00 per thousand, Data claims damages of $25,348. The district court concluded that Data was not entitled to recover the amount due remaining under the contract, as allowed under Iowa Code section *616 554.2709, because Data failed to make a reasonable effort to resell the notices and remaining supplies at a reasonable price. Data contends on appeal that this finding is incorrect.
Upon our review, we agree with the district court's finding on this issue. The record shows that Data made an offer to sell its remaining stock of envelopes to Midwest Printing, but that Midwest Printing did not accept the offer. There was testimony that Midwest Printing would have bought the envelopes at a lower price. This evidence shows that there was a market for the envelopes and thus Data could not contend that efforts to resell the envelopes would be unavailing. Data, however, presented no other evidence that it made attempts to resell or dispose of its remaining stock of envelopes. Additionally, although the renewal notice forms could not be resold, Data presented no evidence as to the cost of producing or the residual value of the unused notices or their proportionate share of the claimed contract price, which might have enabled the court to calculate damages for the portion of the contract price representing the unused forms.
Based on this evidence or lack of evidence, we agree with the district court's finding, that plaintiff's attempt to sell its overstock did not constitute a reasonable effort, is supported by the record. We therefore conclude that the district court properly found that Data was not entitled to recover the remaining amount due under the contract under Iowa Code section 554.2709. We affirm the district court on this issue.

B. Iowa Code section 554.2708.
We next consider whether Data was entitled to recover damages under Iowa Code section 554.2708, which states in pertinent part:
1. Subject to subsection 2 and to the provisions of this Article with respect to proof of market price (section 554.2723), the measure of damages for nonacceptance or repudiation by the buyer is the difference between the market price at the time and place for tender and the unpaid contract price together with any incidental damages provided in this Article (section 554.2710), but less expenses saved in consequence of the buyer's breach.

2. If the measure of damages provided in subsection 1 is inadequate to put the seller in as good a position as performance would have done then the measure of damages is the profit (including reasonable overhead) which the seller would have made from full performance by the buyer, together with any incidental damages provided in this Article (Section 554.2710), due allowance for costs reasonably incurred and due credit for payments or proceeds of resale.
(Emphasis added.) As indicated by the above-quoted language, a seller seeking to recover damages under Iowa Code section 554.2708 must present sufficient evidence concerning market price, lost profits, and costs saved in consequence of the buyer's breach in order to recover damages under that section.
As a general rule, the party seeking damages bears the burden of proving them; if the record is uncertain and speculative as to whether a party has sustained damages, the factfinder must deny recovery. See Sun Valley Iowa Lake Ass'n v. Anderson, 551 N.W.2d 621, 641 (Iowa 1996); Yost v. City of Council Bluffs, 471 N.W.2d 836, 840 (Iowa 1991) (lost profits are permissible item of damages so long as the profits are not based on conjecture and speculation). To recover damages under UCC section 2-708, the seller bears the burden of proving market price or market value of goods refused by the buyer. Karen, 578 N.Y.S.2d at 87; accord Sprague v. Sumitomo Forestry Co., 104 Wash.2d 751, 709 P.2d 1200, 1205 (1985). Although proof of damages need not be shown with mathematical certainty, see Uniform Commercial Code Comment 1, Iowa Code Annotated § 554.1106 (West *617 1995), plaintiff must at least present sufficient evidence to allow the factfinder to make an approximate estimate of the loss. Oral-X Corp. v. Farnam Cos., Inc., 931 F.2d 667, 671 (10th Cir.1991).
The district court concluded that Data was not entitled to damages under Iowa Code section 554.2708 because Data presented no proof concerning market price of the unused envelopes, expenses saved in consequence of the buyer's breach or profits made from the contract. Data contends on appeal that this was error.
Upon our review under this record, we agree with the district court's finding. As found by the district court, Data presented no evidence concerning the market price of the overstock envelopes, any profits it made or would have made from the contract, or any expenses it saved as a result of the Group's alleged breach of contract. An example of costs saved would be the cost of filling in names and vehicle information on the forms, placing the forms in the envelopes, and mailing them to vehicle owners. The only evidence presented concerning the amount of damages was the alleged remaining contract price claimed. The only witness who testified on Data's behalf concerning damages was account representative Tom Marsden. Mardsen testified that there were a number of expenses that Data did not have to incur because the remaining envelopes were not processed or mailed, but did not know what those saved expenses might be. Marsden also had "no idea" if Data was asking for lost profits. Without such proof, the court believed that Data's damages were too speculative. We therefore conclude that the district court properly determined that Data was not entitled to recover damages under Iowa Code section 554.2708. Cf. Karen, 578 N.Y.S.2d at 88 (plaintiff not entitled to damages under UCC § 2-708, and judgment properly entered in favor of defendant, where plaintiff failed to present evidence establishing difference between market price and unpaid contract price).
In light of our conclusion that the district court correctly determined that Data is not entitled to damages under the requirements of Iowa Code sections 554.2708 or 554.2709, we need not address the issues raised in defendant county's cross-appeal as those issues are now moot.

IV. Disposition.
We agree with the district court's decision that plaintiff Data Documents failed to present sufficient evidence to avail itself of the remedies available under Iowa Code sections 554.2708 and 554.2709, and that the district court therefore properly granted judgment for defendant Pottawattamie County concerning the issue of damages. We therefore affirm the district court's decision.
AFFIRMED ON APPEAL; CROSS APPEAL MOOTED.
NOTES
[*]  Retired justice assigned by order pursuant to Iowa Code section 602.9206 (1999).
