openapi: 3.0.1 info: title: Sezzle API v2 Bearer Authentication Session API description: This Sezzle API is for merchants who want to accept Sezzle as a payment option termsOfService: https://legal.sezzle.com version: 2.0.0 x-logo: url: https://media.sezzle.com/branding/2.0/png/Logo_WhiteWordmark_500x126.png backgroundColor: '#392558' servers: - url: https://sandbox.gateway.sezzle.com/v2 description: development server, usa, ca - url: https://gateway.sezzle.com/v2 description: production server, usa, ca security: - Bearer: [] tags: - name: Session paths: /session: post: tags: - Session summary: Create a new session description: Create new customer checkout and/or tokenize customer. operationId: postV2Session requestBody: description: Session request content: application/json: schema: $ref: '#/components/schemas/Session' required: true responses: '201': description: Successful operation content: application/json: schema: type: object properties: uuid: type: string links: type: array items: $ref: '#/components/schemas/Link' order: type: object properties: uuid: type: string checkout_url: type: string links: type: array items: $ref: '#/components/schemas/Link' tokenize: type: object properties: token: type: string expiration: type: string format: date-time links: type: array items: $ref: '#/components/schemas/Link' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '422': $ref: '#/components/responses/Unprocessable' /session/{session_uuid}: get: tags: - Session summary: Get session status operationId: getV2Session parameters: - name: session_uuid in: path description: Session UUID required: true schema: type: string responses: '200': description: Successful operation content: application/json: schema: allOf: - $ref: '#/components/schemas/SessionStatus' - type: object properties: order: type: object properties: intent: $ref: '#/components/schemas/Intent' uuid: type: string checkout_url: type: string links: type: array items: $ref: '#/components/schemas/Link' tokenize: type: object properties: token: type: string expiration: type: string format: date-time links: type: array items: $ref: '#/components/schemas/Link' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' components: schemas: Link: type: object properties: href: type: string method: type: string rel: type: string Address: required: - city - country_code - postal_code - state - street type: object properties: city: type: string country_code: type: string name: type: string nullable: true phone: type: string nullable: true postal_code: type: string state: type: string street: type: string street2: type: string nullable: true Session: required: - cancel_url - complete_url type: object properties: cancel_url: type: object properties: href: type: string method: type: string complete_url: type: object properties: href: type: string method: type: string customer: allOf: - type: object properties: tokenize: type: boolean - $ref: '#/components/schemas/Customer' order: allOf: - type: object properties: intent: $ref: '#/components/schemas/Intent' - $ref: '#/components/schemas/Order' - type: object properties: order_amount: $ref: '#/components/schemas/Price' checkout_financing_options: description: '*currently not supported, defaults to 4-pay-biweekly* ' type: array items: $ref: '#/components/schemas/InstallmentPlan' send_checkout_url: $ref: '#/components/schemas/Notification' locale: type: string Discount: required: - amount - name type: object properties: amount: $ref: '#/components/schemas/Price' name: type: string Price: required: - amount_in_cents - currency type: object properties: amount_in_cents: type: integer format: int32 currency: type: string Customer: type: object properties: email: type: string first_name: type: string last_name: type: string phone: type: string dob: type: string token_expiration: type: string format: date-time billing_address: $ref: '#/components/schemas/Address' shipping_address: $ref: '#/components/schemas/Address' Order: type: object properties: reference_id: type: string description: type: string requires_shipping_info: type: boolean items: type: array items: $ref: '#/components/schemas/LineItem' discounts: type: array items: $ref: '#/components/schemas/Discount' metadata: type: object additionalProperties: type: string shipping_amount: $ref: '#/components/schemas/Price' tax_amount: $ref: '#/components/schemas/Price' checkout_expiration: type: string format: date-time Notification: type: object properties: to_sms_phone: type: string to_email: type: string language: type: string InstallmentPlan: type: string enum: - 4-pay-biweekly - 4-pay-monthly - 6-pay-monthly LineItem: required: - name - price - quantity - sku type: object properties: name: type: string price: $ref: '#/components/schemas/Price' quantity: type: integer format: int32 sku: type: string Error: type: array items: type: object properties: code: type: string location: type: string message: type: string debug_uuid: type: string SessionStatus: type: object properties: uuid: type: string links: type: array items: $ref: '#/components/schemas/Link' Intent: type: string enum: - AUTH - CAPTURE responses: Unauthorized: description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Error' BadRequest: description: Invalid request content: application/json: schema: $ref: '#/components/schemas/Error' NotFound: description: The specified resource was not found content: application/json: schema: $ref: '#/components/schemas/Error' Unprocessable: description: Unable to process the request entity content: application/json: schema: $ref: '#/components/schemas/Error' securitySchemes: Bearer: type: apiKey name: Authorization in: header externalDocs: description: Sezzle API guides and tutorials url: https://docs.sezzle.com/sezzle-integration