The problem is that the ref you are using (under refs/pull-request/* ) is only internal and does not appear in the Bitbucket web interface.
Imagine you have a repo on a Bitbucket server, for example:

Now suppose you are creating a PR from a branch to master. The link displayed in the Bitbucket user interface does not change, but git clone --mirror shows hidden refs/pull-request/* refs that are created behind the scenes:
git clone --mirror http://vm.bit-booster.com/bitbucket/scm/bb/rebase-example-1.git cd ./rebase-example-1.git git log --all --date-order --decorate --graph
Result:

Having Team City, Jenkins or Bamboo, or any other using refs/pull-requests/1/merge (e.g. 01ebefda503c in this example) has one major advantage over building a branch . You must proactively build the real thing (merger) before actually merging. It is like peering into the future.
But it has one main drawback, if you then try to publish the assembly status using the same ref. The Commit id 01ebefda503c not displayed in the Bitbucket user interface, so pull-request build state integration will not receive a successful (or unsuccessful) build.
But there is a great workaround. Let Team City (or Jenkins or Bamboo, etc.) aimlessly push the build status to a preventive merge, and then use curl to hide a copy of the same build status HEAD ^ 2, aka 01ebefda503c^2 aka e466842138b65 .
Same:
curl --user user:password -H "Content-Type: application/json" -X POST -d \ '{"state":"SUCCESSFUL", "key":"K", "name":"K-9", "url":"http://bit-booster.com/"}' \ http://vm.bit-booster.com/bitbucket/rest/build-status/1.0/commits/e466842138b658a1b09caa0b1caea065194311ce
Then the build status will be visible on PR.
And unload my Bitbucket add-on . :-)