We construct certain error-correcting codes over finite rings and estimate their parameters. These codes are constructed using plane curves and the estimates for their parameters rely on constructing “lifts” of these curves and then estimating the size of certain exponential sums.