Precision in XPS is quite good given sufficient signal/noise in the spectra obtained. A series of analyses of the same area of a sample surface will give essentially the same result. However, one must be aware that in some cases the sample surface itself can change over time due to X-ray damage. Adsorption/desorption of carbonaceous materials and water can also occur.
Accuracy in XPS will depend on a number of things. One of them is the accuracy of the relative sensitivity factors (RSF) used for quantitation. For many of the common elements the RSF values are quite good while some of the rarer elements are less accurate. For a pristine, homogeneous silicon dioxide surface, XPS analysis will give 66.7% O and 33.3% Si. However surfaces are, in general, never as easy as that. Less photoelectrons will escape the surface unaffected by inelastic losses as one goes deeper into the surface. As such, layering of oxides or contaminant films, discreet particles, island structures, and topographic changes all will change the photoelectron yields for the elements present as compared to a homogenous bulk sample.
Both precision and accuracy will suffer as the peak intensity diminishes and/or with increases in signal to noise. Changes in endpoint selection can cause large variations in the peak area measured for smaller peak sizes. Elements with a low photoelectron cross-section, such as nitrogen and boron, are particularly susceptible to errors of this type. The background type (linear, Shirley and Tougaard) can also affect the peak areas measured, again affecting accuracy. For most elements/core lines with moderate to strong photoelectron cross-sections, precision may vary by only a few tenths of a percent. This is a minor amount if it is a major element present at the surface (10-100 at.% ) but becomes a proportionally larger error as the amount decreases (less than a few percent). For elements/core lines with lower photoelectron cross-sections (N, B) this error can increase to a percent or more.
Information on XPS detection limits can be found here.