Skype End User License Agreement

IMPORTANT – PLEASE READ CAREFULLY

Please note the following preliminary terms, which use some of the definitions set out in paragraph 1 below:

No Emergency Calls: Skype Software does not and does not intend to support or carry emergency calls. Please also see paragraphs 3.6 and 6.2 below.

This Agreement:This Agreement, and any new versions, between Skype and You, covers all Your use of Skype Software from any terminals where Skype Software has been installed, by You or by third parties. You can accept this Agreement by clicking on the ACCEPT button or similar buttons or links as may be designated by Skype.

Additional Terms:Your agreement with Skype will also include the Additional Terms (as defined below). The Additional Terms shall include, but are not limited to, the terms and policies set out in paragraph 7 below. In order to use the Skype Services, You must accept the Additional Terms. You can accept the Additional Terms by (i) clicking to accept or agree where this option is made available to You, or (ii) by actually using the Skype Services, in which case You acknowledge and agree that Skype will treat such use as acceptance of the applicable terms. You acknowledge and agree that by accepting this Agreement and the Additional Terms you are entering into a legally binding contract, which collectively is referred to below as the “Terms”. If there is any contradiction between the Additional Terms and this Agreement, then the Additional Terms shall take precedence in relation to the relevant Skype Service. You should print off or save a copy of the Terms for your records.

Electronic Signature(s): You hereby agree to the use of electronic communication in order to enter into contracts, place orders and create other records and to the electronic delivery of notices, policies and records of transactions initiated or completed through the Skype Software. Furthermore, You hereby waive any rights or requirements under any laws or regulations in any jurisdiction which require an original (non-electronic) signature or delivery or retention of non-electronic records, to the extent permitted under applicable mandatory law.

Jurisdiction’s Restrictions: If the law of Your country prohibits You from downloading or using Skype Software because You are under the age limit or because the Skype Services are not allowed in Your country, please don’t use it. 

Table of contents:
Definitions 
License and Restrictions 
What You should and should not expect from Skype 
What we expect from You 
Term, Termination, Updates 
Disclaimer of Warranties and Limitation of Liability 
Additional Terms 
Miscellaneous 

1. Definitions 
1.1 The following terms and expressions shall have the following meanings:

Additional Terms: the terms and conditions and policies applicable to Your use of the Skype Software and the Skype Services, in addition to this Agreement.

Affiliate: any corporation, company or other entity that directly or indirectly controls, is controlled by, or is under common control with, Skype. For the purpose of this definition, the word "control" shall mean the direct or indirect ownership of more than fifty percent (50%) of the outstanding voting stock of the corporation, company, or other entity.

Agreement: this End User License Agreement, as may be renewed and/or amended from time to time.

Broadcast ToS: has the meaning given to it in paragraph 2.9.

Content: means any and all content consisting of text, sounds, pictures, photos, video and/or any type of information or communications.

Documentation: any online or otherwise enclosed documentation provided by Skype.

Effective Date: the date on which this Agreement is entered into by clicking on the ACCEPT button as stated above or upon installation or use of the Skype Software by You, whichever occurs earlier.

Emergency Service(s): means services that connect a user to emergency services personnel or public safety answering points pursuant to applicable local and or national regulatory requirements.

IP Rights: means (i) patents, pending patent applications, designs, trade marks and trade names (whether registered or unregistered), copyright and related rights, database rights, knowhow and confidential information; (ii) all other intellectual property rights and similar or equivalent rights anywhere in the world which currently exist or are recognised in the future; and (iii) applications, extensions and renewals in relation to any such rights.

Password: refers to a code You select, which, in combination with the User ID, gives You access to Your User Account.

Skype: refers to the company established under the laws of Luxembourg, Skype Software S.a.r.l, with its address at 22/24 Boulevard Royal L-2449 Luxembourg (B100467), VAT no. (LU20180239).

Skype API: application program interface consisting of the set of routines utilized by the Skype Software to provide the Skype Software functionality for a given platform or operating system, Skype API being included in or linked to the Skype Software as well as any future versions, improvements, developments, programming fixes, updates and upgrades thereof.

Skype Online Material: the Skype buttons and widgets available for download on the Skype Website at http://www.skype.com/share/buttons/, as such may be changed from time to time by Skype in its sole discretion.

Skype Promotional Materials: any and all trademarks, names, signs, logos, banners, and any other materials, in whatever form, owned and/or used by Skype for the promotion of its company, its products and activities, other than the Skype Online Material. 

Skype Services: the Skype Website and any other products and services made available to You by Skype or its Affiliates, in addition to the Skype Software.

Skype Software: the software distributed by Skype for internet communication applications, including without limitation the Skype API, UI and Documentation, as well as any future versions, improvements, developments, programming fixes, updates and upgrades thereof.

Skype Staff: the officers, directors, employees and agents of Skype or its Affiliates, or any other persons hired by Skype or its Affiliates.

Skype Website: any and all elements, contents and the ‘look and feel’ of the website available under the URL, www.skype.com , – among other URL’s –, from which website the Skype Software can be downloaded.

Terms: has the meaning given in the “Additional Terms” preliminary term above.

UI: the user interface of the Skype Software.

User Account: refers to the account with User ID and Password that You create for Your use of the Skype Software.

User ID: refers to an identification code You selected, which in combination with the Password, gives access to Your User Account.

You: You, the end user of the Skype Software, also used in the form “Your” where applicable.


1.2 References to the singular include the plural and vice versa, and references to one gender include the other gender.

1.3 Any phrase introduced by the expressions “including”, “include”, “in particular” or any similar expression shall be construed as illustrative and shall not limit the sense of the words preceding those terms. 

2. License and Restrictions 
2.1 License: Subject to the terms of this Agreement, Skype hereby grants You a limited, personal, non-commercial, non-exclusive, non-sublicensable, non-assignable, free of charge license to download, install and use the Skype Software on Your computer, phone or PDA for the sole purpose of personally using the internet communication applications provided by Skype and any other applications that may be explicitly provided by Skype. You are allowed to use the Skype Software at university or any other educational institution, subject to paragraph 4.4 below and in accordance with this Agreement and any applicable Additional Terms. You are allowed to use the Skype Software at work to make communications relating to Your business in accordance with this Agreement and any applicable Additional Terms (such as the Terms of Service referred to in paragraph 7 below if You use the payable VoIP products and/or are a Member or an Administrator of a Business Control Panel).

2.2 No Granting of Rights to Third Parties: You will not sell, assign, rent, lease, distribute, export, import, act as an intermediary or provider, or otherwise grant rights to third parties with regard to the Skype Software or any part thereof.

2.3 No Modifications: You will not undertake, cause, permit or authorize the modification, creation of derivative works, translation, reverse engineering, decompiling, disassembling or hacking of the Skype Software or any part thereof except to the extent permitted by law.

2.4 Third Parties: The Skype Software may be incorporated into, and may incorporate itself, software and other technology owned and controlled by third parties. Any such third party software or technology that is incorporated in the Skype Software falls under the scope of this Agreement. Any and all other third party software or technology that may be distributed together with the Skype Software will be subject to You explicitly accepting a license agreement with that third party. You acknowledge and agree that You will not enter into a contractual relationship with Skype or its Affiliates regarding such third party software or technology and you will look solely to the applicable third party and not to Skype or its Affiliates to enforce any of your rights.

2.5 Exclusive Ownership: Any and all IP Rights in the Skype Software, the Skype Website, the Skype Online Material and the Skype Promotional Materials are and shall remain the exclusive property of Skype and/or its licensors. Nothing in this Agreement intends to transfer any such IP Rights to, or to vest any such IP Rights in, You. You are only entitled to the limited use of the IP Rights granted to You in this Agreement. You will not take any action to jeopardize, limit or interfere with Skype’s IP Rights. Any unauthorized use of Skype’s IP Rights is a violation of this Agreement as well as a violation of intellectual property laws and treaties, including without limitation copyright laws and trademark laws. All title and IP Rights in and to any third party content that is not contained in the Skype Software, but may be accessed through use of the Skype Software, is the property of the respective content owners and may be protected by applicable copyright or other intellectual property laws and treaties.

2.6 No Removal of Notices: You agree that You will not remove, obscure, make illegible or alter any notices or indications of the IP Rights and/or Skype’s rights and ownership thereof, whether such notice or indications are affixed on, contained in or otherwise connected to any materials.

2.7 Use of Skype API.

2.7.1 You may make use of the Skype API provided that:

(i) You comply with the Skype API Terms of Use at http://www.skype.com/legal/terms/api/ ; 

