We have developed an open source 3D, MATLAB based, resistivity inversion package. The forward solution to the governing partial differential equation is efficiently computed using a second-order finite volume discretization coupled with a preconditioned, biconjugate, stabilized gradient algorithm. Using the analytical solution to a potential field in a homogeneous half space, we evaluate the accuracy of our numerical forward solution and, subsequently, develop a source correction factor that reduces forward modeling errors associated with boundary effects and source electrode singularities. For the inversion algorithm we have implemented an inexact Gauss-Newton solver, with the model update being calculated using a preconditioned conjugate gradient algorithm. The inversion uses a combination of zero and first order Tikhonov regularization. Two synthetic examples demonstrate the usefulness of this code. The first example considers a surface resistivity survey with 3813 measurements. The discretized model space contains 19,040 cells. For this example, the inversion package converges in approximately on a Pentium 4, with of RAM. The second example considers the case of borehole based data acquisition. For this example there were 4704 measurements and 13,200 model cells. The inversion for this example requires of computational time.