Windows Phone 7 development

I would like to share a quick tutorial how to get ITIN number for tax purposes. I is a bit of PITA (pain in the ass), especially for those who do not have access to a proper tax advisor, that is why I share this.

I am Non U.S.-based Developer developer that makes app for WP7 and I will focus on Zune marketplace, but this tutorial is also helpful for any person that would like to get ITIN.

What is ITIN?

According to wikipedia:

An Individual Taxpayer Identification Number (or ITIN) is a United States tax processing number issued by the Internal Revenue Service. It is a nine-digit number that begins with the number 9 and has a 7 or 8 in the fourth digit, i.e. 9xx-7x-xxxx or 9xx-8x-xxxx. The IRS issues ITINs to individuals who are required to have a taxpayer identification number but who do not have, and are not eligible to obtain, a Social Security Number.

Basically, we need this number to do small business, open an account, for royalties income etc. There is also Employer Identification Number (EIN), which is also useful for tax issues, but it is meant for sole proprietors, not individuals.

Why do I need it?

To take advantage of the tax treaty your country could have with the U.S. and avoid being subject to an automatic 30% U.S. tax withholding. In other words, to pay less taxes, but this is not mandatory to get paid.

What do I need to get it?

You will have to have:

  1. Filled W-7 form.
  2. Document that proves your ID (must have a foto of you).
  3. Letter confirming that you need an ITIN.

W-7 form how to.

Remember, this may vary depending upon country, gender, purpose.

Ok, so let’s start step-by-step.

Section 1 – Reason you are submistting:
Check A – if you are not the U.S citizen/resident
Check H with “Exception 1(d) – Royalty Income
Treaty Country (Your country goes here) Treaty Article Number (number of the article Рyou can find it here)

Royalty Income Exception if for WP7 developer as well as for inheritance (passing on property, titles, debts, and obligations upon the death of an individual)

Section 2 – Name:

Fill 1a if you have not changed your name.

Section 3 – Applicant’s Mailing Address:

If you have mailing adress diffrent than your current adress.

Section 4 – Foreign (non-U.S.) address:

Your current business address/home address

Section 5 – Birth Information:

Your birth city. Mind the weird american date notation MM/DD/YYYY (Why months first? no idea ūüôā )

Section 6 – Other Information:
6a – Your country.
6b – Tax number if you have one.
6c – If you have visa enter date, otherwise ignore it
6d – check Passport, because it is the only document that proves you are foregin and proves your ID.
6e – Check No and ignore 6f, 6g if you didn’t have any US tax numbers.

Section 7 – Signature:

Remeber to sign ūüôā (And mind the date!)

Document that proves your ID:

I suggest the passport (the only document that proves you are foregin and proves your ID). Since sending them a passort is a stupid idea (and I think illegal), you need to certificate it. Thera are many ways to do it, like post office, yet to make sure it will not be rejected go to the nearest embassy/consulate and ask for certification. It costs 50$, but kind lady will do it straight away.

Letter confirming that you need an ITIN.

You may need to provide a letter from Microsoft confirming that you need an ITIN. Click here to download the Microsoft letter, which is provided in PDF format and only in English. The following information must be entered in the Microsoft letter for it to be considered valid:

  • Date: The date you print the form in MM/DD/YYYY format.
  • To: The developer‚Äôs full name in first name + last name format.

If you have done all put it in a envelope and send to

Mail service

Internal Revenue Service
ITIN Operations
P.O. Box 149342
Austin, TX 78714-9342

Curier service

Internal Revenue Service
ITIN Operations
Mail Stop 6090-AUSC
3651 S. Interregional, HWY 35
Austin, TX  78741-0000


It took 2 months in my case.  Then send the W-8BEN to MS (it will be validated when you reach the payout threshold Р200$).


information about W-7

second info with sample


AppHub FAQ

AppHub Froums


Gay Test

This is happen when you have too much free time :p


Silverlight for Windows Phone 7 is based on the page  navigation system. Key point is the lifetime of pages Рeach page is deleted while you navigate to another. To have an object(singleton f.e.) during the whole application life it could be placed in App class (App.xaml.cs file). MediaElement is definitely an object that should be one (there must be only one music player). The best and simple solution is place the MediaElement in XAML(it needs to be a part of visual tree), I have used application resources:

