Why is EIN needed to sell iBooks?

Does anyone understand why Apple demands non-US residents a EIN to sell iBooks? Does that mean I will need to pay taxes in the US for the books sold via iBooks? Many thanks!!

UK residents DO NOT need an EIN - confirmed by the Apple Legal team. See below. Hope this helps everyone! All i needed was my IBAN...
Dear Team,
I'm not sure how, but when setting up my tax details on iTunes Connect i was faced with a page on which to enter my UK tax details. At the time i did not have an EIN, but now that i do i can't enter it. Please can this be entered onto my account for me?
Liz
Hi,
You do not need an EIN. Your contract is in effect, and you are ready to upload and sell books.
Please let me know if you have any further questions.
Best regards,
The iTunes Store Legal Team
1 Infinite Loop, MS: 36-4ISM/ Cupertino, CA 95014, USA
[email protected] / Fax: 408-974-9105
Thank you. I uploaded my first book three weeks ago and it still isn't in the stores. There is lots of confusing info on your discussion sites and even the itunes connect page says everyone must have an EIN for a paid books account. I wondered whether my first book is taking so long to publish because I had filled something in wrong? 
Thank you
Liz
Hi,
Nothing is wrong, we just changed our policy!  So when you are an individual, NOT in the United States, you do not need an EIN.
If you want to check up on the status of your book approval process, please email [email protected]
Please let me know if you have any further contract questions.
Best regards,
The iTunes Store Legal Team
1 Infinite Loop, MS: 36-4ISM/ Cupertino, CA 95014, USA

