﻿<?xml version="1.0" encoding="utf-8"?>
<InstanceReport xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Version>2.2.0.7</Version>
  <hasSegments>false</hasSegments>
  <ReportName>Derivative financial instruments</ReportName>
  <ReportLongName>0212 - Disclosure - Derivative financial instruments</ReportLongName>
  <DisplayLabelColumn>true</DisplayLabelColumn>
  <ShowElementNames>false</ShowElementNames>
  <RoundingOption />
  <HasEmbeddedReports>false</HasEmbeddedReports>
  <Columns>
    <Column>
      <LabelColumn>false</LabelColumn>
      <Id>1</Id>
      <Labels>
        <Label Id="1" Label="6 Months Ended" />
        <Label Id="2" Label="Jun. 30, 2010" />
      </Labels>
      <CurrencyCode>USD</CurrencyCode>
      <FootnoteIndexer />
      <hasSegments>false</hasSegments>
      <hasScenarios>false</hasScenarios>
      <Segments />
      <Scenarios />
      <Units>
        <Unit>
          <UnitID>USD</UnitID>
          <UnitType>Standard</UnitType>
          <StandardMeasure>
            <MeasureSchema>http://www.xbrl.org/2003/iso4217</MeasureSchema>
            <MeasureValue>USD</MeasureValue>
            <MeasureNamespace>iso4217</MeasureNamespace>
          </StandardMeasure>
          <Scale>0</Scale>
        </Unit>
        <Unit>
          <UnitID>USDEPS</UnitID>
          <UnitType>Divide</UnitType>
          <NumeratorMeasure>
            <MeasureSchema>http://www.xbrl.org/2003/iso4217</MeasureSchema>
            <MeasureValue>USD</MeasureValue>
            <MeasureNamespace>iso4217</MeasureNamespace>
          </NumeratorMeasure>
          <DenominatorMeasure>
            <MeasureSchema>http://www.xbrl.org/2003/instance</MeasureSchema>
            <MeasureValue>shares</MeasureValue>
            <MeasureNamespace>xbrli</MeasureNamespace>
          </DenominatorMeasure>
          <Scale>0</Scale>
        </Unit>
        <Unit>
          <UnitID>Shares</UnitID>
          <UnitType>Standard</UnitType>
          <StandardMeasure>
            <MeasureSchema>http://www.xbrl.org/2003/instance</MeasureSchema>
            <MeasureValue>shares</MeasureValue>
            <MeasureNamespace>xbrli</MeasureNamespace>
          </StandardMeasure>
          <Scale>0</Scale>
        </Unit>
      </Units>
      <CurrencySymbol>$</CurrencySymbol>
    </Column>
  </Columns>
  <Rows>
    <Row>
      <Id>2</Id>
      <Label>Derivative financial instruments [Abstract]</Label>
      <Level>0</Level>
      <ElementName>us-gaap_DerivativeInstrumentsAndHedgesAbstract</ElementName>
      <ElementPrefix>us-gaap</ElementPrefix>
      <IsBaseElement>true</IsBaseElement>
      <BalanceType>na</BalanceType>
      <PeriodType>duration</PeriodType>
      <ShortDefinition>No definition available.</ShortDefinition>
      <IsReportTitle>false</IsReportTitle>
      <IsSegmentTitle>false</IsSegmentTitle>
      <IsSubReportEnd>false</IsSubReportEnd>
      <IsCalendarTitle>false</IsCalendarTitle>
      <IsTuple>false</IsTuple>
      <IsAbstractGroupTitle>true</IsAbstractGroupTitle>
      <IsEquityPrevioslyReportedAsRow>false</IsEquityPrevioslyReportedAsRow>
      <IsEquityAdjustmentRow>false</IsEquityAdjustmentRow>
      <IsBeginningBalance>false</IsBeginningBalance>
      <IsEndingBalance>false</IsEndingBalance>
      <IsReverseSign>false</IsReverseSign>
      <PreferredLabelRole />
      <IsEPS>false</IsEPS>
      <FootnoteIndexer />
      <Cells>
        <Cell>
          <Id>1</Id>
          <ShowCurrencySymbol>false</ShowCurrencySymbol>
          <IsNumeric>false</IsNumeric>
          <IsRatio>false</IsRatio>
          <DisplayZeroAsNone>false</DisplayZeroAsNone>
          <NumericAmount>0</NumericAmount>
          <RoundedNumericAmount>0</RoundedNumericAmount>
          <NonNumbericText />
          <NonNumericTextHeader />
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
          <DisplayDateInUSFormat>false</DisplayDateInUSFormat>
        </Cell>
      </Cells>
      <OriginalInstanceReportColumns />
      <ElementDataType>xbrli:stringItemType</ElementDataType>
      <SimpleDataType>string</SimpleDataType>
      <ElementDefenition>No definition available.</ElementDefenition>
      <IsTotalLabel>false</IsTotalLabel>
    </Row>
    <Row>
      <Id>3</Id>
      <Label>Derivative financial instruments</Label>
      <Level>1</Level>
      <ElementName>us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock</ElementName>
      <ElementPrefix>us-gaap</ElementPrefix>
      <IsBaseElement>true</IsBaseElement>
      <BalanceType>na</BalanceType>
      <PeriodType>duration</PeriodType>
      <ShortDefinition>No definition available.</ShortDefinition>
      <IsReportTitle>false</IsReportTitle>
      <IsSegmentTitle>false</IsSegmentTitle>
      <IsSubReportEnd>false</IsSubReportEnd>
      <IsCalendarTitle>false</IsCalendarTitle>
      <IsTuple>false</IsTuple>
      <IsAbstractGroupTitle>false</IsAbstractGroupTitle>
      <IsEquityPrevioslyReportedAsRow>false</IsEquityPrevioslyReportedAsRow>
      <IsEquityAdjustmentRow>false</IsEquityAdjustmentRow>
      <IsBeginningBalance>false</IsBeginningBalance>
      <IsEndingBalance>false</IsEndingBalance>
      <IsReverseSign>false</IsReverseSign>
      <PreferredLabelRole>verboselabel</PreferredLabelRole>
      <IsEPS>false</IsEPS>
      <FootnoteIndexer />
      <Cells>
        <Cell>
          <Id>1</Id>
          <ShowCurrencySymbol>false</ShowCurrencySymbol>
          <IsNumeric>false</IsNumeric>
          <IsRatio>false</IsRatio>
          <DisplayZeroAsNone>false</DisplayZeroAsNone>
          <NumericAmount>0</NumericAmount>
          <RoundedNumericAmount>0</RoundedNumericAmount>
          <NonNumbericText>&lt;!--DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" --&gt;
   &lt;!-- Begin Block Tagged Note 12 - us-gaap:DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock--&gt;
   &lt;div style="font-family: 'Times New Roman',Times,serif"&gt;
   &lt;div align="justify" style="font-size: 10pt; margin-top: 12pt"&gt;&lt;b&gt;Note 12 &amp;#8212; Derivative financial instruments&lt;/b&gt;
   &lt;/div&gt;
   &lt;div align="justify" style="font-size: 10pt; margin-top: 6pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;In 2009, the Company began entering into foreign currency forward contracts to reduce its
   exposure to foreign currency fluctuations of certain assets and liabilities denominated in foreign
   currencies. These forward contracts generally had a maturity of approximately 30&amp;#160;days and were not
   designated as hedges. Accordingly, these instruments were marked to market at each balance sheet
   date with changes in fair value recognized in earnings under the caption &amp;#8220;Other expense, net.&amp;#8221; The
   Company did not enter into any foreign currency forward contracts during the quarter ended June&amp;#160;30,
   2010.
   &lt;/div&gt;
   &lt;!-- Folio --&gt;
   &lt;!-- /Folio --&gt;
   &lt;/div&gt;
   &lt;!-- PAGEBREAK --&gt;
   &lt;div style="font-family: 'Times New Roman',Times,serif"&gt;
   &lt;div align="justify" style="font-size: 10pt; margin-top: 6pt"&gt;The following table reflects the effect of these derivative instruments on the consolidated
   statements of income for the three and six month periods ended June&amp;#160;30, 2010 and 2009 (in
   thousands):
   &lt;/div&gt;
   &lt;div align="center"&gt;
   &lt;table style="font-size: 10pt; text-align: left" cellspacing="0" border="0" cellpadding="0" width="100%"&gt;
   &lt;!-- Begin Table Head --&gt;
   &lt;tr valign="bottom"&gt;
       &lt;td width="40%"&gt;&amp;#160;&lt;/td&gt;
       &lt;td width="5%"&gt;&amp;#160;&lt;/td&gt;
       &lt;td width="1%"&gt;&amp;#160;&lt;/td&gt;
       &lt;td width="5%"&gt;&amp;#160;&lt;/td&gt;
       &lt;td width="1%"&gt;&amp;#160;&lt;/td&gt;
       &lt;td width="5%"&gt;&amp;#160;&lt;/td&gt;
       &lt;td width="1%"&gt;&amp;#160;&lt;/td&gt;
       &lt;td width="5%"&gt;&amp;#160;&lt;/td&gt;
       &lt;td width="1%"&gt;&amp;#160;&lt;/td&gt;
       &lt;td width="5%"&gt;&amp;#160;&lt;/td&gt;
       &lt;td width="1%"&gt;&amp;#160;&lt;/td&gt;
       &lt;td width="5%"&gt;&amp;#160;&lt;/td&gt;
       &lt;td width="1%"&gt;&amp;#160;&lt;/td&gt;
       &lt;td width="5%"&gt;&amp;#160;&lt;/td&gt;
       &lt;td width="1%"&gt;&amp;#160;&lt;/td&gt;
       &lt;td width="5%"&gt;&amp;#160;&lt;/td&gt;
       &lt;td width="1%"&gt;&amp;#160;&lt;/td&gt;
       &lt;td width="5%"&gt;&amp;#160;&lt;/td&gt;
       &lt;td width="1%"&gt;&amp;#160;&lt;/td&gt;
       &lt;td width="5%"&gt;&amp;#160;&lt;/td&gt;
       &lt;td width="1%"&gt;&amp;#160;&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr style="font-size: 8pt" valign="bottom"&gt;
       &lt;td nowrap="nowrap" align="justify"&gt;&amp;#160;&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td nowrap="nowrap" align="center" colspan="6"&gt;&lt;b&gt;Three Months Ended&lt;/b&gt;&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td nowrap="nowrap" align="center" colspan="6"&gt;&lt;b&gt;Six Months Ended&lt;/b&gt;&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr style="font-size: 8pt" valign="bottom"&gt;
       &lt;td nowrap="nowrap" align="justify"&gt;&amp;#160;&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td nowrap="nowrap" align="center" colspan="2"&gt;&lt;b&gt;Location of loss&lt;/b&gt;&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td nowrap="nowrap" align="center" colspan="6" style="border-bottom: 1px solid #000000"&gt;&lt;b&gt;June 30,&lt;/b&gt;&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td nowrap="nowrap" align="center" colspan="6" style="border-bottom: 1px solid #000000"&gt;&lt;b&gt;June 30,&lt;/b&gt;&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr style="font-size: 8pt" valign="bottom"&gt;
       &lt;td nowrap="nowrap" align="justify" style="border-bottom: 1px solid #000000"&gt;&lt;b&gt;Hedging instruments under ASC 815-10:&lt;/b&gt;&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td nowrap="nowrap" align="center" colspan="2" style="border-bottom: 1px solid #000000"&gt;&lt;b&gt;recognized in income&lt;/b&gt;&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td nowrap="nowrap" align="center" colspan="2" style="border-bottom: 1px solid #000000"&gt;&lt;b&gt;2010&lt;/b&gt;&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td nowrap="nowrap" align="center" colspan="2" style="border-bottom: 1px solid #000000"&gt;&lt;b&gt;2009&lt;/b&gt;&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td nowrap="nowrap" align="center" colspan="2" style="border-bottom: 1px solid #000000"&gt;&lt;b&gt;2010&lt;/b&gt;&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td nowrap="nowrap" align="center" colspan="2" style="border-bottom: 1px solid #000000"&gt;&lt;b&gt;2009&lt;/b&gt;&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
   &lt;/tr&gt;
   &lt;!-- End Table Head --&gt;
   &lt;!-- Begin Table Body --&gt;
   &lt;tr valign="bottom"&gt;
       &lt;td&gt;
   &lt;div style="margin-left:15px; text-indent:-15px"&gt;Foreign currency forward contracts
   &lt;/div&gt;&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td colspan="3" align="center"&gt;Other expense, net&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td align="justify"&gt;$&lt;/td&gt;
       &lt;td align="right"&gt;&amp;#8212;&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td nowrap="nowrap" align="justify"&gt;$&lt;/td&gt;
       &lt;td align="right"&gt;(897&lt;/td&gt;
       &lt;td nowrap="nowrap"&gt;)&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td align="justify"&gt;$&lt;/td&gt;
       &lt;td align="right"&gt;&amp;#8212;&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td nowrap="nowrap" align="justify"&gt;$&lt;/td&gt;
       &lt;td align="right"&gt;(635&lt;/td&gt;
       &lt;td nowrap="nowrap"&gt;)&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr style="font-size: 1px"&gt;
       &lt;td&gt;
   &lt;div style="margin-left:15px; text-indent:-15px"&gt;&amp;#160;
   &lt;/div&gt;&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
           &lt;td nowrap="nowrap" colspan="2" align="right" style="border-top: 3px solid #000000"&gt;&amp;#160;&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
           &lt;td nowrap="nowrap" colspan="2" align="right" style="border-top: 3px solid #000000"&gt;&amp;#160;&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
           &lt;td nowrap="nowrap" colspan="2" align="right" style="border-top: 3px solid #000000"&gt;&amp;#160;&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
           &lt;td nowrap="nowrap" colspan="2" align="right" style="border-top: 3px solid #000000"&gt;&amp;#160;&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
   &lt;/tr&gt;
   &lt;!-- End Table Body --&gt;
   &lt;/table&gt;
   &lt;/div&gt;
   &lt;/div&gt;
