Nepex Travel API DocsGo to Profile

Create Submission

Create a new application submission in Nepex.

This endpoint accepts applicant and passport details and creates a new VISA submission.

Use the payload table below for field-level requirements and examples.

POST/api/v1/platform/submissions

Create Submission

Auth: API key (Bearer or x-api-key)

  • Creates a **pending** submission you can complete and track through the usual Nepex workflows.
  • Submission payment is processed from wallet balance of the account linked to the API key.
  • On success, the wallet amount is deducted and submission is stored as paid.
  • The API validates required fields and the selected visa before the submission is accepted.
  • Initial status is **PENDING**; based on your workflow it can move to **PAID**.
  • Passport and other sensitive fields are handled with appropriate validation and protection.

Payload Fields

Field NameDescriptionData TypeRequiredExample
firstNameApplicant first name.stringYesRam
lastNameApplicant last name.stringYesMagar
applyingFromCountry applicant is applying from.stringYesNepal
applyingToDestination country.stringYesIndonesia
visaIdVisa identifier selected from visa metadata.uuidYes3a3c2c49-2ac2-4b93-91cb-85f7c2c2a201
genderApplicant gender value accepted by Nepex.stringYesMALE
phonePrimary phone number.stringYes9813123456
emailApplicant email address.stringYesram@mail.com
dobDate of birth in ISO date format.date (YYYY-MM-DD)Yes1990-01-20
birthPlaceApplicant place of birth.stringYesPalpa
passportNoPassport number.stringYes123456789
passportIssueDatePassport issue date.date (YYYY-MM-DD)Yes2010-01-20
passportExpiryDatePassport expiry date.date (YYYY-MM-DD)Yes2030-01-20
passportIssuedPlacePassport issued place.stringYesKathmandu
educationEducation qualification.stringYesBachelor
occupationOccupation.stringYesEngineer
religionReligion.stringYesHindu
permanentAddressPermanent residential address.stringYesKathmandu
maritalStatusMarital status.stringYesSINGLE
arrivalDatePlanned arrival date in destination.date (YYYY-MM-DD)Yes2026-05-01
photoUrlPublic URL to applicant photo.string (url)Yeshttps://cdn.example.com/photo.jpg
passportImgUrlPublic URL to passport image.string (url)Yeshttps://cdn.example.com/passport.jpg

Request JSON Example

{
  "firstName": "Ram",
  "lastName": "Magar",
  "applyingFrom": "Nepal",
  "applyingTo": "Indonesia",
  "visaId": "3a3c2c49-2ac2-4b93-91cb-85f7c2c2a201",
  "gender": "MALE",
  "phone": "9813123456",
  "email": "ram@mail.com",
  "dob": "1990-01-20",
  "birthPlace": "Palpa",
  "passportIssueDate": "2010-01-20",
  "passportExpiryDate": "2030-01-20",
  "passportNo": "123456789",
  "passportIssuedPlace": "Kathmandu",
  "occupation": "Engineer",
  "education": "Bachelor",
  "fatherName": "Hari",
  "motherName": "Maya",
  "emergencyContact": "9800000000",
  "stayAddress": "Jakarta",
  "stayContactNo": "+62-0000-0000",
  "passportImgUrl": "https://cdn.example.com/passport.jpg",
  "photoUrl": "https://cdn.example.com/photo.jpg",
  "religion": "Hindu",
  "permanentAddress": "Kathmandu",
  "arrivalDate": "2026-05-01",
  "visitReason": "Tourism",
  "comingFrom": "Nepal",
  "maritalStatus": "SINGLE"
}

Response JSON Example

{
  "status": true,
  "statusCode": 201,
  "result": {
    "uuid": "submission-uuid",
    "status": "PENDING",
    "hasPaid": true
  }
}

Possible Errors

Status CodeErrorWhen It Happens
400Bad RequestPayload has validation errors.
400Bad RequestInsufficient wallet balance/points for API-key user.
401UnauthorizedMissing or invalid API key.
403ForbiddenKey is not allowed for this environment or request origin.
404Not FoundReferenced visa or lookup item not found.
429Too Many RequestsPer-key rate limit exceeded.

Code Samples

BASE_URL="https://api.nepextravels.com"
API_KEY="nxp_xxx"

cat > submission.json <<'JSON'
{
  "firstName": "Ram",
  "lastName": "Magar",
  "applyingFrom": "Nepal",
  "applyingTo": "Indonesia",
  "visaId": "3a3c2c49-2ac2-4b93-91cb-85f7c2c2a201",
  "gender": "MALE",
  "phone": "9813123456",
  "email": "ram@mail.com",
  "dob": "1990-01-20",
  "birthPlace": "Palpa",
  "passportIssueDate": "2010-01-20",
  "passportExpiryDate": "2030-01-20",
  "passportNo": "123456789",
  "passportIssuedPlace": "Kathmandu",
  "occupation": "Engineer",
  "education": "Bachelor",
  "fatherName": "Hari",
  "motherName": "Maya",
  "emergencyContact": "9800000000",
  "stayAddress": "Jakarta",
  "stayContactNo": "+62-0000-0000",
  "passportImgUrl": "https://cdn.example.com/passport.jpg",
  "photoUrl": "https://cdn.example.com/photo.jpg",
  "religion": "Hindu",
  "permanentAddress": "Kathmandu",
  "arrivalDate": "2026-05-01",
  "visitReason": "Tourism",
  "comingFrom": "Nepal",
  "maritalStatus": "SINGLE"
}
JSON

response=$(curl -sS -w "\n%{http_code}" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d @submission.json \
  "$BASE_URL/api/v1/platform/submissions")
status=$(echo "$response" | tail -n1)
body=$(echo "$response" | sed '$d')

case "$status" in
  201) echo "Submission created and paid by wallet"; echo "$body" ;;
  400) echo "Bad Request (payload/visaId/insufficient wallet)"; echo "$body" ;;
  401) echo "Unauthorized API key" ;;
  403) echo "Forbidden for key/origin/env" ;;
  404) echo "Referenced resource not found" ;;
  429) echo "Rate limit exceeded" ;;
  *)   echo "Unexpected error ($status): $body" ;;
esac