Developing, optimizing, and maintaining a native mileage tracker is a bear, but Tight’s proven iOS SDK removes this burden.Embed robust and mature mileage tracking functionality, without requiring your development team to become experts on geofencing, GPS tracking, reverse geocoding, activities, background updates, and battery optimization in Swift.
The Tight SDK makes use of Swift Package Manager to enable a quick and easy integration pathway for iOS applications. Follow the steps in Tight iOS SDK’s Github repository to install the SDK in your Swift app.
The Tight iOS SDK handles all the various permissions needed for automatic mileage tracking, without requiring your development team to learn all the nuances. When onboarding a new user to mileage tracking, you’ll want to request initial mileage permissions, which includes all necessary mileage-related permissions, in an onboarding-friendly manner.If you’ve already onboarded the user to mileage tracking, but you need to re-request mileage permissions, Tight has a separate request mileage permissions function that is optimized for subsequent (non-onboarding) permission requests.
Typically, Tight customer-partners display a toggle for whether the automatic mileage tracking functionality is enabled. When your user toggles automatic mileage tracking, your app should update the mileage tracking detection mode in the SDK.If your app also include a “start drive” and “stop drive” button for semi-automatic mileage tracking, your app should invoke the start semi-auto drive and stop drive functions, respectively.
Sometimes, users inadvertently revoke the permissions that are needed in order for mileage tracking to work with accuracy. Tight recommends listening for when those errors occur using Tight’s mileage permissions error delegate function, and then simply displaying a button/banner for your user to fix the error. When your user presses that button, you can simply invoke the request mileage permissions function.
{"docsConfig":{"theme":"aspen","$schema":"https://mintlify.com/docs.json","name":"Tight API","colors":{"primary":"#2ab2d1","light":"#2ad17b","dark":"#009c75"},"logo":{"light":"https://mintcdn.com/tight-7c882d74/g3bHUuD81P-TYOyV/logo/light.svg?fit=max\u0026auto=format\u0026n=g3bHUuD81P-TYOyV\u0026q=85\u0026s=7efc18a7fc4dff02d17ed0eb2de01e0c","dark":"https://mintcdn.com/tight-7c882d74/g3bHUuD81P-TYOyV/logo/dark.svg?fit=max\u0026auto=format\u0026n=g3bHUuD81P-TYOyV\u0026q=85\u0026s=59da536242351519afec1ab104b7d80c"},"favicon":"https://mintcdn.com/tight-7c882d74/PBb8Gf8jW9PRt_Fg/favicon.svg?fit=max\u0026auto=format\u0026n=PBb8Gf8jW9PRt_Fg\u0026q=85\u0026s=1871b49a7fbf78ef4003d250529f1140","navbar":{"primary":{"type":"button","label":"Request Access","href":"https://www.tight.com/#get-started"}},"seo":{"metatags":{"canonical":"https://docs.tight.com"}},"integrations":{"ga4":{"measurementId":"G-64X67ZWYYY"}},"contextual":{"options":["claude","assistant","cursor","vscode","mcp","copy","chatgpt","perplexity","view"],"display":"header"},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"tight-7c882d74","hasAudioNarration":false,"actualSubdomain":"tight-7c882d74","customDomains":["docs.tight.com"],"gitSource":{"type":"github","owner":"tight-embedded","repo":"traxdocs","deployBranch":"dev","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6aeb30dfd61fde81da2f4fc3","clientVersion":"0.0.4088","searchFilterCounts":[{"language":"default","tag":"API Reference","count":484},{"language":"default","tag":"Reference","count":481},{"language":"default","tag":"Company Management","count":177},{"language":"default","tag":"Guides","count":88},{"language":"default","tag":"Embedded UI","count":78},{"language":"default","tag":"Integrations","count":69},{"language":"default","tag":"Products","count":62},{"language":"default","tag":"Invoicing","count":45},{"language":"default","tag":"Banks","count":44},{"language":"default","tag":"Transactions","count":40}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"#sidebar:has(~#content-container [data-page-title=\"Playground\"]){display:none}#content-container:has([data-page-title=\"Playground\"]){margin-left:0}#content-area:has([data-page-title=\"Playground\"]) div:has(.chat-assistant-floating-input){display:none}#sidebar-content a{width:auto}#navigation-items{width:100%}"}],"page":{"pagePath":"v5.0/products/mileage-tracking/ios-sdk","slug":"/v5.0/products/mileage-tracking/ios-sdk","pageMetadata":{"title":"iOS Mileage Tracking SDK","slug":"ios-mileage-tracking-sdk","excerpt":"","hidden":false,"createdAt":"Mon Mar 31 2025 12:43:58 GMT+0000 (Coordinated Universal Time)","updatedAt":"Tue Apr 01 2025 22:12:10 GMT+0000 (Coordinated Universal Time)","description":null,"href":"/v5.0/products/mileage-tracking/ios-sdk","hiddenSetByFrontmatter":true},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,p:`p`,..._provideComponents(),...props.components},{Heading,OptimizedImage}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Developing, optimizing, and maintaining a native mileage tracker is a bear, but Tight’s proven iOS SDK removes this burden.`}),`\n`,_jsx(_components.p,{children:`Embed robust and mature mileage tracking functionality, without requiring your development team to become experts on geofencing, GPS tracking, reverse geocoding, activities, background updates, and battery optimization in Swift.`}),`\n`,_jsx(Heading,{level:`1`,id:`how-it-works`,children:`How it works`}),`\n`,_jsx(_components.p,{children:`The Tight iOS SDK handles all location-related permissions, language, and error states, such that you simply need to add UI into your mobile app for enabling mileage tracker and then invoke the Tight SDK.`}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/tight-7c882d74/Wf-_-tBNZrYWdgZf/v5.0/images/60dd85c96968f432a8c19843a070b4df8113a8d69bc95739dd49e8c3e09d9f85-iOS_Mileage_Demo.gif?s=3d823336d4cdaaf4cdb72a55d70f74de`,alt:`60dd85c96968f432a8c19843a070b4df8113a8d69bc95739dd49e8c3e09d9f85-iOS_Mileage_Demo.gif`,\"data-og-width\":`279`,width:`279`,\"data-og-height\":`600`,height:`600`,\"data-path\":`v5.0/images/60dd85c96968f432a8c19843a070b4df8113a8d69bc95739dd49e8c3e09d9f85-iOS_Mileage_Demo.gif`,\"data-optimize\":`true`,\"data-opv\":`3`}),`\n`,_jsxs(_components.p,{children:[`Tight supports `,_jsx(_components.a,{href:`/v5.0/products/mileage-tracking#automatic-mileage-tracking`,children:`automatic mileage tracking`}),`, `,_jsx(_components.a,{href:`/v5.0/products/mileage-tracking#semi-automatic-mileage-tracking`,children:`semi-automatic mileage tracking`}),`, and `,_jsx(_components.a,{href:`/v5.0/products/mileage-tracking#manual-mileage-tracking`,children:`manual mileage tracking`}),`, for both `,_jsx(_components.a,{href:`/v5.0/products/mileage-tracking#business-owneroperators`,children:`business owner-operators`}),` and `,_jsx(_components.a,{href:`/v5.0/products/mileage-tracking#employee-reimbursement`,children:`employees seeking reimbursement`}),`.`]}),`\n`,_jsx(Heading,{level:`1`,id:`getting-started`,children:`Getting started`}),`\n`,_jsx(Heading,{level:`2`,id:`set-up-the-sdk-using-swift-package-manager`,children:`Set up the SDK using Swift Package Manager`}),`\n`,_jsxs(_components.p,{children:[`The Tight SDK makes use of Swift Package Manager to enable a quick and easy integration pathway for iOS applications. Follow the steps in `,_jsx(_components.a,{href:`https://github.com/Hurdlr/tight-ios-sdk?tab=readme-ov-file#package-installation-with-swift-package-manager`,children:`Tight iOS SDK’s Github repository`}),` to install the SDK in your Swift app.`]}),`\n`,_jsx(Heading,{level:`2`,id:`initialize-the-sdk`,children:`Initialize the SDK`}),`\n`,_jsxs(_components.p,{children:[`When your user logs into your iOS app, you’ll want to `,_jsx(_components.a,{href:`https://github.com/Hurdlr/tight-ios-sdk?tab=readme-ov-file#initializeaccesstoken--string-async-throws`,children:`initialize the Tight iOS SDK`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`request-permissions`,children:`Request permissions`}),`\n`,_jsxs(_components.p,{children:[`The Tight iOS SDK handles all the various permissions needed for automatic mileage tracking, without requiring your development team to learn all the nuances. When onboarding a new user to mileage tracking, you’ll want to `,_jsx(_components.a,{href:`https://github.com/Hurdlr/tight-ios-sdk?tab=readme-ov-file#requestinitialmileagepermissionsviewcontroller-uiviewcontroller`,children:`request initial mileage permissions`}),`, which includes all necessary mileage-related permissions, in an onboarding-friendly manner.`]}),`\n`,_jsxs(_components.p,{children:[`If you’ve already onboarded the user to mileage tracking, but you need to re-request mileage permissions, Tight has a separate `,_jsx(_components.a,{href:`https://github.com/Hurdlr/tight-ios-sdk?tab=readme-ov-file#requestmileagepermissionsviewcontroller-uiviewcontroller`,children:`request mileage permissions`}),` function that is optimized for subsequent (non-onboarding) permission requests.`]}),`\n`,_jsx(Heading,{level:`2`,id:`start-mileage-tracking`,children:`Start mileage tracking`}),`\n`,_jsxs(_components.p,{children:[`Typically, Tight customer-partners display a toggle for whether the automatic mileage tracking functionality is enabled. When your user toggles automatic mileage tracking, your app should `,_jsx(_components.a,{href:`https://github.com/Hurdlr/tight-ios-sdk?tab=readme-ov-file#setmileagedetectionmodemileagedetectionmode-mileagedetectionmode-async-throws`,children:`update the mileage tracking detection mode in the SDK`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`If your app also include a “start drive” and “stop drive” button for semi-automatic mileage tracking, your app should invoke the `,_jsx(_components.a,{href:`https://github.com/Hurdlr/tight-ios-sdk?tab=readme-ov-file#startsemiautodrive-async-throws`,children:`start semi-auto drive`}),` and `,_jsx(_components.a,{href:`https://github.com/Hurdlr/tight-ios-sdk?tab=readme-ov-file#stopdrive-async`,children:`stop drive`}),` functions, respectively.`]}),`\n`,_jsx(Heading,{level:`2`,id:`display-permissions-errors-if-needed`,children:`Display permissions errors if needed`}),`\n`,_jsxs(_components.p,{children:[`Sometimes, users inadvertently revoke the permissions that are needed in order for mileage tracking to work with accuracy. Tight recommends listening for when those errors occur using Tight’s `,_jsx(_components.a,{href:`https://github.com/Hurdlr/tight-ios-sdk?tab=readme-ov-file#didmileagepermissionserroroccur`,children:`mileage permissions error delegate function`}),`, and then simply displaying a button/banner for your user to fix the error. When your user presses that button, you can simply invoke the `,_jsx(_components.a,{href:`https://github.com/Hurdlr/tight-ios-sdk?tab=readme-ov-file#requestmileagepermissionsviewcontroller-uiviewcontroller`,children:`request mileage permissions`}),` function.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"iOS Mileage Tracking SDK","slug":"ios-mileage-tracking-sdk","excerpt":"","hidden":false,"createdAt":"Mon Mar 31 2025 12:43:58 GMT+0000 (Coordinated Universal Time)","updatedAt":"Tue Apr 01 2025 22:12:10 GMT+0000 (Coordinated Universal Time)","description":null,"href":"/v5.0/products/mileage-tracking/ios-sdk","hiddenSetByFrontmatter":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"How it works","slug":"how-it-works","depth":1,"children":[]},{"title":"Getting started","slug":"getting-started","depth":1,"children":[]},{"title":"Set up the SDK using Swift Package Manager","slug":"set-up-the-sdk-using-swift-package-manager","depth":2,"children":[]},{"title":"Initialize the SDK","slug":"initialize-the-sdk","depth":2,"children":[]},{"title":"Request permissions","slug":"request-permissions","depth":2,"children":[]},{"title":"Start mileage tracking","slug":"start-mileage-tracking","depth":2,"children":[]},{"title":"Display permissions errors if needed","slug":"display-permissions-errors-if-needed","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"tight-7c882d74","siteName":"Tight API","title":"iOS Mileage Tracking SDK - Tight API","navMaps":{"firstHrefInVersion":{"v6.0":{"href":"/guides/business-owners/bank-transactions","matchLevel":2},"v5.0":{"href":"/v5.0/products/mileage-tracking/ios-sdk","matchLevel":0},"v4.0":{"href":"/v4.0/api-reference/authentication/create-a-tight-account","matchLevel":4}},"firstHrefInLanguage":{}},"lastModified":"2026-11-02T17:40:52.429Z","originalFileLocation":"v5.0/products/mileage-tracking/ios-sdk.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"application-name\" content=\"Tight API\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/tight-7c882d74/jFRG6eBf-CGG_9G0/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/tight-7c882d74/jFRG6eBf-CGG_9G0/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/tight-7c882d74/jFRG6eBf-CGG_9G0/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/tight-7c882d74/jFRG6eBf-CGG_9G0/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/tight-7c882d74/jFRG6eBf-CGG_9G0/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/tight-7c882d74/jFRG6eBf-CGG_9G0/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/tight-7c882d74/jFRG6eBf-CGG_9G0/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/tight-7c882d74/jFRG6eBf-CGG_9G0/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/tight-7c882d74/jFRG6eBf-CGG_9G0/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"iOS Mileage Tracking SDK - Tight API\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Tight API\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.tight.com/v5.0/products/mileage-tracking/ios-sdk\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://tight-7c882d74.mintlify.site/_mintlify/api/og/v2?division=Mileage+Tracking\u0026amp;title=iOS+Mileage+Tracking+SDK\u0026amp;theme=ca0c5593681485dcdd2fa8b5\u0026amp;signature=0e28a1ebe5d5b68f8d2ec22cc93ad42d203b369e3812eb5e17a20fd499547b59\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"iOS Mileage Tracking SDK - Tight API\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://tight-7c882d74.mintlify.site/_mintlify/api/og/v2?division=Mileage+Tracking\u0026amp;title=iOS+Mileage+Tracking+SDK\u0026amp;theme=ca0c5593681485dcdd2fa8b5\u0026amp;signature=0e28a1ebe5d5b68f8d2ec22cc93ad42d203b369e3812eb5e17a20fd499547b59\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/tight-7c882d74/jFRG6eBf-CGG_9G0/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Tight API\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#2ab2d1\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.tight.com/v5.0/products/mileage-tracking/ios-sdk\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/v5.0/products/mileage-tracking/ios-sdk.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.tight.com/#organization\",\"name\":\"Tight API\",\"url\":\"https://docs.tight.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/tight-7c882d74/g3bHUuD81P-TYOyV/logo/light.svg?fit=max\u0026auto=format\u0026n=g3bHUuD81P-TYOyV\u0026q=85\u0026s=7efc18a7fc4dff02d17ed0eb2de01e0c\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.tight.com#website\",\"name\":\"Tight API\",\"url\":\"https://docs.tight.com\",\"publisher\":{\"@id\":\"https://docs.tight.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.tight.com/v5.0/products/mileage-tracking/ios-sdk#webpage\",\"url\":\"https://docs.tight.com/v5.0/products/mileage-tracking/ios-sdk\",\"name\":\"iOS Mileage Tracking SDK\",\"dateModified\":\"2026-11-02T17:40:52.429Z\",\"isPartOf\":{\"@id\":\"https://docs.tight.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.tight.com/v5.0/products/mileage-tracking/ios-sdk#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.tight.com/v5.0/products/mileage-tracking/ios-sdk#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Products\",\"item\":\"https://docs.tight.com/v5.0/products/accounting/bookkeepers/accountant-dashboard\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"iOS Mileage Tracking SDK\",\"item\":\"https://docs.tight.com/v5.0/products/mileage-tracking/ios-sdk\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.tight.com/v5.0/products/mileage-tracking/ios-sdk#article\",\"headline\":\"iOS Mileage Tracking SDK\",\"name\":\"iOS Mileage Tracking SDK\",\"url\":\"https://docs.tight.com/v5.0/products/mileage-tracking/ios-sdk\",\"mainEntityOfPage\":{\"@id\":\"https://docs.tight.com/v5.0/products/mileage-tracking/ios-sdk#webpage\"},\"dateModified\":\"2026-11-02T17:40:52.429Z\",\"publisher\":{\"@id\":\"https://docs.tight.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.tight.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Tight API\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Tight API","nav":{"global":null,"versions":[{"version":"v6.0","pages":[{"title":"v6.0","href":"/guides/business-owners/bank-transactions"}]},{"version":"v5.0","tabs":[{"tab":"Guides","icon":"guides","groups":[{"group":"Getting Started","pages":[{"title":"Welcome to the Tight API","hidden":false,"href":"/v5.0/getting-started/overview"},{"group":"Quickstart","pages":[{"title":"User Creation","hidden":false,"href":"/v5.0/getting-started/quickstart/user-creation"},{"title":"Data Sources","hidden":false,"href":"/v5.0/getting-started/quickstart/data-sources"},{"title":"Embedded UI","hidden":false,"href":"/v5.0/getting-started/quickstart/embedded-ui"},{"title":"Launch","hidden":false,"href":"/v5.0/getting-started/quickstart/launch"},{"title":"User Activation","hidden":false,"href":"/v5.0/getting-started/quickstart/user-activation"}]},{"group":"API Patterns","pages":[{"title":"Authentication","hidden":false,"href":"/v5.0/getting-started/api-patterns/authentication"},{"title":"Pagination","hidden":false,"href":"/v5.0/getting-started/api-patterns/pagination"},{"title":"Webhooks","hidden":false,"href":"/v5.0/getting-started/api-patterns/webhooks"},{"title":"Rate Limiting","hidden":false,"href":"/v5.0/getting-started/api-patterns/rate-limiting"},{"title":"Errors","href":"/v5.0/getting-started/api-patterns/errors"}]}]},{"group":"Products","pages":[{"group":"Accounting","pages":[{"group":"Bookkeepers","pages":[{"title":"Accountant Dashboard","hidden":false,"href":"/v5.0/products/accounting/bookkeepers/accountant-dashboard"},{"title":"Client-facing Dashboard","hidden":false,"href":"/v5.0/products/accounting/bookkeepers/client-facing-dashboard"}]},{"title":"Chart of Accounts","hidden":false,"href":"/v5.0/products/accounting/chart-of-accounts"},{"title":"General Ledger","hidden":false,"href":"/v5.0/products/accounting/general-ledger"}]},{"group":"Bank Transactions","pages":[{"group":"Expenses","pages":[{"title":"Data Sources","hidden":false,"href":"/v5.0/products/bank-transactions/expenses/data-sources"},{"title":"Business Categorization","hidden":false,"href":"/v5.0/products/bank-transactions/expenses/business-categorization"},{"title":"Tax Categorization","hidden":false,"href":"/v5.0/products/bank-transactions/expenses/tax-categorization"},{"title":"Personal Expenses","hidden":false,"href":"/v5.0/products/bank-transactions/expenses/personal-expenses"}]},{"group":"Income","pages":[{"title":"Data Sources","hidden":false,"href":"/v5.0/products/bank-transactions/income/data-sources"},{"title":"Self-Employed \u0026 Business Income","hidden":false,"href":"/v5.0/products/bank-transactions/income/self-employed-business-income"},{"title":"Investment Income","hidden":false,"href":"/v5.0/products/bank-transactions/income/investment-income"},{"title":"Personal Income (W-2)","hidden":false,"href":"/v5.0/products/bank-transactions/income/personal-income-w2"}]}]},{"group":"Data Lakes","pages":[{"title":"Amazon S3 Data Lake","hidden":false,"href":"/v5.0/products/data-lakes/amazon-s3"},{"title":"Google Cloud Storage Data Lake","hidden":false,"href":"/v5.0/products/data-lakes/google-cloud-storage"},{"title":"Lifecycle Event Dictionary","href":"/v5.0/products/data-lakes/lifecycle-event-dictionary"}]},{"group":"Financial Statements","pages":[{"title":"Accounting Reports","hidden":false,"href":"/v5.0/products/financial-statements/accounting-reports"},{"title":"Income Reports","hidden":false,"href":"/v5.0/products/financial-statements/income-reports"},{"title":"Expense Reports","hidden":false,"href":"/v5.0/products/financial-statements/expense-reports"}]},{"group":"Imports","pages":[{"title":"Bench","hidden":false,"href":"/v5.0/products/imports/bench"},{"title":"QuickBooks Online","hidden":false,"href":"/v5.0/products/imports/quickbooks-online"},{"title":"Xero","hidden":false,"href":"/v5.0/products/imports/xero"}]},{"group":"Invoicing","pages":[{"title":"Customizing Design \u0026 Branding","hidden":false,"href":"/v5.0/products/invoicing/design-branding"},{"title":"Creating a Client","hidden":false,"href":"/v5.0/products/invoicing/creating-a-client"},{"title":"Creating an Invoice Draft/Quote","hidden":false,"href":"/v5.0/products/invoicing/creating-invoice-draft"},{"title":"Finalizing an Invoice","hidden":false,"href":"/v5.0/products/invoicing/finalizing-invoice"},{"title":"Managing Finalized Invoices","hidden":false,"href":"/v5.0/products/invoicing/managing-finalized-invoices"},{"title":"Payment Processing","hidden":false,"href":"/v5.0/products/invoicing/payment-processing"},{"title":"Embeddable User Interface (Invoice Dashboard)","hidden":false,"href":"/v5.0/products/invoicing/embeddable-invoice-dashboard"},{"title":"Embeddable User Interface (Client-facing Invoice)","hidden":false,"description":null,"href":"/v5.0/products/invoicing/embeddable-client-facing-invoice"}]},{"group":"Mileage Tracking","pages":[{"title":"iOS Mileage Tracking SDK","hidden":false,"href":"/v5.0/products/mileage-tracking/ios-sdk"},{"title":"Android Mileage Tracking SDK","hidden":false,"description":null,"href":"/v5.0/products/mileage-tracking/android-sdk"}]},{"group":"Taxes","pages":[{"group":"Tax Estimates","pages":[{"title":"Tax Profile","hidden":false,"href":"/v5.0/products/taxes/tax-estimates/tax-profile"},{"title":"Income Streams","hidden":false,"href":"/v5.0/products/taxes/tax-estimates/income-streams"},{"title":"Tax Estimates","hidden":false,"href":"/v5.0/products/taxes/tax-estimates/tax-estimates"},{"title":"Embeddable User Interface (Tax Dashboard)","hidden":false,"href":"/v5.0/products/taxes/tax-estimates/embeddable-tax-dashboard"}]},{"group":"Tax Reporting","pages":[{"title":"Schedule C","hidden":false,"href":"/v5.0/products/taxes/tax-reporting/schedule-c"},{"title":"Schedule E (coming soon)","hidden":false,"href":"/v5.0/products/taxes/tax-reporting/schedule-e"},{"title":"Form 1065","hidden":false,"href":"/v5.0/products/taxes/tax-reporting/form-1065"},{"title":"Form 1120-S","hidden":false,"href":"/v5.0/products/taxes/tax-reporting/form-1120-s"},{"title":"Form 1120","hidden":false,"href":"/v5.0/products/taxes/tax-reporting/form-1120"},{"title":"T2125 (Canada)","hidden":false,"href":"/v5.0/products/taxes/tax-reporting/t2125-canada"}]},{"title":"Tax Filing","hidden":false,"href":"/v5.0/products/taxes/tax-filing"}]}]},{"group":"International Support","pages":[{"title":"Canada","hidden":false,"href":"/v5.0/international-support/canada"}]}]},{"tab":"Embedded UI","pages":[{"title":"Embedded UI","href":"/v5.0/embeddable-ui/white-labeled-experience/business-owner-ux"}]},{"tab":"Integrations","pages":[{"title":"Integrations","href":"/v5.0/integrations/overview"}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/v5.0/api-reference/authentication/create-a-tight-account"}]},{"tab":"Playground","pages":[{"title":"Playground","href":"/v5.0/playground"}]},{"tab":"Releases","pages":[{"title":"Releases","href":"/roadmap/releases"}]},{"tab":"API Status","href":"https://status.tight.com/"}]},{"version":"v4.0","pages":[{"title":"v4.0","href":"/v4.0/api-reference/authentication/create-a-tight-account"}]}]},"basePath":"","title":"iOS Mileage Tracking SDK - Tight API","buildId":"dpl_DTau1J5HqS9UTgVSDwGksstFWtPa","deploymentId":"dpl_DTau1J5HqS9UTgVSDwGksstFWtPa","dynamics":["a74be98ba7"],"chunks":["zoom-image-lightbox-BFbLClTf.js","lightbox-handle-r17bVUz3.js"]}