# Create fulfillments Create one or more fulfillments by marking shipments as shipped with tracking information. This will notify customers and marketplaces according to your configuration. Endpoint: POST /v2/fulfillments Version: 2.0.0 Security: api_keys ## Request fields (application/json): - `fulfillments` (array, required) - `fulfillments.shipment_id` (string, required) The shipment id to fulfill Example: "se-12345678" - `fulfillments.tracking_number` (string, required) Tracking number for the shipment Example: "1Z12345E1234567890" - `fulfillments.carrier_code` (string, required) Carrier code (e.g., "ups", "fedex", "usps") Example: "ups" - `fulfillments.ship_date` (string) Ship date (defaults to current date if not provided) Example: "2024-01-15T10:00:00Z" - `fulfillments.notify_customer` (boolean) Whether to notify the customer via email Example: true - `fulfillments.notify_order_source` (boolean) Whether to notify the order source/marketplace Example: true ## Response 200 fields (application/json): - `has_errors` (boolean) Indicates if any fulfillments failed to create - `fulfillments` (array) - `fulfillments.shipment_id` (string) The shipment ID that was processed Example: "se-12345678" - `fulfillments.shipment_number` (string) The shipment number (order number) Example: "ORDER-001" - `fulfillments.error_message` (string,null) Error message if creation failed (null on success) ## Response 400 fields (application/json): - `request_id` (string, required) A UUID that uniquely identifies the request id. This can be given to the support team to help debug non-trivial issues that may occur Example: "aa3d8e8e-462b-4476-9618-72db7f7b7009" - `errors` (array, required) The errors associated with the failed API call - `errors.error_source` (string, required) The source of the error, as indicated by the name this informs us if the API call failed because of the carrier, the order source, or the ShipStation API itself. Enum: "carrier", "order_source", "ShipStation" - `errors.error_type` (string, required) The type of error Enum: "account_status", "business_rules", "validation", "security", "system", "integrations" - `errors.error_code` (string, required) The error code specified for the failed API Call Enum: "auto_fund_not_supported", "batch_cannot_be_modified", "carrier_conflict", "carrier_disconnected", "carrier_not_connected", "carrier_not_supported", "confirmation_not_supported", "default_warehouse_cannot_be_deleted", "field_conflict", "field_value_required", "forbidden", "identifier_conflict", "identifiers_must_match", "insufficient_funds", "invalid_address", "invalid_billing_plan", "invalid_field_value", "invalid_identifier", "invalid_status", "invalid_string_length", "label_images_not_supported", "meter_failure", "order_source_not_active", "rate_limit_exceeded", "refresh_not_supported", "request_body_required", "return_label_not_supported", "settings_not_supported", "subscription_inactive", "terms_not_accepted", "tracking_not_supported", "trial_expired", "unauthorized", "unknown", "unspecified", "verification_failure", "warehouse_conflict", "webhook_event_type_conflict", "customs_items_required", "incompatible_paired_labels", "invalid_charge_event", "invalid_object", "no_rates_returned" - `errors.message` (string, required) An error message associated with the failed API call Example: "Body of request cannot be null." - `errors.field_name` (string) The name of the field that caused the error (only present for validation errors) Example: "inventory_warehouse_id" - `errors.field_value` (string) The invalid value that was provided for the field (only present for validation errors) Example: "invalid-id"