(ii) Your use of the Skype API is for legitimate purposes only and shall not adversely affect the functionality or performance of the Skype Software or services provided by Skype; and

(iii) You will monitor the Skype Website in order to ensure that You are aware of any changes in the Skype API Terms of Use. If such changes are not acceptable to You, You will immediately stop using the Skype API and, where applicable, the Skype Software. 

2.7.2 If You are interested in using the Skype API for a purpose which is not permitted under this Agreement or the Skype API Terms of Use, You will have to obtain Skype’s prior written consent and explicitly agree upon any further commercial terms.

2.8 Skype Promotional Materials: Nothing in this Agreement will give You any right to use the Skype Promotional Materials. 

2.9 Broadcasts Using Skype Software: NExcept as expressly permitted in the Broadcast Terms and Conditions at http://www.skype.com/legal/terms/broadcast/ ("Broadcast ToS"), You are not allowed to use the Skype Software in connection with any Broadcasts (as defined in such Broadcast ToS).

3. What You should and should not expect from Skype 
3.1 No Warranties:Installing Skype Software enables You to communicate with other people. Skype cannot guarantee that You will always be able to communicate with other people, nor can Skype guarantee that You can communicate without disruptions, delays or communication-related flaws or that all Your communications shall always be delivered to other people.

3.2 Content
3.2.1 Content of Communications:The content of the communication spread by the use of the Skype Software is entirely the responsibility of the person from whom such content originated. You understand, therefore, that by using the Skype Software and the Skype Services You may be exposed to content that is offensive, harmful to minors, indecent or otherwise objectionable, and that You use the Skype Software and the Skype Services at Your own risk.

3.2.2 You acknowledge and agree that You are solely responsible for any Content that You upload, submit, post, transmit or display through the Skype Software (“Use” or “Used”) and that Skype is not responsible to You or any third party for any Content that is Used by You or any other Skype Software user.

3.2.3 Third Party IP Rights: You agree that You shall not Use any Content that is subject to any third party IP Rights, unless you have a licence or specific permission from the owner to Use such third party content, and to grant Skype the licence set out in paragraph 3.2.4 below.

3.2.4 Licence: You hereby grant to Skype a non-exclusive, worldwide, perpetual, irrevocable, royalty-free, sublicensable and transferable licence to Use the Content in any media in connection with the Skype Services.

3.2.5 Removal of Content: Skype reserves the right (but shall have no obligation) to decide whether any Content that You Use complies with this Agreement and any Additional Terms. Skype may in its sole discretion remove such Content and/or terminate this Agreement and Your User Account if You Use any Content that is in breach of this Agreement and/or any Additional Terms at any time and without prior notice to You.

3.3 Utilization of Your Computer:Skype Software may utilize the processor and bandwidth of the computer (or other applicable device) You are utilizing, for the limited purpose of facilitating the communication between You and third parties. Skype will use its commercially reasonable efforts to protect the privacy and integrity of the computer resources (or other applicable device) You are utilizing and of Your communication, however Skype cannot give any warranties in this respect.

3.4 New Versions of the Skype Software:Skype, in its sole discretion, reserves the right to add additional features or functions, or to provide programming fixes, updates and upgrades, to the Skype Software. Skype has no obligation to make available to You any subsequent versions of the Skype Software. You may have to enter into a renewed version of this Agreement, in the event you want to download, install or use a new version of the Skype Software. 

3.5 Suspension: Skype may, in its sole discretion and to the maximum extent permitted within Your jurisdiction, modify or discontinue or suspend Your ability to use any version of the Skype Software, and/or disable any Skype Software You may already have accessed or installed without any notice to You, for the repair, improvement, and/or upgrade of the underlying technology or for any other justifiable reason, including but not limited to, circumstances where You, at Skype’s discretion, are in breach of the Terms, creating problems, possible legal liabilities, or engaging in fraudulent, immoral or illegal activities, or for other similar reasons.

3.6 No Emergency Calls: The Skype Software is not intended to support or carry emergency calls to any type of hospital, law enforcement agency, medical care unit or any other kind of Emergency Service. You acknowledge and agree that: (i) Skype is not required to offer access to Emergency Services under any applicable local and/or national rules, regulation or law; (ii) You must make additional arrangements to access Emergency Services and it is Your responsibility to purchase (separately from the Skype Software), traditional wireless or landline telephone services to obtain such access; and (iii) Skype is not a replacement for Your primary telephone service.

