We need a class with this methods: Configure: enable the user to change bank of origin. The method "configure" must be able to use at least 2 protocols: web request, web service, and must be able to change bank For example: a bank can allows communications with "Get/post" calls, others banks via web services This method must be bank indipendent. You Can reach this objective, implementing custom parameters, to support the different parameters that banks can have... Pay Credit Card: enable the user to move money from the origin bank account to a credit card. Pay Bank account: enable the user to transfer money from the origin bank account to destination bank account. You cannot use paypal. We don't need user interface, but only the business class and the source code. We need a list of banks supporting this features and the relative price of the service, as a separate deliverable (excel: name, price, note). The 2 methods that transfer money must handle detailed errors. If the bank has an ipn system (the answer of the transaction is asyncronous), you shoud handle the response with a specific method that query or receive the response. This is only an overview, if you are interested you will receive the full contract