Are you interested in listing all paths or just counting them?
Counting is rather easy and can be done in O(Vk) time:
Augment your graph so all paths are of length k. For example let's assume you have a path of length k-1. What you would do is add a vertex with 1 incoming degree and 1 outgoing degree connecting the last node before the sink and the sink, et voila - it's of length k. We are essentially constructing a multipartite graph and we would like to preserve an important property here for later - each node is in the jth stage of the this augmented graph if the longest path from source to it is of length j. You can perform this with an easy algorithm with time complexity O(Vk) or if you want a tighter bound given that each node has constant number of edges C O(C×V^2):
Begin with frontier just the sink
Every iteration i (initially i=1):
Visit all nodes with incoming edges from the frontier.
Set their value to i and add them to the next frontier.
At the end you will have the longest path to each node and that's the stage in the multipartite graph it will belong. To connect nodes that are no longer in neighbouring stages, simply add an augmented node as described above in each stage between them until they are connected
Start from sink with value 1.
Send this value to all vertices the sink is connected to.
From here column by column by column:
Sum all values received by a vertex.
Send them to all vertices it is connected to.
Continue until you have reached the sinks.
This will give you the number of unique paths to each sink
The last algorithm can be avoided by just multiplying the connectivity matrix of each stage to its next one with the current values of the stages as a vector.