Sandbox is not behaving as in production regarding products requiring upfront fare pricing.
In production, requesting for such product will return error with status=422
and code=upfront_fare_required
, which is expected behavior. By the way, this error code should be added to API docs. (Currently not listed in https://developer.uber.com/docs/riders/references/api/v1.2/requests-post#http-error-codes)
But most importantly, sandbox should behave like production environment and return an error if no fare_id
is provided when requesting a product that requires upfront fare pricing.
Thanks for pointing out to this inconsistency between sandbox and production environment. We confirmed behaviour you described in your post - and we will consider fixing sandbox behaviour in the future - there is no timeline when this will be done.