> ## Documentation Index
> Fetch the complete documentation index at: https://api-docs.helpyousponsor.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Create a donor and complete designation-only checkout

> Creates a donor account from the designation-only checkout form and attempts to convert the Redis cart into donations or recurring commitments. The request body uses fixed login fields plus dynamic public donor fields from the supplied HysForm; conditional display rules can add required custom field validators at runtime. On success the controller creates a donor session, clears the Redis cart, and returns a legacy success envelope.



## OpenAPI

````yaml post /frontend/checkout_signup_only/{client_id}/{hysform_id}/{designation_id}/{session_id}
openapi: 3.0.0
info:
  title: Gratona API
  description: >-
    REST API for the Gratona fundraising platform, including donor, donation,
    sponsorship, program, event, and integration workflows. Endpoints are
    organized by tag. Most endpoints require either a Passport bearer token or
    an issued API key — see the Security Schemes section.
  contact:
    name: Gratona Engineering
    url: https://gratona.com
    email: devs@gratona.com
  version: 1.0.0
servers:
  - url: https://api.gratona.com/v1
    description: Server Version 1.0.0
security: []
tags:
  - name: Auth
    description: >-
      Login, signup, logout, password reset, and email verification for admin
      users and donors.
  - name: Donors
    description: >-
      Donor records: CRUD, profile fields, household linkage, search, filters,
      merge, and duplicate detection.
  - name: Donations
    description: >-
      Individual donation records, recurring commitments, soft credits, refunds,
      designations, and exports.
  - name: Sponsorships
    description: >-
      Donor-to-entity sponsorship relationships, lifecycle transitions, and
      sponsorship-specific filters.
  - name: Entities
    description: >-
      Recipient records (children, families, projects, animals, etc.), their
      status, and entity-level fields.
  - name: Programs
    description: >-
      Program / campaign configuration: hierarchy, settings, and program-level
      metadata.
  - name: Forms
    description: >-
      Custom form builder (HysForm), form fields, standardized donor fields, and
      field migrations.
  - name: Trips
    description: >-
      Mission-trip management: trips, participants, budgets, tasks,
      e-signatures, fundraising milestones, and background checks.
  - name: Communications
    description: >-
      Email templates, SMS, newsletters, donor email manager, and per-donor
      notes.
  - name: Payments
    description: >-
      Payment-gateway management (Stripe, PayPal, Flutterwave, QuickBooks).
      Excludes inbound webhooks — see the Webhooks tag.
  - name: Reports
    description: Dashboards, analytics, scheduled reports, and exports.
  - name: Admin
    description: >-
      Client-account administration: users, groups/permissions, settings,
      integrations, and account lifecycle.
  - name: Donor Portal
    description: >-
      Endpoints consumed by the donor-facing portal (donor login, dashboard,
      donation history, messages).
  - name: Recipient Portal
    description: Endpoints consumed by the recipient-facing portal.
  - name: Public
    description: >-
      Unauthenticated public endpoints: donor signup, public trip pages,
      peer-to-peer campaigns, public checkout.
  - name: Webhooks
    description: >-
      Inbound webhooks from third parties (Stripe, PayPal, Flutterwave, Checkr,
      DropboxSign). Annotated minimally for reference; payload shapes are owned
      by the upstream provider.
  - name: Client
    description: Client
  - name: Email Settings
    description: Email Settings
  - name: Admin Dashboard
    description: Admin Dashboard
  - name: Historical Archived Updates
    description: Historical Archived Updates
  - name: Team & access
    description: Team & access
  - name: Files
    description: Files
  - name: Wrapped
    description: Wrapped
  - name: Donor SignUp
    description: Donor SignUp
  - name: Frontend
    description: Frontend
  - name: User
    description: User
