Se o script payload.sh não estiver saindo com um exit 0 ou exit 1 explícito, o status de saída será o último comando no script.
Se este último comando, por exemplo, rm something 2>/dev/null , o status de saída será diferente de zero se something não puder ser encontrado ou removido.
No script que você mostrou, você está testando corretamente a variável $? . Você também pode simplificar o teste para o equivalente
if sh payload.sh; then
echo "Success"
else
echo "Failure"
fi