</NonNumbericText>
          <NonNumericTextHeader>&lt;!--DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" --&gt;
   &lt;!-- Begin Block Tagged Note</NonNumericTextHeader>
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
          <DisplayDateInUSFormat>false</DisplayDateInUSFormat>
        </Cell>
      </Cells>
      <OriginalInstanceReportColumns />
      <ElementDataType>us-types:textBlockItemType</ElementDataType>
      <SimpleDataType>textblock</SimpleDataType>
      <ElementDefenition>This element can be used to disclose the entity's entire derivative instruments and hedging activities disclosure as a single block of text. Describes an entity's risk management strategies, derivatives in hedging activities and non-hedging derivative instruments, the assets, obligations, liabilities, revenues and expenses arising there from, and the amounts of and methodologies and assumptions used in determining the amounts of such items.</ElementDefenition>
      <ElementReferences>Reference 1: http://www.xbrl.org/2003/role/presentationRef
 -Publisher FASB
 -Name Statement of Financial Accounting Standard (FAS)
 -Number 133
 -Paragraph 45

Reference 2: http://www.xbrl.org/2003/role/presentationRef
 -Publisher FASB
 -Name Statement of Financial Accounting Standard (FAS)
 -Number 133
 -Paragraph 44

</ElementReferences>
      <IsTotalLabel>false</IsTotalLabel>
    </Row>
  </Rows>
  <Footnotes />
  <NumberOfCols>1</NumberOfCols>
  <NumberOfRows>2</NumberOfRows>
  <HasScenarios>false</HasScenarios>
  <MonetaryRoundingLevel>UnKnown</MonetaryRoundingLevel>
  <SharesRoundingLevel>UnKnown</SharesRoundingLevel>
  <PerShareRoundingLevel>UnKnown</PerShareRoundingLevel>
  <HasPureData>false</HasPureData>
  <SharesShouldBeRounded>true</SharesShouldBeRounded>
</InstanceReport>