paths:
  /frontend/checkout_signup_only/{client_id}/{hysform_id}/{designation_id}/{session_id}:
    post:
      tags:
        - Public
      summary: Create a donor and complete designation-only checkout
      description: >-
        Creates a donor account from the designation-only checkout form and
        attempts to convert the Redis cart into donations or recurring
        commitments. The request body uses fixed login fields plus dynamic
        public donor fields from the supplied HysForm; conditional display rules
        can add required custom field validators at runtime. On success the
        controller creates a donor session, clears the Redis cart, and returns a
        legacy success envelope.
      operationId: checkoutSignupDesignationOnly
      parameters:
        - name: client_id
          in: path
          description: >-
            Client id that will own the newly created donor and resulting
            donations or commitments.
          required: true
          schema:
            type: integer
          example: 207
        - name: hysform_id
          in: path
          description: >-
            Donor HysForm id whose fields are used to build donor `json_fields`
            and dynamic validation rules.
          required: true
          schema:
            type: integer
          example: 42
        - name: designation_id
          in: path
          description: >-
            Configured designation checkout id from the landing page. It is
            retained in the route for checkout context while selected gifts are
            read from Redis.
          required: true
          schema:
            type: string
          example: all
        - name: session_id
          in: path
          description: >-
            Redis frontend session id containing `saved_designations` and
            `saved_designation_frequency`. The controller also turns this into a
            donor session after signup.
          required: true
          schema:
            type: string
          example: 7f2c8f8d64b8a1d4a9e2
      requestBody:
        description: >-
          Signup fields for designation-only checkout. Fixed validator rules
          require username, email, and password; dynamic public donor fields may
          also be required by HysForm conditional display rules.
        required: true
        content:
          application/json:
            schema:
              required:
                - signup_username
                - email
                - signup_password
              properties:
                signup_username:
                  description: >-
                    Donor username. Validator rule: `required|min:5 plus a
                    client-scoped donor username uniqueness rule`.
                  type: string
                  minLength: 5
                  example: janedonor
                email:
                  description: 'Donor email. Validator rule: `email|required`.'
                  type: string
                  format: email
                  example: jane@example.org
                signup_password:
                  description: >-
                    Donor password. Validator rule: `min:5|required`; it is
                    hashed before storage.
                  type: string
                  format: password
                  minLength: 5
                  example: secret123
                type:
                  description: >-
                    Donor identity type. Standard-field validation requires a
                    valid normalized type; `donor_type` is accepted as an input
                    alias.
                  type: string
                  enum:
                    - INDIVIDUAL
                    - ORGANIZATION
                  example: INDIVIDUAL
                organization_name:
                  description: Required when the normalized donor type is ORGANIZATION.
                  type: string
                  maxLength: 255
                  example: Acme Foundation
                policy_revision:
                  description: >-
                    Optional revision from the checkout standard_field_contract;
                    a stale supplied revision returns 409.
                  type: string
                  example: current-form-revision
                check_number:
                  description: >-
                    Optional check reference. Validator rule:
                    `nullable|string|max:100`.
                  type: string
                  maxLength: 100
                  example: '1042'
                  nullable: true
                method_signup:
                  description: >-
                    Payment method selected by checkout. The controller passes
                    this to donation and recurring commitment creation when
                    present.
                  type: string
                  example: '3'
                  nullable: true
                donor_type:
                  description: >-
                    Optional donor type used by conditional-display logic to
                    decide which dynamic public fields are required.
                  type: string
                  example: INDIVIDUAL
                  nullable: true
              type: object
              additionalProperties: true
      responses:
        '200':
          description: Checkout donation or commitment was created.
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                    example: Donation made!
                  status:
                    type: string
                    example: success
                type: object
        '400':
          description: Donation creation failed after donor signup.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: The donor form or selected client-owned record was not found.
        '409':
          description: >-
            The donor form contract changed or the selected Stripe account is
            restricted.
        '422':
          description: Signup validation failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationErrorResponse'
        '503':
          description: The selected Stripe payment processor is temporarily unavailable.
      security: []
components:
  schemas:
    ErrorResponse:
      title: ErrorResponse
      description: >-
        Generic error envelope used by most controllers. Most error responses
        pair a human-readable `message` with `status: error`. Some endpoints
        additionally include `errors` (validator errors), `error` (legacy
        single-error string), `code`, or domain-specific context fields.
      required:
        - message
      properties:
        message:
          description: Human-readable error message.
          type: string
          example: Something went wrong. Please try again.
        status:
          description: >-
            Always the literal string `error` for failures. Some endpoints omit
            this field.
          type: string
          example: error
        error:
          description: Legacy single error code/string used by older endpoints.
          type: string
          example: invalid_request
          nullable: true
        code:
          description: >-
            Optional application-level error code (not all endpoints populate
            this).
          type: string
          example: DONOR_NOT_FOUND
          nullable: true
      type: object
    ValidationErrorResponse:
      title: ValidationErrorResponse
      description: >-
        Returned with HTTP 422 when `Validator::make($data, $rules)` fails. The
        `errors` map is keyed by the failing field name; each value is an array
        of human-readable error messages for that field. Most controllers also
        include a top-level `status: error`.
      required:
        - errors
      properties:
        errors:
          description: >-
            Map of field name to array of validator error messages. Example:
            `{email: [The email field is required.], amount: [The amount must be
            a number.]}`.
          type: object
          additionalProperties:
            type: array
            items:
              type: string
        status:
          description: Always the literal string `error`.
          type: string
          example: error
        message:
          description: >-
            Optional summary message — present on some endpoints, absent on
            others.
          type: string
          example: The given data was invalid.
          nullable: true
      type: object

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.