How Long Do Points and Miles Transfers Take?
Last updated: November 10, 2026
How long do point transfers take? AwardWallet measures these times rather than estimating them. We run transfers ourselves and record when the points land. We also learn from members who set up a balance watch on the destination program after initiating a transfer, telling us which program the points are coming from and when they started. We then check the destination account at least hourly, and members often refresh manually far more often, so we can identify the arrival moment closely. Averaging across many transfers of the same pair is what produces the figures below.
This page covers 600+ transfer pairs across
-
Australia
-
New Zealand
-
United Kingdom
-
Canada
-
Singapore
-
United States
-
Germany
-
Hong Kong
-
India
-
Taiwan
-
Brazil
-
Saudi Arabia
Frequently Asked Questions
q: How long do Amex points take to transfer?
a: Most Amex Membership Rewards transfers to airline partners post immediately, though some partners take a day or more.
q: Are point transfers reversible?
a: No. Transfers from a bank program to an airline or hotel program are generally irreversible once submitted.
Developer access: Mile Transfer Times API
Build with AwardWallet's measured transfer speeds. Use our public endpoints to fetch how long point transfers really take across bank, airline, and hotel programs, including card-specific rates and ratios.
Endpoints
-
API (OpenAPI 3.1):
https://loyalty.awardwallet.com/v1/mile-transfer-times/openapi-3.1.0.yml
Usage & attribution (rules of engagement)
You're free to use this data in your products as long as you clearly attribute AwardWallet, link to this page, and keep our links live:
- Include this line: “Transfer times are measured and managed by AwardWallet.”
- Link: https://awardwallet.com/mile-transfer-times
- If you display this data, you must also display AwardWallet's links (the buy_url field and any links inside message_html) as active, clickable links. Removing, rewriting, or cloaking them is not permitted.
Data details
- Unit: hours (durations may include a decimal part; 0 = immediate, null = not enough data yet)
- Shape: single transfers[] array, one object per source/target pair
- Card-specific rates are split into variants[]; credit_cards: null means the rate applies to all cards
- Each variant includes ratio, min_transfer, duration, bonus, message_html, buy_url
Caching
- Responses include ETag and meta.data_hash for cache validation.
- We recommend respecting Cache-Control and using conditional requests.
Examples
API (OpenAPI 3.1)
curl -s https://loyalty.awardwallet.com/v1/mile-transfer-times/list \
-H 'Accept: application/json'
JavaScript (fetch)
const res = await fetch('https://loyalty.awardwallet.com/v1/mile-transfer-times/list', {
headers: { 'Accept': 'application/json' }
});
const data = await res.json();
/* Example filter: pairs with at least one immediate transfer */
const instant = data.transfers.filter(t =>
t.variants.some(v => v.duration.max_hours === 0)
);
Conditional fetch with ETag
curl 'https://loyalty.awardwallet.com/v1/mile-transfer-times/list' -v -H 'If-None-Match: "your-saved-etag-from-last-fetch"' -q
The server will return '304 Not Modified' with an empty body if there is no new data, and '200 OK' with the new data if there is new data.
Versioning
- Current version: v1 (/v1/…).
- If the schema changes, we’ll introduce /v2 and keep /v1 available for a deprecation window.