There will inevitably be frequency offsets and time offsets in the OP’s receiver, given the receiver is working on a completely independent clock, so cannot have the exact same carrier frequency (and in the case of mobile stations there is also Doppler offset). The typical BPSK receiver will use carrier and timing recovery loops to extract the estimates of the carrier and time offset from the signal itself.
A very simple carrier recovery for BPSK is done by simply squaring the received signal, which will produce a dominant synchronized tone at twice the carrier frequency. On its own this would usually be too noisy to use as the carrier, so is typically locked to a clean local oscillator using a PLL and then dividing the resulting frequency by two, which is then multiplied by the received signal to demodulate the BPSK signal. If one has the flexibility of using a carrier that is an integer multiple of tour symbol clock, then timing recovery can be done simply with additional frequency dividers; otherwise the Gardner Timing Loop described in the links below can be considered (an error discriminator is needed such as the Gardner Timing Error Detector; this error then gets accumulated and the accumulated error weighted by the desired loop gain controls the sampling location for the timing clock resulting in true recovered data).
The recovered carrier will have 0/180° phase ambiguity so further information to resolve this is encoded in the data itself. Data can be encoded with a known preamble that has many data transitions to allow for resolving this ambiguity and also to answer the OP’a multipath question, help train a channel equalizer. An example preamble could be a 11 bit barker code (10110111000) followed by (1010101010), or depending on acquisition SNR required could be a longer series of these or similar codes. The barker code has the excellent autocorrelation property that it is not highly correlated with shifted versions of itself so can help establish the correct start of a data packet. This autocorrelation property (ideally an impulse at $\tau$ = 0 ) is also ideal for training an equalizer since it is approximately white in frequency: An equalizer can only compensate for the frequencies it has measurements for. The 101010...sequence is very friendly to timing recovery given the transitions on every bit.
In addition the signal level will likely be variable so one would likely want to have an AGC (automatic gain control) loop as well.
Other posts where I provide more details on carrier and timing recovery and equalization all applicable to BPSK are summarized below:
Carrier Recovery:
Phase synchronization in BPSK
FFT-based coarse carrier recovery for QPSK
High modulation index PSK - carrier recovery
Recovering signal for psk
Timing Recovery:
High modulation index PSK - carrier recovery
Location of Matched Filter
Isn't Gardner's algorithm and Early-Late gate the same thing?
Channel Equalization:
Compensating Loudspeaker frequency response in an audio signal
non linear equalizer vs linear equalizer
Does zero-forcing equalizer need known channel impulse response?
The benefits of a fractionally spaced equalizer
Recursive Least Square Adaptive Linear Equalizer