4. What we expect from You 
4.1 Lawful purposes: You will use the Skype Software solely for lawful purposes. In this respect You may not, without limitation (a) intercept or monitor, damage or modify any communication which is not intended for You; (b) use any type of spider, virus, worm, trojan-horse, time bomb or any other codes or instructions that are designed to distort, delete, damage or disassemble the Skype Software or the communication; (c) send any unsolicited communication not permitted by applicable law (d) expose any third party to material which is offensive, harmful to minors, indecent or otherwise objectionable in any way; (e) use the Skype Software to cause or intend to cause embarrassment or distress to, or to threaten, harass or invade the privacy of, any third party; or (f) use (including as part of your Skype Name) any material or content that is subject to any third party proprietary rights, unless you have a licence or permission from the owner of such rights.

4.2 Representations: You represent and warrant that You are authorized to enter into and comply with the Terms. Furthermore, You represent and warrant that You will at any and all times meet with Your obligations under the Terms, as well as any and all laws, regulations and policies that may apply to the use of the Skype Software and/or the Skype Services.

4.3 Indemnification: YOU AGREE TO INDEMNIFY, DEFEND AND HOLD SKYPE AND ITS AFFILIATES HARMLESS FROM AND AGAINST ANY AND ALL LIABILITY AND COSTS, INCLUDING REASONABLE ATTORNEYS’ FEES INCURRED BY SUCH PARTIES, IN CONNECTION WITH OR ARISING OUT OF YOUR (A) VIOLATION OR BREACH OF ANY TERM OF THIS AGREEMENT OR ANY APPLICABLE LAW OR REGULATION, WHETHER OR NOT REFERENCED HEREIN, OR (B) VIOLATION OF ANY RIGHTS OF ANY THIRD PARTY, OR (C) USE OR MISUSE OF THE SKYPE SOFTWARE, OR (D) COMMUNICATION SPREAD BY MEANS OF THE SKYPE SOFTWARE.

4.4 Utilization of Your Computer: If Your use of the Skype Software is dependant upon the use of a processor and bandwidth owned or controlled by a third party, You acknowledge and agree that Your licence to use the Skype Software is subject to You obtaining consent from the relevant third party for such use. You represent and warrant that by accepting this Agreement and using the Skype Software, You have obtained such consent.

4.5 Export Restrictions: Skype Software may be subject to international rules that govern the export of software. You shall comply with all applicable international and national laws that apply to the Skype Software as well as end-user, end-use and destination restrictions issued by national governments. This software is controlled under ECCN 5D992.b.1 of the Export Administration Regulations (“EAR”) per CCATS # G047973 and thus may not be exported or re exported to or downloaded by any person in any countries controlled for anti terrorism reasons under the EAR, which include Iran, North Korea, Cuba, Syria and Sudan. EAR 742.15(a), Title 15 Code of Federal Regulations. Moreover, the software may not be exported or re exported to or downloaded by any person or entity subject to US sanctions regardless of location. See http://www.bis.doc.gov/ComplianceAndEnforcement/ListsToCheck.htm and EAR Part 736. Skype is making this software available to You for download only on the condition that You certify that You are not such a person or entity and that the download is not otherwise in violation of US export control and sanctions regulations.

4.6 Government Users: The Skype Software and Documentation are "commercial computer software" and "commercial computer software documentation," respectively, as such terms are used in United States Federal Acquisition Regulations Section 12.212. Any use, duplication or disclosure of the Skype Software or the Documentation by or on behalf of the U.S. Government is subject to restrictions as set forth in this Agreement.

5. Term, Termination, Updates 
5.1 Term: This Agreement will be effective as of the Effective Date and will remain effective until terminated by either Skype or You as set out below. The Additional Terms will be effective as of the date upon which they are accepted by You or You use the relevant Skype Service (as applicable), and will remain effective until terminated by either Skype or You as set out below and/or in the applicable terms.

