Motivated by the construction made by Goppa on curves, we present some error-correcting codes on algebraic surfaces. A surface whose Neron-Severi group has rank 1 has a "nice" intersection property that allows us the construction of a good code. We will verify this on specific examples. Surfaces with many points and rank 1 are not easy to find. We were able, though, to find also surfaces with low rank and many points, and these gave us good codes too. Finally, we present a decoding algorithm for these codes. It is based on the realization of the code as a LDPC code, and it is inspired on the Luby-Mitzenmacher algorithm.