There is an incredible amount that you can do with the features contained within eZ publish but there are times when there's a specific feature that you require.
eZ publish allows you to create your own modules to extend the system to meet your specific needs. It does this through the extension system that allows you to program the functionality you need, and then incorporate it into the rest of the system.
Before you embark on creating an extension, you should see if someone has done the work for you; no need to reinvent the wheel! There are many extensions that have already been created and contributed to the community; chances are you can find something that will suit your needs or that you can use as a starting point, e.g. there are a number of payment gateways that have been built that you can install, others include import/export functions, workflows, datatype plugins, etc. The other thing to consider is whether the functionality you are after is on the road map for the next...