Connect to 11 high-speed ferry operators in Vietnam through one interface: timetables, seat maps, bookings, ticket issuance and status webhooks.
1# 1 · Search voyages by pier pair and date (illustrative params)2curl https://api.ferry.vn/api/v1/voyages/findAllRelateByLocationAndDate \3 -H "Authorization: Bearer $FERRY_API_KEY"45# 2 · Create a booking (holds seats)6curl -X POST https://api.ferry.vn/api/v1/bookings -d @booking.json78# 3 · Confirm ticket issuance9curl -X POST https://api.ferry.vn/api/v1/bookings/confirmToIssue/{id}1011# 4 · Source of truth — status 10 = issued12curl https://api.ferry.vn/api/v1/bookings/{id}
- 07:00:12booking.createdFVN-7Q2K9
- 07:00:13order.createdFVN-7Q2K9-1
- 07:00:31booking.issuedTicketFVN-7Q2K9
- 07:00:31order.issuedTicketFVN-7Q2K9-1
- 07:00:33invoice.publishedHĐ 0012841
Ferry VN tickets are sold on
- Trip.com
- GetYourGuide
- 12Go
- Klook
- Viator
- Tatinta
- Prefix
- /api/v1/<resource>
- Authentication
- Authorization: Bearer <API_KEY> — created by an agency admin in the dashboard
- Payload
- application/json, up to 1 MB per request; unknown fields are dropped
- Pagination
- Cursor-based: limit defaults to 10, max 50; next page uses cursor = nextCursor
- Time
- Responses in UTC (ISO-8601); search dates sent as YYYY-MM-DD in Vietnam time
- Currency
- VND, integers
- 01GET
/api/v1/voyages/findAllRelateByLocationAndDateSearch voyages
Timetables between two piers by date, with availability and seat maps.
docs.ferry.vn ↗ - 02POST
/api/v1/bookingsCreate a booking
Record passengers and seats; the booking starts in status 2 with a payment deadline. There is no idempotency key: check your bookings before retrying.
docs.ferry.vn ↗ - 03POST
/api/v1/bookings/confirmToIssue/{id}Confirm issuance
Charges your balance at NET rates and sends issuance to the operator; on success the booking moves to status 10.
docs.ferry.vn ↗ - 04GET
/api/v1/bookings/{id}Webhooks & reconciliation
Receive booking.created, booking.issuedTicket and more; webhooks are signals, so read the source of truth from the API.
docs.ferry.vn ↗
Recommended: cache near-term data for no more than 5 minutes and always re-read the seat map right before the customer confirms.
| Date range | Synced from operator |
|---|---|
| Today → 7 days | Every 30 minutes |
| 8 → 14 days | Every 2 hours |
| 15 → 45 days | Every 4 hours |
| 46 → 90 days | 3 times a day |
| Sold-out voyages | Rechecked every 40 minutes |
Source: docs.ferry.vn/en/developers/voyages
There is no simulated test environment: UAT talks to operator systems, issues real tickets and charges real money. Every test issuance is agreed with our engineers first.
- 01
Get UAT access
A UAT base URL and API key from our admins; browse endpoints in the API reference.
- 02
Test the booking flow
Search and create bookings. Stop at booking creation — don't call confirmToIssue yet.
- 03
Agreement & test voyage
Sign the agreement and agree on the voyage and cost for the first real issuance.
- 04
Go to production
Receive the production base URL and key, switch traffic and monitor operations.
A Ferry VN engineer will reach out to scope the integration and set up UAT access.