<!--Application Resources-->
   <MediaElement x:Name="mediaPlayer" Source="/Sound/horrorSong.mp3" AutoPlay="False"  />

Then you can get it from any page:

MediaElement player = null; // get the media element from App resources
if (App.Current.Resources.Contains("mediaPlayer"))
   player = App.Current.Resources["mediaPlayer"] as MediaElement;
if (player != null)

MediaElement can’t play the music while Zune is connect, it is good to prompt the user about it.

if (NetworkInterface.GetIsNetworkAvailable())
   if (NetworkInterface.NetworkInterfaceType == NetworkInterfaceType.Ethernet)
      zuneTextBlock.Visibility = System.Windows.Visibility.Visible;
zuneTextBlock.Visibility = System.Windows.Visibility.Collapsed;

This code does not guarantee if Zune is on (User sill can have the plugged phone) but is very likely that Zune is running(Zune starts while you connect the phone).

Weather blog/website

Wonder if there is the API that simulates weather condition (insired by wordpress’ snow). User could see weather conditions of place that she/he want to visit.


Simple center zoom

To add simple pinch zoom (that I used in my Spirit Level) use the Silverlight Toolkit for WP7 and add the pinch GetureListener to a grid

  <toolkit:GestureListener PinchDelta="GestureListener_PinchDelta" />

and code in event

 private void GestureListener_PinchDelta(object sender, PinchGestureEventArgs e)
    if (e.DistanceRatio < 1.0 || e.DistanceRatio > 1.4)
 // Create the animation for pinch
   Storyboard storyboard = new Storyboard();
   DoubleAnimation pinchXAnimation = new DoubleAnimation();
   pinchXAnimation.To = e.DistanceRatio;
   pinchXAnimation.Duration = TimeSpan.FromSeconds(0.3);
   Storyboard.SetTargetProperty(pinchXAnimation, new PropertyPath("GridScaling.ScaleX"));
   Storyboard.SetTarget(pinchXAnimation, GridScaling);

   DoubleAnimation pinchYAnimation = new DoubleAnimation();
   pinchYAnimation.To = e.DistanceRatio;
   pinchYAnimation.Duration = TimeSpan.FromSeconds(0.3);
   Storyboard.SetTargetProperty(pinchYAnimation, new PropertyPath("GridScaling.ScaleY"));
   Storyboard.SetTarget(pinchYAnimation, GridScaling);



Spirit Level

Classic Metronome

Tip Calc


WP7 constants

I have tried to gather some important ones. I will update this post when I spot something new ūüôā


  1. 3 – devices can be unlocked by one developer(one live ID)
  2. 3 – apps can be deployed by DearmSpark developer per one phone
  3. 5 – free apps per account (next one is 19.99$)
  4. 5 – seconds after launch the app must show something to the user(loading screen f.e.).
  5. 10 – apps can be deployed by developer(paid fee) per one phone
  6. 15 – push notification channels per device
  7. 20 MB – The maximum size of the OTA (over the air) installation file for the application.
  8. 30 – frames per seconds XNA updates the screen.
  9. 60 – frames per second Silverlight updates the screen
  10. 62 x 62 – icon size(PNG)
  11. 90 MB – memory usage for devices with 256 MB ( limit can go up for devices with more than 256MB)
  12. 99  x 99 РSmall mobile app tile (PNG)
  13. 173 x 173 – tile size(PNG)
  14. 200 x 200 – Large PC app tile(PNG)
  15. 225 MB – The maximum size of the XAP package file.
  16. 480 x 800 – screenshoot of an app.
  17. 1000 x 800 – Panaroama background for marketplace – not 1440 (PNG)


  1. 0.99$ – mimimum price of an app
  2. 99$ – registration fee
  3. 200$ – payout threshold
  4. 499.99$ – maximum price of an app

The collection time of payment

  1. 15 to 30 days for credit card billing
  2. 90 to 120 days for mobile operator billing
%d bloggers like this: