Ubercart has a fairly straightforward API for processing and logging payments that is quite similar in both the 1.x and 2.x branches. As a developer, you may run into a situation where you need to make manual note of external payments or trigger the automatic processing of payments based on your business rules. In Ubercart, there is a difference between processing a payment with the function uc_payment_process() and just recording a payment with the function uc_payment_enter(). To explain the difference, you should first understand a few concepts related to the payment system in Ubercart and how payment data is displayed to customers and administrators. After covering the terms and concepts, a full description of both functions mentioned above will be given followed by a section on using the API to process credit card transactions in your own code.