5.2 Termination:You may terminate the Terms with immediate effect at any time. Without limiting other remedies, Skype may limit, suspend, or terminate this license and Your use of Skype Software and Skype Services, prohibit access to the Skype Website and delete Your User Account and/or User ID, with immediate effect, automatically and without recourse to the courts, if we think that You are in breach of the Terms, creating problems, legal liabilities (actual or potential), infringing someone else’s intellectual property rights, engaging in fraudulent, immoral or illegal activities, or for other similar reasons. Skype shall effect such termination by providing notice to You to the email address You have provided, and/or by preventing Your access to Your User Account. We reserve the right to cancel User Accounts that have been inactive for more than one (1) year.

5.3 Consequences of Termination: Upon termination of this Agreement and the Additional Terms: (a) all licenses and rights to use the Skype Software and the Skype Services shall immediately terminate; (b) You will immediately cease any and all use of the Skype Software and Skype Services; and (c) You will immediately remove the Skype Software from all hard drives, networks and other storage media and destroy all copies of the Skype Software in Your possession or under Your control.

5.4 New Versions: Skype reserves the right to change this Agreement at any time by publishing the revised Agreement on the Skype Website. The revised Agreement shall become effective within thirty (30) days of such publication, unless You expressly accept the revised Agreement earlier by clicking on the accept button. Your express acceptance or Your continued use of the Skype Software after expiry of the notice period of thirty (30) days, shall constitute Your acceptance to be bound by the terms and conditions of the revised Agreement. You can find the latest version of this Agreement at http://www.skype.com/legal/eula . Skype reserves the right to change any of the Additional Terms from time to time and such changes shall become effective either within thirty (30) days of publication of the revised version on the Skype Website (unless You expressly accept the revised terms earlier by clicking on the accept button if this option is made available), or within the timeframe set out in the applicable terms if different.

6. Disclaimer of Warranties and Limitation of Liability 
6.1 No Warranties: THE SKYPE SOFTWARE IS PROVIDED “AS IS” WITH NO WARRANTIES WHATSOEVER; SKYPE DOES NOT, EITHER EXPRESSED, IMPLIED OR STATUTORY, MAKE ANY WARRANTIES, CLAIMS OR REPRESENTATIONS WITH RESPECT TO THE SKYPE SOFTWARE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OR CONDITIONS OF QUALITY, PERFORMANCE, NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR USE FOR A PARTICULAR PURPOSE. SKYPE FURTHER DOES NOT REPRESENT OR WARRANT THAT THE SKYPE SOFTWARE WILL ALWAYS BE AVAILABLE, ACCESSIBLE, UNINTERRUPTED, TIMELY, SECURE, ACCURATE, COMPLETE AND ERROR-FREE OR WILL OPERATE WITHOUT PACKET LOSS, NOR DOES SKYPE WARRANT ANY CONNECTION TO OR TRANSMISSION FROM THE INTERNET, OR ANY QUALITY OF CALLS MADE THROUGH THE SKYPE SOFTWARE.

6.2 Specific Disclaimer Of Liability For Emergency Services: SKYPE DOES NOT PROVIDE CONNECTIONS TO EMERGENCY SERVICES VIA THE SKYPE SOFTWARE. NEITHER SKYPE NOR ITS OFFICERS, EMPLOYEES OR AFFILIATES MAY BE HELD LIABLE FOR ANY CLAIM, DAMAGE, OR LOSS, (AND YOU HEREBY WAIVE ANY AND ALL SUCH CLAIMS OR CAUSES OF ACTION), ARISING FROM OR RELATING TO YOUR INABILITY TO USE THE SKYPE SOFTWARE TO CONTACT EMERGENCY SERVICES, AND YOUR FAILURE TO MAKE ADDITIONAL ARRANGEMENTS TO ACCESS EMERGENCY SERVICES IN ACCORDANCE WITH PARAGRAPH 3.6 ABOVE.

6.3 Your own Risk: You acknowledge and agree that the entire risk arising out of Your use of the Skype Software remains with You, to the maximum extent permitted by law.

6.4 No Liability: The Skype Software is being provided to You free of charge. ACCORDINGLY, YOU ACKNOWLEDGE AND AGREE THAT SKYPE, ITS AFFILIATES, ITS LICENSORS AND THE SKYPE STAFF WILL HAVE NO LIABILITY IN CONNECTION WITH OR ARISING FROM YOUR USE OF THE SKYPE SOFTWARE, AS SET FORTH BELOW. YOUR ONLY RIGHT OR REMEDY WITH RESPECT TO ANY PROBLEMS OR DISSATISFACTION WITH THE SKYPE SOFTWARE IS TO IMMEDIATELY DEINSTALL AND CEASE USE OF SUCH SKYPE SOFTWARE.

