@Test
public void test1111() {
    Predicate<Payment> idIs1 = payment -> "1".equals(payment.getId());
    Predicate<Payment> amountIsMoreThen30 = payment -> payment.getAmount() > 30L;
    Predicate<Payment> amountRestIs1 = payment -> (payment.getAmount() % 10L) == 1;

    Stream.of(
        new Payment("1", 31),
        new Payment("1", 40)
    )
        .filter(idIs1.or(amountIsMoreThen30).and(amountRestIs1))
        .forEach(System.out::println);
}

@Data
@AllArgsConstructor
class Payment {
    String id;
    long amount;
}