Skip to main content
OTAs & API partners

Connect to 11 high-speed ferry operators in Vietnam through one interface: timetables, seat maps, bookings, ticket issuance and status webhooks.

REST · JSON
Standard HTTP, UTF-8
Bearer API key
Authorization header
Webhooks
Acknowledge within 2 s
api.ferry.vn
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"
4
5# 2 · Create a booking (holds seats)
6curl -X POST https://api.ferry.vn/api/v1/bookings -d @booking.json
7
8# 3 · Confirm ticket issuance
9curl -X POST https://api.ferry.vn/api/v1/bookings/confirmToIssue/{id}
10
11# 4 · Source of truth — status 10 = issued
12curl https://api.ferry.vn/api/v1/bookings/{id}
POST https://your-system.example/webhooks/ferry200 OK
  • 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
Conventions

Conventions ↗
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
Integration flow

  1. 01GET/api/v1/voyages/findAllRelateByLocationAndDate

    Search voyages

    Timetables between two piers by date, with availability and seat maps.

    docs.ferry.vn ↗
  2. 02POST/api/v1/bookings

    Create 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 ↗
  3. 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 ↗
  4. 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 ↗
Data freshness

Recommended: cache near-term data for no more than 5 minutes and always re-read the seat map right before the customer confirms.

Date rangeSynced from operator
Today → 7 daysEvery 30 minutes
8 → 14 daysEvery 2 hours
15 → 45 daysEvery 4 hours
46 → 90 days3 times a day
Sold-out voyagesRechecked every 40 minutes

Source: docs.ferry.vn/en/developers/voyages

Go-live

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.

  1. 01

    Get UAT access

    A UAT base URL and API key from our admins; browse endpoints in the API reference.

  2. 02

    Test the booking flow

    Search and create bookings. Stop at booking creation — don't call confirmToIssue yet.

  3. 03

    Agreement & test voyage

    Sign the agreement and agree on the voyage and cost for the first real issuance.

  4. 04

    Go to production

    Receive the production base URL and key, switch traffic and monitor operations.

Go-live checklist ↗
Request access

A Ferry VN engineer will reach out to scope the integration and set up UAT access.