You probably don't have data below A3 and it's going to the last cell in the column, which can't have an offset of 1 row, because it's the last row. Also, no need for selecting anything.
In looking at your code you're copying one cell to another, then just copying another cell and doing nothing with it. Not sure what you're trying to do here. A detailed explanation would help. I'm not entirely sure what the 'wb1' variable is for. And I'd be careful about using ActiveWorkbook. If the code is being called in the desired workbook, then 'ThisWorkbook' is a more definitive object.
A point about the logic here, this isn't really the best way to go. I'm assuming for the moment that you're wanting to paste the value of the specified cell into the next available cell in column B of the 'Customer Funds Received' sheet. Instead of going from the top-down, go from the bottom-up. Of course there are things which could make this logic fallible as well, such as having data below the desired range, or having your data in a Table (both of which can be worked around though).
Also, if you're only moving values, there's no real need to copy, you can just set one cell's Value to equal the other.
The code below is untested, and I removed the last two superfluous lines of code...
Dim wb1 As Workbook
Dim wb4 As Workbook
Dim CopySheet As Worksheet
Dim PasteSheet As Worksheet
Dim CopyRange As Range
Dim PasteRange As Range
Set wb1 = Application.Workbooks("General_Account_Ledger.xls")
Set wb4 = ActiveWorkbook
Set CopySheet = wb4.Sheets("Customer Funds Received")
Set PasteSheet = wb4.Sheets("Customer Ledger")
Set CopyRange = CopySheet.Range("B10")
Set PasteRange = PasteSheet.Cells(PasteSheet.Rows.Count, "A").End(xlUp).Offset(1, 0)
PasteRange.Value = CopyRange.Value