Similar Messages

  • What Is, And Why do I need it: ExpressCard/34 Slot?

    In the very near future I will be obtaining a 17" MBP. That's just savvy, except for one minor detail. What is an ExpressCard/34 slot, why do I need one, why would it have been included in this particular size MBP and what can I shove in there?

    The expresscard slot is for expansion purposes. it allows a low cost esata connection to your macbook pro. you can plug an esata adapter in and then use one of many external esata enclosures. "apiotek ec-0003d" costs about 40 bucks and will let you add 2 non-bootable external esata enclosures then can run at 3Gbps. fw800 runs at 800Mbps..
    "OWC esatat sata expressCard/34Adapter" bootable 1 esata adapter is 19 bucks it will let you add 1 esata enclosure at speeds up to 3Gbps.
    so if you get the non bootable one you can add 2 enclosures like "sans digital towerStor Ts2ct". that would be up to 4Tb for each one total of 8tb far faster then fire wire. if you get the bootable 1 esata type you could add 1 external at 4tb. this lets you macbook pro boot from a 4tb external at internal speeds. kind of gives you the ability to make you laptop a real desk top when you want it to be that. Then back to a real lap top by unplugging it. Not trying to sell any of the above items I just happen to use them.
    This option was pulled from iMac's a real drag as iMacs could use more fast enclosures.

  • Why can I no longer open IBooks?

    Why can I no longer open IBooks?

    Go to the Apple Menu (top left) click the Apple Menu and select "About This Mac"
    That will result in this window:
    The version number is right underneath Mac OSX.
    Then I will need to know which version of Office (Word) which you will see on the splash screen when you start it.

  • How long does it take to get approved to sell iBooks through iTunes Connect?

    Hi,
    I have applied to sell iBooks through iTunes Connect. After asking for my Legal Entity, Tax ID, etc, it said my application was sent and is being processed. That was about 3 weeks ago. I haven't heard anything since. I'm wondering if there's a status page or something to see if it's still processing. I tried to email [email protected] to ask what was taking so long and haven't had any response. I'm just hoping I get something worked out by the end of two more weeks. I have a show I'm going to and I really wanted to advertise this iBook.

    I finally received an email saying I'm activated! (after 4 months!). I guess it's just when they've gotten around to it
    Hello,
    Thank you for contacting iBookstore Application.  We sincerely apologize for the long delay in our response.
    Your Paid Books account with the legal entity name ------ has been activated.  An email was sent out to the email address provided on the iBookstore application, which was ---------.  Note this is the contact email address for your Paid Books account. 
    Please log in to iTunes Connect (itunesconnect.apple.com) with the Apple ID/username ------------------- to begin selling books on the iBookstore.
    Best Regards,
    Sandy
    iBookstore Publisher Support
    Hey there,
    I've tried to create an iTunes connect account through our business ------- with my ---------- apple ID and I haven't heard anything back. On April 4th, I received an email saying my Tax I.D. was invalid and that I should try to correct it. I corrected it that day and am still waiting. Can you please help me get this resolved or tell me what more I need to do to qualify to distribute iBooks on the market?

  • HT201209 why do i need a credit card if i'm using a gift card?

    why do i need to provide credit card info top iTunes store if i'm redeeming a gift card?

    Hello Amanda,
    'Account' in the sense it is used here, really relates to ownership rather than the purchase of something.   When you have a free app, it is yours and in the event you accidentally delete it and want it back, it's formally recorded in your purchases folder.
    You can obtain free apps without a credit card by following these instructions.
    Creating an iTunes Store, App Store, iBooks Store, and Mac App Store account without a credit card

  • Why do i need to use a credit card to do updates

    I don't want to set up iTunes with a credit card, however, when I try to update something like iPhoto it requires me to have a credit card.  If it is a free update then why do I need to put in a credit card number?

    jfyjperk wrote:
    I don't want to set up iTunes with a credit card,
    Then don't:  Create an iTunes Store, App Store, or iBooks Store account without a credit card or other payment method

  • Why do we need Sales area

    Hi,
    Can any one tell me what are all the possible reasons for this question...
    "Why do we need Sales area?"
    Regards,
    Nalini Ramesh

    Hi,
    Sales organization: An organizational unit that sells and distributes products, negotiates terms of sale, and is responsible for these transactions.
    Distribution channel: Channel through which salable materials or services reach customers. Typical distribution channels include wholesale, retail and direct sales. You can assign a distribution channel to one or more sales organizations. 
    Division: Product groups can be defined for a wide-ranging spectrum of products. For every division you can make customer-specific agreements on, for example, partial deliveries, pricing and terms of payment. Within a division you can carry out statistical analyses or set up separate marketing. 
    for your reference
    http://www.sap-img.com/sap-sd/sd-questions-on-corporate-structure.htm
    thanks.

  • HT204053 why do i need to register providing after creating my apple ID if not i cant have any download on my ipad

    why do i need to register providing after creating my apple ID if not i cant have any download on my ipad

    Hey exlondoner,
    If you are going to sell or give away an Apple product such as your MacBook Pro, you may want to follow the steps in this article -
    What to do before selling or giving away your Mac - Apple Support
    Thanks for using Apple Support Communities.
    Be well,
    Brett L 

  • HT2534 why do you need my cc?????

    The article on itunes is incorrect.  I do not get an option to click "none" when creating an apple ID...I only want to get some artwork, not planning to purchase anything, so why do they need my cc info?

    dablenda wrote:
    I think this is ridiculous...why would I put that information out there if I am not buying anything?
    Setting up an account without a credit card does appear to be slightly "involved", but since you have stated that you don't intend to buy anything and that you simply want to find the artwork, perhaps you should concentrate on getting the artwork using the method I suggested.
    I never get artwork for any of my albums from the iTunes Store. Since the Store only has artwork for the albums it sells, several of my CDs will not be found in the Store anyway.
    There is another method too if you are using your CDs as the source for your music: if you have a scanner bed, or a printer with a scanner facility, scan the CD cover and paste that into your artwork box.
    By the way, note that tt2's post states that you cannot change an existing AppleID to the "no credit card" option. So if you simply tried to change your existing id, then that could be the problem.

  • Archiving cds and why do i need id3 tags

    here comes another one of those questions looking at which codec to use to store music.....i also have tag questions.....
    i'm about to (re-)rip my cd collection and looking at some info re codecs and id3 tags
    now.....i believe i understand the benefits of alac (lower file sizes, keeping id3 tags, lossless compression) v wav(no compression)
    however (and for some out there) if we just entertain the fact that wav may have some minute benefit for me depending on my questions and answers given.....and yes i know wav and alac will sound the same to the human ear - i accept that as a given of lossless compression ......
    points i'd like to outline:
    i am looking to rip my cds, firstly and mostly, for an archiving purpose!! purpose numero uno!!
    i could well want to re-create cds with these archived records in the future
    size of files is of no concern to me at all
    i'm using a mac nowadays
    i will convert most of these files, where needed, to use with a portable music player (i'm not bothered with having, say a wav file and then also converting and having an alac file, as crazy as that sounds)
    this is where i ask for info re the benefits of embedded tags that are found in alac:
    are these tags that important?
    where do they come into play in ripping and later converting music?
    are these uses just bells and whistles that have no benefit to my needs?
    if i rip cds to wav (or aiff), say, using itunes, will cd info and track listings be available on the downloading database (eg itunes) to name these wav files?
    if i then ensure these song files are kept under the album's folder, have i just done what tags do? surely not. that is all i have needed in the past.
    this is where i feel i may be really missing what id tags (can) do
    are tags more than just managing song files and where they belong and where they have come from?
    is it just a convenience of not personally managing your song files (as per previous paragraph)?
    (in the past i had ripped cds to mp3 codec. i think i used "cd rip" or something like that on my pc.
    my mp3 files were individually named and sorted and kept under album folders under artist name folders.
    apart form the very odd occasion all track and album info i needed was found on a database that was attached to the ripping software.
    i never had a problem managing/maintaining these files and folders.)
    i welcome some enlightenment on some of my questions above and other info that may be relevant
    and yes, i understand that music will sound the same as a wav file or alac file - but humour me re using wav and tell me why i need id3 tags
    i guess the crux of it is:
    why do i need id3 tags?
    does my managing of my song file in the album folder do what tags do?
    what problems/shortcomings/headaches may i encounter by not having those tags if i use wav as opposed to alac?
    what do i not know about these little buggers?
    what codec is best for my purpose of archiving and re creating of cds (for playing in cd players)
    thanks in advance for your input and any clarity that i may experience through this
    peter t
    excuse my long windedness (i have spent some time editing this entry)

    Crows2012 wrote:
    as mentioned earlier if i just have songs (wav) in album folders, when i import these albums into itunes, do you know if these will come up under AN album with their file names purely using my filename setup (but with no artwork)?
    Yes, iTunes will read the filename, such as "Track 1" or something else and display it. But nothing else. No Album or Artist.
    so the tracks will remain grouped as an album based on their initial folder and the albums and tracks as per file name?
    Crows2012 wrote:
    also, does aiff have limitations (apart from the full size of the file)?
    I'm not sure I understand what you mean. For all practical purposes AIFF and WAV are exactly the same thing. They're just file containers.
    i thought that i had read somewhere that aiff tags could run into some issues with its tags - ie may not always be transferred 100% accurately with certain players (or hardware maybe)
    Crows2012 wrote:
    and how do these codecs work re-creating an album for the purposes of playing in a cd player? - this is a crucial question for the purpose of my archiving/backup of CDs THEMSELVES
    That's actually going to depend on what burning software you use. Once you rip the tracks to whatever file container you choose (WAV/AIFF/ALAC) you'll never really exactly re-create the album. But for archiving purposes all three file containers will do what you want, which is to create a lossless archive. AIFF has the advantage of supporting embedded ID3, which ALAC has the additional advantage of the files also being about half the size of AIFF/WAV files.
    i was thinking that maybe wav was able to recreate an album (in effect duplicate one) if my cd was lost or damaged in the future. i was thinking this IF when ripping to wav everything is unchanged (unless there is other data on the original cd). and maybe only possible with wav. the purpose for this would be to play recreated cds on my cd player
    any idea on this one?
    (i havent looked too thoroughly on this angle but i'll keep googling on this one)
    much appreciate all info thus far
    peter t

  • I want to know that if i want to download facebook on my iphone 4 or any other apps then it ask me put my card details for payment. why is that. if they are free then why do i need to give my card details?please help me anyone.

    I want to know that if i want to download facebook on my iphone 4 or any other apps then it ask me put my card details for payment. why is that. if they are free then why do i need to give my card details?please help me anyone.

    Just select no credit card as outlined here:
    http://support.apple.com/kb/ht2534

  • Why do I need to connect my Ipad mini with my Mac Book Pro via iCloud?

    Why do I need to connect my Ipad mini with my Mac Book Pro via iCloud? I don't have iCloud on my MacBook Pro and only intend to use the mini to check e-mail and use Garage Band and Photo Booth for song writing when traveling . . .

    Thanks Community! I solved the problem. In fact it was not a problem but lack of understanding. These guys at Apple are way ahead in thir thinking. I will try to explain as short as I can.
    In Lion, ihe Prefferences/Display show only two choices: 6-7 steps of resolution and some color tab. No two screens, no two display to overlap, nothing for us to do. "That was the problem"! Everything is automatic.
    When I connected the HDMI cable to the Miniport into a T-bolt slot, the TV screen showed the "spiral galaxy" how Zyriab is calling it. In fact he gave me the best clue. That shows the connection is good. But where is the Mac Book image?
    You have to drag it to the right out of the Mac Book display area, and "voila!" it will continue on the TV screen. The same with the mouse pointer, push it out ofthe Mac Book display area and you see it on the TV sreen. Good image, you can keep the max resolution, etc. The sound is still on the Book's speakers. I have to figure that out.
    Thank everybody, especialy Zyriab, ne was the closest.
    High regards to everybody

  • Keynote and pages are now free, but why do i need to pay for them still when there now free?!?

    keynote and pages are now free, but why do i need to pay for them still when there now free?!?

    Users can obtain the iWorks and iLife applications free, if they purchased a Mac after the beginning of October 2013.
    Older Mac purchases require a paid purchase of these applications.

  • Why do I need to start up Screen Sharing twice to get it to work ?

    I have an Intel Mac Mini connected to my TV, so I started using Screen Sharing from my MacBook Pro to be able to work on it when others were watching TV.
    Both Macs used to have OSX 10.5 Leopard, and everything worked fine.
    Now they both have OSX 10.6 Snow Leopard, and whenever I startup Screen Sharing, the connection-windows asking for my Name & Password comes up properly, but then it hangs... it stays in "Connecting..." for ever (litteraly).
    I'm not able to quit or force-quit the connection-window by then, so it stays in view...
    (Screen Sharing isn't even listed in the force-quit list as a running app)
    but...
    when I just try Screen Sharing again, I get connection immediately and it seems to work flawlessly...
    ...it's just that the connection-window is impossible to quit...
    it stays in view an is really annoying...
    this looks really crappy...
    can anyone tell me why I do need to startup Screen Sharing twice to get it to work ?
    Is this a bug ?
    (If so : please apple fix this a.s.a.p.)
    ...or am I doing something wrong ?
    (if so : what am I doing wrong ? and how can I get rid of this annoying screen ?)
    Thank you for your kind reply.
    Toon.B

    it's October and this really annoying problem still exists !
    the unnamed screensharing-loginwindow keeps "Connecting...", and I'm unable to shut it down...
    ...even after my screen sharing session is over
    ...even force-quitting is impossible (this 'app' just isn't showing up in the force-quit-window...)
    please Apple - fix this ; under 10.5 it was working great !
    Does anyone have any idea how to fix this ?
    (besides restarting my Mac)
    Thanks !
    Toon.B

  • Why do I need to catch this exception?

    Hello all
    This is a question about exception handling. I have to build a diary application that lets you save reminders on particular dates using xml. Just to make it a little tougher, I was not allowed to use the Calendar class. This is the code I wrote:
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import java.util.*;
    import java.text.*; 
    import javax.xml.parsers.*;
    import org.xml.sax.*;
    import java.io.*;     
    import org.w3c.dom.*;
    import javax.xml.transform.*;
    import javax.xml.transform.dom.*;
    import javax.xml.transform.stream.*;                                                                                                                                                                                                                         
    import static java.lang.Math.*;
    public class CalendarAssignment extends JFrame implements ActionListener
         int MonthLength [] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
         public JButton [] days = new JButton[43];
         private JLabel lbl, reminderlbl;
         private JPanel top, grid, remindercenter, reminderbottom;
         private JFrame reminderframe;
         private JTextField year1, reminderinput, dayno;
         private JComboBox months;
         private Container container;
         private JButton fetch, save, cancel;
         private Document doc;
         private File file;
         private Node node;
         private String year, month, day;
              public static void main( String[] args ) {
                   CalendarAssignment c = new CalendarAssignment( );
                   c.setSize( 400, 300 );
                   c.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
                   c.show( );
              public CalendarAssignment( ) {
                   int CurrentYear, CurrentMonth;
                   String YearString, MonthString, Now;
                   Date today;
                   container = getContentPane( );
                   container.setLayout( new BorderLayout( ) );
                   SimpleDateFormat DateFormatter;
                   DateFormatter = new SimpleDateFormat( "MM.yyyy" );
                   today = new Date( );
                   Now = DateFormatter.format( today );
                   MonthString = Now.substring( 0,2 );
                   YearString = Now.substring( 3,7 );
                   CurrentMonth = Integer.valueOf( MonthString );
                   CurrentYear = Integer.valueOf( YearString );
                   top = new JPanel( );
                        String [] items = { "January", "February", "March", "April", "May", "June",
                                      "July", "August", "September", "October", "November",
                                      "December" };
                        months = new JComboBox( items );
                        months.setEditable( false );
                        months.setSelectedIndex( CurrentMonth - 1 );          
                        year1 = new JTextField( );
                        year1.setText( YearString );
                        year1.setEditable( true );
                        year1.setHorizontalAlignment( year1.CENTER );
                        fetch = new JButton( "Fetch Month" );
                        fetch.addActionListener( this );
                        top.setLayout( new GridLayout( 1, 3, 20, 0 ) );
                        top.add( months );
                        top.add( year1 );
                        top.add( fetch );
                   grid = new JPanel( );
                        grid.setLayout( new GridLayout( 7, 7, 0, 0 ) );
                        String [] week = { "Mon", "Tue", "Wed", "Thur", "Fri", "Sat", "Sun" };
                        for ( int a = 0; a < 7; a ++ ) {
                                  JLabel lbl = new JLabel( week[a], JLabel.CENTER );
                                  grid.add( lbl );
                        for ( int i = 0; i < 42; i ++ ) {
                                  days[i] = new JButton( );
                                  grid.add( days[i] );
                                  days.addActionListener( this );
                        DrawCalendar( CurrentMonth, CurrentYear );
                        container.add( top, BorderLayout.NORTH );
                        container.add( grid, BorderLayout.CENTER );
              private void DrawCalendar( int SelectMonth, int SelectYear ) {
                        int DisplayMonthLength, Buttons;
                        String ButtonID = "";
                        int OffSet = MonthStart( SelectMonth, SelectYear );
                        DisplayMonthLength = MonthLength [SelectMonth - 1];
                        if ( SelectMonth == 2 )
                             DisplayMonthLength += LeapYear( SelectYear );
                        for ( Buttons = 1; Buttons < 43; Buttons ++ ) {
                             if ( ( Buttons <= OffSet ) || ( Buttons > ( DisplayMonthLength + OffSet ) ) ) {
                                  ButtonID = "";
                                  days[Buttons-1].setEnabled( false );
                             else {
                                  ButtonID = Integer.toString( Buttons - OffSet );
                                  days[Buttons-1].setEnabled( true );
                        days[Buttons-1].setLabel( ButtonID );
                        grid.add( days[Buttons-1] );
              private int LeapYear( int year ) {
                        int FourHundred, OneHundred, Fourth;
                        FourHundred = year % 400;
                        OneHundred = year % 100;
                        Fourth = year % 4;
                        if( ( ( FourHundred == 0 ) ) || ( ( OneHundred != 0 ) && ( Fourth == 0 ) ) )
                             return ( 1 );
                        else
                             return ( 0 );
              private int MonthStart( int Month, int Year ) {
                        int OffSet, LastMonths, BeforeOrAfter, Years;
                        int AllDays = 0;
                        int YearDays = 365;
                        int YearMonths = 12;
                        BeforeOrAfter = Year - 2006;
                        Years = abs( BeforeOrAfter );
                        if( BeforeOrAfter != 0 )
                             BeforeOrAfter = BeforeOrAfter / Years;
                        switch( BeforeOrAfter ) {
                             case 1:
                                  for( int a = 2006; a < Year; a ++ ) {
                                       AllDays += YearDays + LeapYear( a );
                                  AllDays += LastMonthsCalc( Month, Year );
                             break;
                             case -1:
                                  for( int a = 2005; a > Year; a -- ) {
                                       AllDays += YearDays + LeapYear( a );
                                  for( LastMonths = YearMonths; LastMonths >= Month; LastMonths -- ) {
                                       AllDays += MonthLength[LastMonths - 1];
                                       if( LastMonths == 2 )
                                            AllDays += LeapYear( Year );
                             break;
                             default:
                                  if( Month > 1 )
                                       AllDays += ( LastMonthsCalc( Month, Year ) );
                        OffSet = AllDays % 7;
                        if( BeforeOrAfter ==( -1 ) )
                             return( 6 - OffSet );
                        else if( OffSet > 0 )
                             return( OffSet - 1 );
                        else
                             return( 6 );
              private int LastMonthsCalc( int Month, int Year ) {
                        int Counter;
                        int days = 0;
                        for( Counter = 1; Counter < Month; Counter ++ ) {
                             days += MonthLength[Counter - 1];
                             if( Counter == 2 )
                                  days += LeapYear( Year );
                        return( days );
              public void CreateReminder( String buttonID, String yearID, String monthID ) {
                        reminderframe = new JFrame( );
                        reminderlbl = new JLabel( );
                        reminderframe.setLayout( new GridLayout( 2, 1, 0, 0 ) );
                        remindercenter = new JPanel( );
                             reminderlbl = new JLabel( "Please type in reminder to be saved for " + buttonID + " " + monthID + " " + yearID + ":", JLabel.CENTER );
                             reminderinput = new JTextField( 30 );
                             reminderinput.setHorizontalAlignment( reminderinput.CENTER );
                             reminderinput.setEditable( true );
                             remindercenter.setLayout( new GridLayout( 2, 1, 0, 0 ) );
                             remindercenter.add( reminderlbl );
                             remindercenter.add( reminderinput );
                        reminderbottom = new JPanel( );
                             save = new JButton( "Save" );
                             save.addActionListener( this );
                             cancel = new JButton( "Cancel" );
                             cancel.addActionListener( this );
                             dayno = new JTextField( buttonID );
                             dayno.setEditable( false );
                             dayno.setEnabled( false );
                             dayno.show( false );
                             reminderbottom.setLayout( new FlowLayout( ) );
                             reminderbottom.add( save );
                             reminderbottom.add( cancel );
                             reminderbottom.add( dayno );
                        reminderframe.setSize( 500, 75 );
                        reminderframe.add( remindercenter );
                        reminderframe.add( reminderbottom );
                        reminderframe.pack( );
                        reminderframe.show( );
              public void SaveReminder( String dayID, String yearID, String monthID ) throws Exception {
                        file = new File( "Diary.xml" );
                        doc = DocumentBuilderFactory.newInstance( ).newDocumentBuilder( ).parse( file.toURL( ).toString( ) );
                        String year = yearID;
                        String month = monthID;
                        String day = dayID;
                        //System.out.println( year );
                        //System.out.println( month );
                        //System.out.println( day );
                        CreateEntry( doc.getDocumentElement( ) );
                        writeXmlFile( );
              public boolean CreateEntry( Node node ) {
                        Node searchNode;
                        searchNode = getYear( node );
                        if( searchNode == null ) {
                             Element newNode = doc.createElement( "Year" );
                             searchNode = node.appendChild( newNode );
                             newNode.setAttribute( "Id", year );
                        node = searchNode;
                        searchNode = getMonth( node );
                        if( searchNode == null ) {
                             Element newNode = doc.createElement( "Month" );
                             searchNode = node.appendChild( newNode );
                             newNode.setAttribute( "Id", month );
                        node = searchNode;
                        searchNode = getDay( node );
                        if( searchNode == null ) {
                             Element newNode = doc.createElement( "Day" );
                             searchNode = node.appendChild( newNode );
                             newNode.setAttribute( "Id", day );
                        node = searchNode;
                        String entry = reminderinput.getText( );
                        Node textNode = doc.createTextNode( entry );
                        node.appendChild( textNode );
                        return true;
              private Node getYear( Node node ) {
                        node = node.getFirstChild( );
                        while( node != null ) {
                             if(node.getNodeName( ).equals( "Year" ) && String.valueOf( node.getAttributes( ).item( 0 ).getNodeValue( ) ) == year )
                                  return node;
                                  node = node.getNextSibling( );                    
                        return null;
              private Node getMonth( Node node ) {
                        node = node.getFirstChild( );
                        while( node != null ) {
                             if( node.getNodeName( ).equals( "Month" ) && String.valueOf( node.getAttributes( ).item( 0 ).getNodeValue( ) ) == month )
                                  return node;
                                  node = node.getNextSibling( );                    
                        return null;
              private Node getDay( Node node ) {
                        node = node.getFirstChild( );
                        while( node != null ) {
                             if( node.getNodeName( ).equals( "Day" ) && String.valueOf( node.getAttributes( ).item( 0 ).getNodeValue( ) ) == day )
                                  return node;
                                  node = node.getNextSibling( );                    
                        return null;
              private void writeXmlFile( ) throws Exception {
                   Source source = new DOMSource( doc );
                        Result result = new StreamResult( file );
                   Transformer xformer = TransformerFactory.newInstance( ).newTransformer( );
                   xformer.setOutputProperty( OutputKeys.INDENT,"yes" );
                   xformer.setOutputProperty( OutputKeys.DOCTYPE_SYSTEM,"Diary.dtd" );
                   xformer.transform( source, result );
              public void actionPerformed( ActionEvent e ) {
                        String IDButton = e.getActionCommand( );
                        String IDYear = year1.getText( );
                        Object IDMonthObj = months.getSelectedItem( );
                        if( e.getSource( ) == fetch ) {
                             String YearText = year1.getText( );
                             int YearNumber = Integer.valueOf( YearText );
                             int MonthsIndex = months.getSelectedIndex( ) + 1;
                             DrawCalendar( MonthsIndex, YearNumber );
                        else if( e.getSource( ) == cancel ) {
                             reminderframe.hide( );
                        else if( e.getSource( ) == save ) {
                             String IDDay = dayno.getText( );
                             String IDMonth = String.valueOf( IDMonthObj );
                             SaveReminder( IDDay, IDYear, IDMonth );
                        else {
                             String IDMonth = String.valueOf( IDMonthObj );
                             Toolkit.getDefaultToolkit( ).beep( );
                             int n = JOptionPane.showConfirmDialog( null, "Set reminder on this date?", "Question", JOptionPane.YES_NO_OPTION );
                             if( n == JOptionPane.YES_OPTION ) {
                                  CreateReminder( IDButton, IDYear, IDMonth );
    If you compile it, you will realise that I get an error about exception handling. My lecturer gave me an example code of how to do the same thing without using a GUI:
    import javax.xml.parsers.*;
    import org.xml.sax.*;
    import java.io.*;
    import java.util.*;
    import org.w3c.dom.*;
    import javax.xml.transform.*;
    import javax.xml.transform.dom.*;
    import javax.xml.transform.stream.*;
    public class CallDOM
         Document doc;
         File file;
         Scanner input;
         int year, month, day;
         String currentYear, currentMonth;
         public static void main(String args[]) throws Exception
              CallDOM cd=new CallDOM();          
         CallDOM() throws Exception
              file=new File("Diary.xml");
              //create DOM from file
              doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(file.toURL().toString());
              input=new Scanner(System.in);
              System.out.println("1) Create entry");
              System.out.println("2) Read entry");
              System.out.println("3) Show Diary");
              System.out.println("4) Quit");
              int choice=input.nextInt();
              while(choice!=4)
                   switch(choice)
                        case 1: GetDate();CreateEntry(doc.getDocumentElement());break;
                        case 2: GetDate();ReadEntry(doc.getDocumentElement());break;
                        case 3: ShowDiary(doc.getDocumentElement());
                   System.out.println("1) Create entry");
                   System.out.println("2) Read entry");
                   System.out.println("3) Show Diary");
                   System.out.println("4) Quit");
                   choice=input.nextInt();
              writeXmlFile();
         public void GetDate()
              System.out.println("Enter date (dd mm yyyy)");
              day=input.nextInt();
              month=input.nextInt();
              year=input.nextInt();
         public boolean ReadEntry(Node node)
              node = getYear(node);
              if(node==null) return false;
              node = getMonth(node);
              if(node==null) return false;
              node = getDay(node);
              if(node==null) return false;
              node = node.getFirstChild();
              while(node!=null)
                   System.out.println(node.getNodeValue().trim());     
                   node=node.getNextSibling();
              return true;               
         public boolean CreateEntry(Node node)
              Node searchNode;
              searchNode = getYear(node);
              if(searchNode==null)
                   Element newNode = doc.createElement("Year");
                   searchNode = node.appendChild(newNode);
                   newNode.setAttribute("Id",Integer.toString(year));
              node = searchNode;
              searchNode = getMonth(node);
              if(searchNode==null)
                   Element newNode = doc.createElement("Month");
                   searchNode = node.appendChild(newNode);
                   newNode.setAttribute("Id",Integer.toString(month));
              node = searchNode;
              searchNode = getDay(node);
              if(searchNode==null)
                   Element newNode = doc.createElement("Day");
                   searchNode = node.appendChild(newNode);
                   newNode.setAttribute("Id",Integer.toString(day));
              node = searchNode;
              System.out.println("Enter Text");
              String entry=input.next();
              entry+=input.nextLine();
              Node textNode = doc.createTextNode(entry);
              node.appendChild(textNode);
              return true;               
         public void ShowDiary(Node node)
              Stack<Node> stack=new Stack<Node>();
              Node child;
              stack.push(node);
              while(!stack.empty())
                   node = stack.pop();
                   if(ProcessNode(node))
                        child = node.getLastChild();
                        while(child!=null)
                             stack.push(child);
                             child = child.getPreviousSibling();
         private boolean ProcessNode(Node node)
              if(node.getNodeName().equals("Year"))
                   currentYear=node.getAttributes().item(0).getNodeValue();
              if(node.getNodeName().equals("Month"))
                   currentMonth=node.getAttributes().item(0).getNodeValue();
              if(node.getNodeName().equals("Day"))
                   System.out.print(node.getAttributes().item(0).getNodeValue()+"/"+
                                            currentMonth+"/"+currentYear+": ");
                   node=node.getFirstChild();
                   while(node!=null)
                        System.out.println(node.getNodeValue().trim());
                        node=node.getNextSibling();
                   return false;
              return true;               
         private Node getYear(Node node)
              node=node.getFirstChild();
              while(node!=null)
                   if(node.getNodeName().equals("Year")
                        && Integer.valueOf(node.getAttributes().item(0).getNodeValue())==year)
                             return node;
                   node = node.getNextSibling();                    
              return null;
         private Node getMonth(Node node)
              node=node.getFirstChild();
              while(node!=null)
                   if(node.getNodeName().equals("Month")
                        && Integer.valueOf(node.getAttributes().item(0).getNodeValue())==month)
                        return node;
                   node = node.getNextSibling();                    
              return null;
         private Node getDay(Node node)
              node=node.getFirstChild();
              while(node!=null)
                   if(node.getNodeName().equals("Day")
                        && Integer.valueOf(node.getAttributes().item(0).getNodeValue())==day)
                        return node;
                   node = node.getNextSibling();                    
              return null;
         private void writeXmlFile() throws Exception
            Source source = new DOMSource(doc);
            Result result = new StreamResult(file);
            Transformer xformer = TransformerFactory.newInstance().newTransformer();
            xformer.setOutputProperty(OutputKeys.INDENT,"yes");
            xformer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM,"Diary.dtd");
            xformer.transform(source, result);
    }My question is, why does the exceptions in the example code not need to be caught? And why do I have to catch the exceptions in my code? Several exceptions are thrown in the example code, but there is no catch statement.
    Thanks for any advice!!

    Since your question didn't come with any relevant details, and since you have huge steaming piles of irrelevant code, all I can give is a general answer to "Why do I need to catch this exception?"
    [url http://java.sun.com/docs/books/tutorial/essential/exceptions/index.html]Exception tutorial at http://java.sun.com/docs/books/tutorial/essential/exceptions/index.html
    Here's a quick overview of exceptions:
    The base class for all exceptions is Throwable. Java provides Exception and Error that extend Throwable. RuntimeException (and many others) extend Exception.
    RuntimeException and its descendants, and Error and its descendants, are called unchecked exceptions. Everything else is a checked exception.
    If your method, or any method it calls, can throw a checked exception, then your method must either catch that exception, or declare that your method throws that exception. This way, when I call your method, I know at compile time what can possibly go wrong and I can decide whether to handle it or just bubble it up to my caller. Catching a given exception also catches all that exception's descendants. Declaring that you throw a given exception means that you might throw that exception or any of its descendants.
    Unchecked exceptions (RuntimeException, Error, and their descendants) are not subject to those restrictions. Any method can throw any unchecked exception at any time without declaring it. This is because unchecked exceptions are either the sign of a coding error (RuntimeException), which is totally preventable and should be fixed rather than handled by the code that encounters it, or a problem in the VM, which in general can not be predicted or handled.

Maybe you are looking for