Reduce a list into another list with java 8 streams

I can’t figure out how to use java 8 streams to reduce my initial list into secondary lists that join together in the end as a bigger list, all of this using a return value of my custom function.

initialList.stream()
  .map(item -> customFnThatReturnsList(item, value))
  .flatMap(Collection::stream).collect(Collectors.toList());

This would work, but I also need to reduce value with each iteration.
I actually don’t even know if this is possible.

Edit: trying to make it clearer:

BigDecimal value = BigDecimal.valueOf(500);
List<SubItem> finalList = new ArrayList<>():
for (Item item : initialList) {
  List<SubItem> returnList = customFnThatReturnsList(item, value);
  finalList.addAll(returnList);
  value = value.subtract(item.getSubValue());
  if (BigDecimal.ZERO.compareTo(valor) == 0) {
    break;
  }
}