6.5 Limitation of Liability: IN NO EVENT SHALL SKYPE, ITS AFFILIATES, ITS LICENSORS OR THE SKYPE STAFF BE LIABLE, WHETHER IN CONTRACT, WARRANTY, TORT (INCLUDING NEGLIGENCE), PRODUCT LIABILITY OR ANY OTHER FORM OF LIABILITY, FOR:

6.5.1 ANY INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION ANY LOSS OF OR CORRUPTION TO DATA, INTERRUPTION, COMPUTER FAILURE OR PECUNIARY LOSS) ARISING OUT OF THE USE OR INABILITY TO USE THE SKYPE SOFTWARE; AND

6.5.2 ANY LOSS OF INCOME, BUSINESS OR PROFITS (WHETHER DIRECT OR INDIRECT) ARISING OUT OF THE USE OR INABILITY TO USE THE SKYPE SOFTWARE;

6.5.3 ANY LOSS OR DAMAGE WHICH MAY BE INCURRED BY YOU AS A RESULT OF;

(I) ANY DISRUPTIONS OR DELAYS IN ANY COMMUNICATION WHEN USING THE SKYPE SOFTWARE;

(II) THE SUSPENSION OR TERMINATION OF THIS AGREEMENT BY YOU OR BY SKYPE FOR ANY REASON; AND

(III) THE RELEASE OR THE DECISION NOT TO RELEASE NEW VERSIONS OF THE SKYPE SOFTWARE TO YOU.

6.6 THE LIMITATIONS ON SKYPE’S LIABILITY TO YOU IN PARAGRAPH 6.5 ABOVE SHALL APPLY WHETHER OR NOT SKYPE, ITS AFFILIATES OR THE SKYPE STAFF HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSSES OR DAMAGES ARISING.

6.7 NOTHING IN THIS AGREEMENT IS INTENDED TO EXCLUDE OR RESTRICT OR SHALL BE CONSTRUED AS EXCLUDING OR RESTRICTING THE LIABILITY OF SKYPE FOR (I) THE DEATH OR PERSONAL INJURY CAUSED BY THE NEGLIGENCE OF SKYPE, THE SKYPE STAFF OR ITS AGENTS, OR (II) ANY LIABILITY WHICH CANNOT BE LIMITED OR EXCLUDED BY LAW.

6.8 Jurisdiction’s Limitations: As some jurisdictions do not allow some of the exclusions or limitations as set forth above, some of these exclusions or limitations may not apply to You. In such event the liability will be limited to the maximum extent possible within the applicable legislation.

7. Additional Terms 
7.1 In addition to this Agreement, You have to comply with the following Additional Terms when receiving the Skype Software and the Skype Services. We expect You to read these Additional Terms carefully, all of which are made part of this Agreement:

• The Skype Etiquette http://www.skype.com/legal/terms/etiquette provides guidelines to treat properly and respectfully the other members of Skype’s community.

• Distribution of Skype Software. You are not allowed to distribute the Skype Software or any part thereof in a CD-ROM, DVD or other similar physical media unless You comply with the Distribution Terms at http://www.skype.com/legal/promote/distribute/. Any other distribution of the Skype Software is subject to paragraph 7.2 below.

• Skype API. You are not allowed to use the Skype API unless You comply with the API Terms at http://www.skype.com/legal/terms/api/.

• Skype Online Material. You are not allowed to use the Skype Online Material unless You comply with the Online Material Terms at http://www.skype.com/company/legal/promote/materials/.

• Payable VoIP products are provided by Skype Communications S.a.r.l. and are subject to the Terms of Service at http://www.skype.com/legal/terms/voip/.

• The use of www.skype.com website is subject to the Terms of Use with Skype Technologies SA at http://www.skype.com/legal/terms/web/.

• If You want to provide chargeable services to other Skype Software users through the Skype Software as a service provider, You will need to comply with the Service Provider Agreement with Skype Communications Sa.r.l. at http://www.skype.com/intl/en/legal/terms/callserviceprovider.

• If you want to use Skype Premium Call Service then You will need to comply with the Terms of Service for Skype Premium Call (Beta) at http://www.skype.com/legal/terms/callservices/.

