---
title: "POST /users/gateways"
method: POST
path: "/users/gateways"
tags: ["gateways"]
---

# POST /users/gateways

`POST /users/gateways`

Create payment gateway

## Response `200`

HTTP status code 200 and user model

- User — A user is the security principal for this application. A user can be an owner, renter, agent or admin.
  - `accept_percent` number, double
  - `accepted_tos_version` integer
  - `accepted_tos_versions` TOSAcceptance[]
    - `accepted_on` string
    - `id` integer
    - `metadata` MSI
    - `tos_version` string
    - `user_id` integer
  - `account_id` string, nullable
  - `active_quotes_count` integer
  - `active_reservations_count` integer — Holds the count of active reservations and quotes for DOU
  - `addon_fee_percentage` number, double
  - `admin` boolean
  - `admin_level` integer
  - `api_key` string
  - `approved_drivers` boolean
  - `archived` boolean, nullable
  - `auto_owner` boolean
  - `average_response_time` NullFloat64 — NullFloat64 implements the [Scanner] interface so it can be used as a scan destination, similar to [NullString].
    - `Float64` number, double
    - `Valid` boolean
  - `bank_country` string
  - `banned` boolean — admin only
  - `campground_owner` boolean
  - `campground_user` boolean
  - `can_accept_payments` boolean
  - `cash_credits` integer
  - `cc_fee_percentage` number, double
  - `commercial_insurance` boolean
  - `completed_bookings` integer
  - `confirmed` boolean
  - `created` string
  - `credits` integer
  - `csm_agent_id` integer — User ID of the CSM agent assigned to the corresponding owner/dealer
  - `deal_id` string — Deal ID used to store Hubspot deals
  - `dealer` boolean — dealer/employee support
  - `deposits_disabled` boolean
  - `display_w9_reminder` boolean
  - `driver_checks_enabled` boolean
  - `drivers` Driver[]
    - `approved_by_admin_id` integer
    - `archived` boolean
    - `birthdate` string
    - `candidate_id` string — private fields
    - `country` string
    - `created` string — metadata
    - `display_status` string
    - `email` string
    - `first_name` string
    - `gender` string
    - `id` integer
    - `is_old_enough` boolean
    - `last_mvr` string
    - `last_name` string
    - `license_number` string
    - `license_state` string
    - `middle_name` string
    - `status` string
    - `updated` string
    - `user_id` integer
    - `verification_upload_link` string
    - `verified` boolean
    - `zendesk_ticket_id` integer
  - `earned_credits` EarnedCredit[]
    - `amount` integer
    - `booking_id` integer, nullable
    - `can_delete` boolean
    - `can_edit` boolean
    - `created` string — Created shadows the same field in internal.DBObject which has `created` timestamp side effects
    - `created_by_id` integer, nullable
    - `deleted` string
    - `description` string
    - `expires` string
    - `has_children` boolean
    - `id` integer
    - `metadata` unknown
    - `parent_id` integer, nullable
    - `referred_by_user_id` integer, nullable
    - `referred_user_id` integer, nullable
    - `source` string
    - `system_action` string
    - `updated` string
    - `user_id` integer
  - `employee` boolean
  - `esign_enabled` boolean
  - `fleet_api_key` string
  - `force_reconnect_bank` boolean
  - `fraud_review_complete` boolean
  - `fraudulent` boolean
  - `gps_device_data` GpsDevicesData
    - `account_api_key` string
    - `created` string
    - `deleted` string
    - `device_count` integer
    - `id` integer
    - `metadata` unknown
    - `provider_type` string
    - `updated` string
    - `user_id` integer
  - `group_on_map` boolean
  - `guest` boolean
  - `has_connected_gateway` boolean — Indicates to the FE that this user has a connected gateway and the Spreedly CC form should be used when adding renter CCs
  - `has_gps_device` boolean
  - `has_notes_to_renters_migrated` boolean
  - `has_setup_intent_enabled` boolean
  - `hidden` boolean
  - `host_type_by_rental_category` string
  - `host_type_by_rental_count` string
  - `id` integer — internal - server generated and not mutable by PATCH
  - `impersonated` boolean
  - `import_id` string
  - `inactive_by` integer
  - `inactive_on` string
  - `is_admin_managed_superhost` boolean
  - `is_award_winner` boolean
  - `is_csm_agent` boolean — Represents if a user is CSM agent
  - `is_military_host` boolean
  - `is_superhost` boolean — SuperHost
  - `items` RentalItem[]
    - `applies_to_type` string[] — DBStringSlice is a []string with database conversion methods
    - `available` integer
    - `category` string
    - `category_id` integer
    - `consigned_pay_pct` number, double — consigned owner support
    - `created` NullTime — NullTime represents a time.Time that may be null. NullTime implements the sql.Scanner interface so it can be used as a scan destination, similar to sql.NullString.
      - `Time` string, date-time
      - `Valid` boolean
    - `daily` boolean
    - `deferred` boolean
    - `description` string
    - `hidden` boolean
    - `id` integer
    - `image_url` string
    - `ledger_account_number` integer
    - `location_id` integer
    - `location_ids` integer[]
    - `maximum_price` integer, nullable
    - `metadata` unknown
    - `minimum_price` integer, nullable
    - `name` string
    - `percent` number, double
    - `percent_type` string
    - `position` integer
    - `presentment_currency` string
    - `price` integer
    - `rental_items_category_id` integer, nullable
    - `rental_items_category_name` string
    - `rental_items_category_owner_name` string
    - `rental_items_category_reason` string
    - `rental_items_category_requested_name` string
    - `rental_items_category_status` string
    - `required` boolean
    - `settlement_currency` string
    - `tax` integer — total tax - calculated
    - `tax_rate_id` TaxRate
      - `archived` boolean
      - `created` string
      - `description` string
      - `id` integer
      - `marketplace` boolean
      - `name` string
      - `owner_id` integer
      - `rate` number, double
      - `state` string — carry through to booking_tax_rates table from avalara
      - `updated` string
      - `zip_code` string
    - `tax_rate_ids` integer[]
    - `travelers` integer
    - `updated` NullTime — NullTime represents a time.Time that may be null. NullTime implements the sql.Scanner interface so it can be used as a scan destination, similar to sql.NullString.
      - `Time` string, date-time
      - `Valid` boolean
  - `last_accessed_ip` string, nullable
  - `last_activity_at` string
  - `legacy_tracking_device_count` integer
  - `metadata` MSI
  - `missing_fields` string[] — DBStringSlice is a []string with database conversion methods
  - `num_reservations` integer
  - `offer_roamly` boolean
  - `offers_delivery` boolean
  - `owned_by_id` integer
  - `owner` boolean
  - `owner_fee_percentage` number, double — admin only
  - `owner_score` number, double
  - `owner_score_count` integer
  - `partner_app_id` integer, nullable
  - `partner_id` integer, nullable
  - `payment_processing_info` PaymentProcessingInfo[] — internal - server generated and not sent to client
    - `address` PaymentAddress
      - `city` string
      - `country` string
      - `state` string
      - `street` string
      - `street_etc` string
      - `zip` string
    - `archived` boolean
    - `bank_address` string
    - `bank_last_four` string
    - `bank_name` string
    - `base_currency` string
    - `can_accept_payments` boolean — Dynamic Fields
    - `can_archive_bank` boolean
    - `can_send_payments` boolean
    - `capabilities` unknown
    - `created` string
    - `customer_id` string
    - `debit_agreement_date` string
    - `deposits_disabled` boolean
    - `form` object
    - `fund_id` string
    - `gateway_type` string
    - `id` integer
    - `managed_account_id` string
    - `missing_fields` string[] — DBStringSlice is a []string with database conversion methods
    - `missing_fields_change_description` string[]
    - `needs_migration` boolean — can be used to force an account to re-authorize their bank via plaid
    - `nickname` string
    - `notes` string
    - `owner_id` integer
    - `payment_processor` PaymentProcessor — Typically this object is composed into a struct, but embedded into the same table using the `db:",embed"` struct tag.
      - `country` string
      - `external_processor` string
      - `external_processor_id` string
      - `name` string
    - `phone` string
    - `reference_number` string
    - `sort_code` string
    - `status` string
    - `support_phone` string
    - `updated` string
  - `pending_email` string
  - `permissions` DBBoolMap — DBBoolMap is a map[string]boold with database conversion methods
  - `pro` boolean
  - `pro_status` ProStatus
    - `approval_rate` number, double
    - `bank_account` boolean
    - `completed_points` integer
    - `description` boolean
    - `eligible_insurance` boolean
    - `pending_rentals` IneligibleRental[]
      - `id` integer
      - `insurance_state` string
      - `name` string
    - `pro` boolean
    - `profile_percent_complete` integer
    - `rating` number, double
    - `response_time` integer
    - `response_time_rank` integer
    - `total_points` integer
    - `verified_phone` boolean
  - `profile` Profile — profile holds all profile information for a user
    - `address` Address — Address holds address information for a user
      - `city` string
      - `country` string
      - `county` string
      - `state` string
      - `street` string
      - `street_etc` string
      - `zip` string
    - `affiliate_description` string
    - `anonymized_by` integer
    - `anonymized_on` string
    - `avatar_url` string
    - `bio` Bio — bio holds additional information about a user
      - `description` string
      - `experience` string
      - `years_owned` integer
      - `years_rving` integer
    - `birthdate` string
    - `booking_options` BookingOptions
      - `bid_quality_preference` NullFloat64 — NullFloat64 implements the [Scanner] interface so it can be used as a scan destination, similar to [NullString].
        - `Float64` number, double
        - `Valid` boolean
      - `coachnet_premium` integer
      - `custom_insurance_text` string, nullable
      - `default_auto_insurance_bundle_tier` integer
      - `default_insurance_bundle_tier` integer
      - `deposit_percentage` number, double
      - `disable_coachnet` boolean
      - `disable_instamatch` boolean, nullable
      - `final_payment_due_days` integer — 0 - manual charge due at the start of the trip, -1 manual due at the end of the trip, >0 automatic charge N days before trip start
      - `from_time` integer
      - `instant_book` boolean
      - `instant_book_leeway` integer
      - `instant_book_type` string
      - `insurance_coverage` string
      - `insurance_renter_adjustable` boolean
      - `minimum_days` integer — Deprecated: MinimumDays is deprecated, use TripCalculator.Calculate().MinimumBookingDays
      - `minimum_deposit` integer
      - `request_less_than_minimum_days` integer
      - `require_booking_time` boolean
      - `require_driver_checks` boolean
      - `require_insurance` boolean
      - `security_deposit_due_days` integer
      - `tax_rate_id` integer — deprecated
      - `tax_rate_ids` integer[]
      - `to_time` integer
      - `turnaround_days_after` integer
      - `use_day_pricing` boolean
      - `use_tax_inclusive_pricing` boolean
      - `variable_fees_upfront` boolean
    - `booking_restrictions` BookingRestrictions
      - `all_booking_cancellation_threshold` integer
      - `all_booking_cancellations_six_months` integer
      - `cancellation_penalty_less_than_7_days` integer
      - `cancellation_penalty_more_than_7_days` integer
      - `instant_book_cancellation_threshold` integer
      - `instant_book_cancellations_six_months` integer
      - `is_instant_book_banned` boolean
    - `business` Business
      - `cancel_policy` string
      - `cancel_policy_combo_bookings` string
      - `cancel_text` string
      - `checkout_questions` object[] — DBMSISlice is a []string with database conversion methods
      - `consigned_keep_pct_addon_fee` number, double
      - `consigned_keep_pct_cc_fee` number, double
      - `consigned_keep_pct_insurance_fee` number, double
      - `consigned_pay_pct` number, double — consigned owner support
      - `consigned_pay_pct_generator` number, double
      - `consigned_pay_pct_mileage` number, double
      - `description` string
      - `fax` string
      - `ga4_id` string
      - `google_analytics_id` string, nullable
      - `google_tag_manager_id` string, nullable
      - `hide_rentals` boolean
      - `house_rules` string
      - `localized_languages` string[] — DBStringSlice is a []string with database conversion methods
      - `name` string
      - `outdoorsy_display_name` string
      - `phone` string
      - `segment_token` string
      - `terms_of_service` string
      - `website` string
    - `coaching_completed` boolean
    - `coaching_completed_on_date` string
    - `coaching_dismissed_count` integer
    - `dealer_locations` Location[]
      - `archived` boolean
      - `availability` LocAvailability
        - `days` object
      - `city` string
      - `country` string
      - `county` string
      - `created` string
      - `custom_insurance_text` string, nullable
      - `dropoff_end_time` integer
      - `dropoff_start_time` integer
      - `eligible_for_system_tax_rates` boolean — Wheelbase only field
      - `employer_identification_number` string — EIN in the US, RCS in France
      - `id` integer
      - `lat` number, double
      - `lng` number, double
      - `locale` LocationLocale
        - `base_currency` string
      - `name` string
      - `opt_out_marketplace_taxes` boolean — these fields are stored in metadata
      - `owner_id` integer
      - `payment_processing_info_id` integer
      - `phone` string
      - `pickup_end_time` integer
      - `pickup_start_time` integer
      - `rental_count` integer
      - `special_hours` SpecialHour[]
        - `created` string
        - `created_from_id` integer
        - `dropoff` SpecialHourDropoff
          - `end_time` integer
          - `start_time` integer
          - `unavailable` boolean
        - `end_date` string
        - `id` integer
        - `location_id` integer, nullable
        - `name` string
        - `owner_id` integer
        - `pickup` SpecialHourPickup
          - `end_time` integer
          - `start_time` integer
          - `unavailable` boolean
        - `repeats` boolean
        - `start_date` string
        - `updated` string
        - `weekdays` string[] — DBStringSlice is a []string with database conversion methods
      - `state` string
      - `state_tax_id` string
      - `street` string
      - `street_etc` string
      - `tax_rate_id` TaxRate
        - `archived` boolean
        - `created` string
        - `description` string
        - `id` integer
        - `marketplace` boolean
        - `name` string
        - `owner_id` integer
        - `rate` number, double
        - `state` string — carry through to booking_tax_rates table from avalara
        - `updated` string
        - `zip_code` string
      - `tax_rate_ids` integer[]
      - `tax_split_eligible` boolean — find tax_rates.ShouldSplitTaxes()
      - `updated` string
      - `waived_insurance_text` string, nullable
      - `zip` string
    - `disable_phone` boolean
    - `email` string
    - `employee_locations` Location[]
      - `archived` boolean
      - `availability` LocAvailability
        - `days` object
      - `city` string
      - `country` string
      - `county` string
      - `created` string
      - `custom_insurance_text` string, nullable
      - `dropoff_end_time` integer
      - `dropoff_start_time` integer
      - `eligible_for_system_tax_rates` boolean — Wheelbase only field
      - `employer_identification_number` string — EIN in the US, RCS in France
      - `id` integer
      - `lat` number, double
      - `lng` number, double
      - `locale` LocationLocale
        - `base_currency` string
      - `name` string
      - `opt_out_marketplace_taxes` boolean — these fields are stored in metadata
      - `owner_id` integer
      - `payment_processing_info_id` integer
      - `phone` string
      - `pickup_end_time` integer
      - `pickup_start_time` integer
      - `rental_count` integer
      - `special_hours` SpecialHour[]
        - `created` string
        - `created_from_id` integer
        - `dropoff` SpecialHourDropoff
          - `end_time` integer
          - `start_time` integer
          - `unavailable` boolean
        - `end_date` string
        - `id` integer
        - `location_id` integer, nullable
        - `name` string
        - `owner_id` integer
        - `pickup` SpecialHourPickup
          - `end_time` integer
          - `start_time` integer
          - `unavailable` boolean
        - `repeats` boolean
        - `start_date` string
        - `updated` string
        - `weekdays` string[] — DBStringSlice is a []string with database conversion methods
      - `state` string
      - `state_tax_id` string
      - `street` string
      - `street_etc` string
      - `tax_rate_id` TaxRate
        - `archived` boolean
        - `created` string
        - `description` string
        - `id` integer
        - `marketplace` boolean
        - `name` string
        - `owner_id` integer
        - `rate` number, double
        - `state` string — carry through to booking_tax_rates table from avalara
        - `updated` string
        - `zip_code` string
      - `tax_rate_ids` integer[]
      - `tax_split_eligible` boolean — find tax_rates.ShouldSplitTaxes()
      - `updated` string
      - `waived_insurance_text` string, nullable
      - `zip` string
    - `exclude_locations` string[] — DBStringSlice is a []string with database conversion methods
    - `extra` unknown
    - `first_name` string
    - `gender` string
    - `google_place_id` string
    - `guest_smart_match_opt_out` boolean
    - `last_name` string
    - `license` License — License holds driver's license information for a user
    - `listing_coach_dismiss_flag` boolean
    - `locale` Locale
      - `base_currency` string
      - `date_format` string
      - `distance_unit` string
      - `language` string
      - `length_unit` string
      - `liquid_unit` string
      - `time_format` string
      - `timezone` string
      - `weight_unit` string
    - `logo_url` string
    - `mast_image_url` string
    - `nationality` string
    - `notifications` NotificationSettings
      - `browser` NotificationBrowser
        - `all` boolean
      - `email` NotificationEmail
        - `abandoned_checkout` boolean
        - `all` boolean
      - `mobile` NotificationMobile
        - `all` boolean
      - `sms` NotificationSMS
        - `abandoned_checkout` boolean
        - `bookings` boolean
        - `marketing` boolean
        - `messages` boolean
    - `od_stays_opt_in` boolean
    - `phone` string
    - `sd_waiver_enabled` boolean, nullable
    - `sms_exclude_locations` integer[] — DBIntSlice is a []int with database conversion methods
    - `social` Social[]
      - `count` integer
      - `link` string
      - `rating` number, double
      - `site` string
    - `title` string
    - `unavailable_color_labels` unknown
    - `user_type` string
  - `reconnect_bank` boolean
  - `referral_code` string
  - `referred_by_id` integer
  - `referred_owner_paid` boolean
  - `referred_owner_payout_amount` integer
  - `referred_renter_paid` boolean
  - `referred_renter_payout_amount` integer
  - `renter` boolean
  - `renter_fee_percentage` number, double
  - `require_w9_form` boolean
  - `require_w9_to_accept_booking` boolean
  - `response_percent` NullFloat64 — NullFloat64 implements the [Scanner] interface so it can be used as a scan destination, similar to [NullString].
    - `Float64` number, double
    - `Valid` boolean
  - `roadside_missing` string[] — DBStringSlice is a []string with database conversion methods
  - `roamly_carshare_user` boolean
  - `roamly_policy_id` string
  - `roamly_policy_number` string
  - `roamly_status` string
  - `role` Role
    - `active` boolean
    - `created` string, date-time
    - `deleted` boolean
    - `id` integer
    - `name` string
    - `owner_user_id` integer
    - `permissions` RolePermission[]
      - `can_create` boolean
      - `can_delete` boolean
      - `can_read` boolean
      - `can_update` boolean
      - `created` string, date-time
      - `id` integer
      - `label` string
      - `name` string
      - `permission_id` integer
      - `role_id` integer
      - `updated` string, date-time
    - `updated` string, date-time
  - `rv_owner` boolean — Host Rental Possession
  - `score` number, double
  - `score_count` integer — Only used by database triggers, not intended for use by anything in the application. They're listed here to make sure the migration system creates the columns.
  - `search_metrics_start_date` string
  - `security` UserSecurity
    - `force_password_reset` boolean
    - `social_login_disabled` boolean
    - `user_id` integer
  - `self_serve_signup` boolean, nullable
  - `session_id` string
  - `show_gps_deprecation_warning` boolean
  - `signup_source` string
  - `skip_w9_to_publish` boolean
  - `slug` string
  - `sso` SSO
    - `auth_url` string
    - `client_id` string
    - `client_secret` string
    - `token_url` string
  - `stay_owner` boolean
  - `superhost_cancel_rate` number, double
  - `superhost_departed_bookings` integer
  - `superhost_last_assessment` string
  - `superhost_last_start_assessment` string
  - `superhost_response_rate` number, double
  - `superhost_review_rate` number, double
  - `superhost_reviewed_bookings` integer
  - `time_to_first_action` integer
  - `tolls_enabled` boolean
  - `tollspot_account_number` string
  - `tollspot_account_status` string
  - `tos_acceptance_date` string
  - `total_bookings` integer
  - `tracking` Tracking
    - `campaign` string
    - `content` string
    - `intent` string
    - `medium` string
    - `source` string
    - `term` string
  - `undelivered_emails_count` integer — Indicates if there are undelivered emails for the last booking of DOU
  - `use_fees_increase` boolean, nullable
  - `use_insurance_bundles` boolean
  - `verifications` Verifications
    - `email` boolean
    - `facebook` unknown
    - `has_sent_message_without_phone_verified` boolean
    - `phone` boolean
  - `viewed_outdoorsy_host_beta` boolean
  - `viewed_roamly_ad` boolean
  - `viewed_smart_match_banner` boolean
  - `viewed_smart_pricing_banner` boolean
  - `viewed_super_host_banner` boolean
  - `w9_completed_at` string
  - `w9_eligible` boolean
  - `w9_tax_form_completed` boolean
  - `w9_tin_status` string
  - `waive_w9_completion` boolean
  - `wheelbase_fee` integer, nullable

## Other responses

- `400` — Invalid input or state means you're bad
- `401` — Unauthorized error

---

[API](https://skmtc.net/outdoorsy/apis/outdoorsy-api-documentation.md) · [All operations](https://skmtc.net/outdoorsy/apis/outdoorsy-api-documentation/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/outdoorsy/outdoorsy-api-documentation/versions/f0cf8f605ea0/schema)
