Q:

why does not update the database and returns this error? 

ERROR: Property [encomendas] does not exist on the Eloquent builder instance. 
Code:
 $update = encomendas::join('encomendas', 'encomendas_detalhes.id_encomenda', '=', 'encomendas.id')
        ->join('users', 'encomendas_detalhes.id_user', '=', 'users.id')
        ->join('encomendas_pagamentos', 'encomendas.id', '=', 'encomendas_pagamentos.id_encomenda')
        ->where('encomendas_pagamentos.entidade', $ENTIDADE)
        ->where('encomendas_pagamentos.referencia', $REFERENCIA)
        ->where('encomendas_pagamentos.valor', $VALOR);

    $update->estado = 2;

    $update->save();

I thank anyone who can help

A:

Because this:
$update = encomendas::join('encomendas', 'encomendas_detalhes.id_encomenda', '=', 'encomendas.id')
        ->join('users', 'encomendas_detalhes.id_user', '=', 'users.id')
        ->join('encomendas_pagamentos', 'encomendas.id', '=', 'encomendas_pagamentos.id_encomenda')
        ->where('encomendas_pagamentos.entidade', $ENTIDADE)
        ->where('encomendas_pagamentos.referencia', $REFERENCIA)
        ->where('encomendas_pagamentos.valor', $VALOR);

returns a Builder instance, not a Model/Collection.  If you need the results, you have to ->get() them, or if you only need to update them, you can just do:
$update = encomendas::join('encomendas', 'encomendas_detalhes.id_encomenda', '=', 'encomendas.id')
        ->join('users', 'encomendas_detalhes.id_user', '=', 'users.id')
        ->join('encomendas_pagamentos', 'encomendas.id', '=', 'encomendas_pagamentos.id_encomenda')
        ->where('encomendas_pagamentos.entidade', $ENTIDADE)
        ->where('encomendas_pagamentos.referencia', $REFERENCIA)
        ->where('encomendas_pagamentos.valor', $VALOR)
        ->update(['estado' => 2]);

