As the naming external_id implies, sounds it should be an ID, so user may misunderstand it, they may think it should be a GUID like CUXXXXXXX... from balanced service. However, it actually accepts only a complete URI in /v1/customers/CUXXXXX format. In that way, user may waste their time in trying it with invalid customer external id.
I am thinking renaming the external_id to external_uri, it would be more clear that it is an URI rather than an ID. Also, I think maybe we can call Balanced API before creating a customer record in Billy to make sure the given value is valid. By make failure happens as earlier as possible, users don't have to wait for a period to see what's wrong there from transactions error message.