This needs to handle ``buyer['errors']``. I don't actually see anything that uses ``buyer_has_pin()`` so I'm not sure if it's helpful or not. You could raise an informative exception, I suppose, which would be slightly better than KeyError.