Not retrieving data using Right Join
Yes, the problem seems to be the condition that involves the CashInvoice table. 
It should be moved from WHERE to ON. Besides that, I'd make a few more changes to the query, to make it more readable: 


Refactor using aliases. Makes the queries shorter and easier to read.
Add comments in your code.
Format the queries nicely. No one likes to read code that is 300 characters wide.
Use LEFT JOIN instead of RIGHT JOIN. This is rather a stylistic matter but RIGHT joins are confusing to many. Even worse, if a query combines LEFT and RIGHT joins. I suggest you use one or the other everywhere, with preference to LEFT. This way, the "base" table(s) can be put always first, after the FROM and the "optional" tables in the end. Makes it easier for the future reader to identify which is which, especially when the query has many joins.
Add a statement terminator (;) at the end of every statement. Microsoft recommends that and in future versions non-terminated queries will be throwing errors (some already do).
Adding the WHERE to ON move of the condition,


the query becomes:

SELECT 
    i  . InvoicePaymentId, 
    i  . PaymentDate, 
    i  . InvoicePaymentMethod, 
    i  . IsCashPayment, 
    ci . CashAmount, 
    ci . CashReceived, 
    ci . CashBalance
FROM
        BASE_TInvoice AS i              -- "base" table:      invoice:       i
    LEFT OUTER JOIN 
        BASE_TCashInvoice AS ci         -- "optional" table:  cash invoice:  ci
    ON  
        ci.InvoicePaymentId = i.InvoicePaymentId 
        AND ( ci.IsRecordStatus IS NULL OR ci.IsRecordStatus = 1 ) 
WHERE 
      i.IsRecordStatus = 1  
  AND i.InvoicePaymentId = 1 ;