Checking balance of a travel card with Selenium
Your code is actually quite clean and readable, good job. Here are some of the things I would consider changing:


you can simplify get_credentials() a bit, using the tuple packing/unpacking:

def get_credentials():
    """Get user credentials from a JSON file."""
    with open('auth.json', 'r') as f:
        auth = json.load(f)
        return auth['username'], auth['password']

end your docstrings with a dot as per PEP8
if the page manipulation selenium code is going to continue grow, you should definitely consider switching to using Page Object pattern building abstractions around the webpages you are working with. But, for this kind of problem, it is perfectly fine to not use page objects
div.pull-left does not look like a good quality locator. It may work now, but this locator is fragile because it is design-specific (pull-left is a bootstrap class used for page layout). See if this element has an id or a data-oriented class or a data-oriented attribute.