• You will need to comply with the Broadcast ToS at http://www.skype.com/legal/terms/broadcast if You want to use the Skype Software in connection with any Broadcast (as defined in such Broadcast ToS).

7.2 Any other exceptions: If You are interested in doing anything which is not permitted under this Agreement or by one of the above Additional Terms, You will have to obtain Skype’s prior written consent and explicitly agree upon any further terms.

7.3 Your Confidential Information and Your Privacy: Skype is committed to respecting Your privacy and the confidentiality of Your personal data. The Privacy Policy at http://www.skype.com/legal/privacy sets out how Skype may use Your personal data, the traffic data and the content contained in Your communication(s). If You object to Your information being used in the way set out in the Privacy Policy then please do not use the Skype Services.

8. Miscellaneous 
8.1 Entire Agreement: The terms and conditions of the Terms constitute the entire agreement between You and Skype with respect to the subject matter hereof and will supersede and replace all prior understandings and agreements, in whatever form, regarding the subject matter. Nothing in this clause shall exclude or restrict the liability of either You or Skype arising out of fraud or fraudulent misrepresentation.

8.2 Partial Invalidity: If any provision of the Terms, or any part of a provision, is found by any court or administrative body of competent jurisdiction to be illegal, invalid or unenforceable, and the provision (or part-provision) in question is not of a fundamental nature to the Terms as a whole, the legality, validity or enforceability of the remainder of the Terms (including the remainder of the term which contains the relevant provision) shall not be affected.

8.3 No waiver: The failure to exercise, or delay in exercising, a right, power or remedy provided by the Terms or by law shall not constitute a waiver of that right, power or remedy. If Skype waives a breach of any provision of the Terms this shall not operate as a waiver of a subsequent breach of that provision, or as a waiver of a breach of any other provision.

8.4 Assignment: You are not allowed to assign the Terms or any rights hereunder. Skype is allowed at its sole discretion to assign the Terms or any rights hereunder to any third party, without giving prior notice.

8.5 Applicable Law and Competent Court: The Terms shall be governed by and interpreted in accordance with the laws of Luxembourg and shall be subject to the jurisdiction of the courts of the district of Luxembourg.

8.6 Language: The original English version of the Terms may have been translated into other languages. In the event of inconsistency or discrepancy between the English version and any other language version, the English language version shall prevail.

8.7 Survival: The terms of paragraphs 2.5, 5 and 6 of this Agreement, and any other provision of the Additional Terms which is expressed to survive or operate in the event of termination, shall survive termination of this Agreement and the applicable Additional Terms for whatever reason.

8.8 AVC/H.264 Notice: If the Skype Software is used to make video calls (i) between Your personal computer and a device that is not a personal computer or (ii) between devices that are not personal computers, the AVC/H.264 codec may be used to facilitate video functionality in which case the following notice applies: THE AVC VIDEO FUNCTIONALITY IN THIS PRODUCT IS LICENSED UNDER THE AVC PATENT PORTFOLIO LICENSE FOR THE PERSONAL AND NONCOMMERCIAL USE OF A CONSUMER TO (i) ENCODE VIDEO IN COMPLIANCE WITH THE AVC STANDARD (“AVC VIDEO”) AND/OR (ii) DECODE AVC VIDEO THAT WAS ENCODED BY A CONSUMER ENGAGED IN A PERSONAL AND NON-COMMERCIAL ACTIVITY AND/OR WAS OBTAINED FROM A VIDEO PROVIDER LICENSED TO PROVIDE AVC VIDEO. NO LICENSE IS GRANTED OR SHALL BE IMPLIED FOR ANY OTHER USE. ADDITIONAL INFORMATION MAY BE OBTAINED FROM MPEG LA, L.L.C. SEE HTTP://WWW.MPEGLA.COM.

YOU EXPRESSLY ACKNOWLEDGE THAT YOU HAVE READ THIS AGREEMENT AND UNDERSTAND THE RIGHTS, OBLIGATIONS, TERMS AND CONDITIONS SET FORTH HEREIN. BY CLICKING ON THE ACCEPT BUTTON AND/OR CONTINUING TO INSTALL THE SKYPE SOFTWARE, YOU EXPRESSLY CONSENT TO BE BOUND BY ITS TERMS AND CONDITIONS AND GRANT TO SKYPE THE RIGHTS SET FORTH HEREIN.

© Skype – Last revised: May 2009
