These need to match, but don't:

    apply_filters( 'document_template', $path, $template );

and

    add_filter( 'documents_template','my_template', 10, 2 );

`document_template` != `documents_template`

Otherwise, everything looks correct.

### Edit ###

Wait, not everything looks correct. I don't think you want to add a parameter to your callback function definition. Instead, you need to define `$template` within the callback, or simply pass it back unmodified. So, replace this:

    function my_template( $template = '' ){

...with this:

    function my_template(){

e.g.:

    function my_template(){
    
          $path = MY_INCLUDES_DIR . '/document/'. $template;
    
         return $path;
    }
    add_filter( 'documents_template','my_template', 10, 2 );