Receipts
Symitar in Platform
>
Receipts
openapi: 3.0.1
info:
title: Symitar in Platform API - Receipts
version: v1
description: API to interact with Symitar in Platform
contact:
name: Picard
url: https://www.jackhenry.com/
email: DC-Picard-Product@jackhenry.com
servers:
- url: https://platform.banno.com
description: Production Endpoint
components:
securitySchemes:
OpenIDEnterprise:
type: openIdConnect
openIdConnectUrl: https://login.jackhenry.com/.well-known/openid-configuration
description: "Jack Henry Enterprise Authentication. \n\n ### Supported Flows\n \n #### 1. Authorization Code Flow\n * **Use Case:** Person-at-keyboard logins (FI or JH Employees).\n * **Security:** Supports/recommends PKCE (S256). Supports Pushed Authorization Requests (PAR), and DPoP token binding.\n * **Client Auth:** Supports/recommends `client_assertion` (Private Key JWT), also supports `client_secret`.\n \n #### 2. Client Credentials Flow\n * **Use Case:** System services and machine-to-machine integrations.\n * **Security:** Supports DPoP token binding.\n * **Client Auth:** **Requires** `client_assertion` (Private Key JWT).\n"
OpenIDConsumer:
type: openIdConnect
openIdConnectUrl: https://digital.garden-fi.com/.well-known/openid-configuration
description: "Jack Henry Consumer Authentication. \n\n> **WARNING: FI-SPECIFIC ROUTING**\n> The authorization server is currently pointing to our **Sandbox Environment** (`digital.garden-fi.com`) so you can test this documentation. In production code, this domain **must** be replaced with the specific Financial Institution's domain.\n> Example: Replace `{API-ENVIRONMENT}` in `https://{API-ENVIRONMENT}/.well-known/openid-configuration` with `digital.garden-fi.com` for the Garden financial institution.\n\n### Supported Flows\n\n#### 1. Authorization Code Flow\n* **Use Case:** Person-at-keyboard logins (customer or member of FI).\n* **Security:** Supports/recommends PKCE (S256). Supports Pushed Authorization Requests (PAR), and DPoP token binding.\n* **Client Auth:** Supports `client_secret`.\n"
tags:
- name: Receipts
description: Receipt generation and retrieval operations
paths:
/a/api/picard/v1/{InstitutionUniversalId}/receipts:
get:
operationId: listReceipts
tags:
- Receipts
summary: List Receipts
description: |
Lists stored receipts for an institution, ordered by newest first. Supports offset/count pagination and optional filtering by one or more receipt ids.
parameters:
- name: InstitutionUniversalId
in: path
description: A unique identifier to establish the identity of an Institution/Environment/Brand combination
required: true
schema:
type: string
- name: offset
in: query
required: false
description: |
Pagination offset. Defaults to 0. Kept as a bespoke integer parameter rather than the common `offset` parameter because the common definition is typed as a string; this service treats offset as a numeric value.
schema:
type: integer
minimum: 0
default: 0
- name: count
in: query
required: false
description: |
Number of results to return. Defaults to 100. Maximum is 500. Kept as a bespoke integer parameter rather than the common `count` parameter because the common definition is typed as a string.
schema:
type: integer
minimum: 1
maximum: 500
default: 100
- name: id
in: query
required: false
description: Optional repeated receipt id filter.
schema:
type: array
items:
type: string
style: form
explode: true
responses:
'200':
description: Paginated list of receipts.
content:
application/json:
schema:
type: object
required:
- paging
- receipts
properties:
paging:
type: object
required:
- nextOffset
- results
properties:
nextOffset:
type: string
description: The next offset is the start position of the read pointer for pagination.
results:
type: integer
description: The number of records included in the response.
total:
type: integer
nullable: true
description: The total number of records the server has available for the request.
additionalProperties: false
receipts:
type: array
items:
type: object
required:
- id
- receipt
- createdAt
- createdBy
properties:
id:
type: string
example: 6b8f7ef7-9f87-4db9-93a8-7b2f7d0d6f33
receipt:
type: string
description: Stored receipt markdown.
createdAt:
type: string
format: date-time
example: '2026-06-18T10:12:30Z'
createdBy:
type: string
example: service-account@example.iam.gserviceaccount.com
additionalProperties: false
additionalProperties: false
'400':
description: Invalid query parameter values.
content:
application/problem+json:
schema:
type: object
required:
- type
- title
- details
properties:
type:
description: A string path which uniquely classifies the domain of the error.
type: string
nullable: false
example: jackhenry/operation-failed
title:
description: A end-user readable string title of the error type.
nullable: false
type: string
details:
description: An array of end-user readable strings which provide additional details for the error message.
type: array
nullable: false
items:
type: string
data:
type: object
description: |
Additional data that could be useful to a developer or for handing the error programmatically. The schema for the data in this object is intentionally left undefined.
nullable: true
'401':
description: Although the HTTP standard specifies "unauthorized", semantically this response means "unauthenticated". That is, the client must authenticate itself to get the requested response.
'403':
description: The client does not have access rights to the content; that is, it is unauthorized, so the server is refusing to give the requested resource. Unlike 401, the clients identity is known to the server.
'500':
description: An unexpected internal server error occurred while processing the request.
content:
application/problem+json:
schema:
type: object
required:
- type
- title
- details
properties:
type:
description: A string path which uniquely classifies the domain of the error.
type: string
nullable: false
example: jackhenry/operation-failed
title:
description: A end-user readable string title of the error type.
nullable: false
type: string
details:
description: An array of end-user readable strings which provide additional details for the error message.
type: array
nullable: false
items:
type: string
data:
type: object
description: |
Additional data that could be useful to a developer or for handing the error programmatically. The schema for the data in this object is intentionally left undefined.
nullable: true
examples:
internalServerError:
summary: Internal server error
value:
type: general/internal-server-error
title: Internal server error
details:
- Unexpected internal server error
post:
operationId: createReceipt
tags:
- Receipts
summary: Create Receipt
description: |
Generates receipt markdown from the provided payload, stores it, and returns the rendered output in the format requested by the `Accept` header.
parameters:
- name: InstitutionUniversalId
in: path
description: A unique identifier to establish the identity of an Institution/Environment/Brand combination
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- components
properties:
receiptId:
type: string
example: 6b8f7ef7-9f87-4db9-93a8-7b2f7d0d6f33
styles:
type: object
description: Presentation-level printer settings for a receipt.
properties:
marginLeft:
type: integer
description: Left margin in characters (optional, default 0).
minimum: 0
example: 5
marginRight:
type: integer
description: Right margin in characters (optional, default 0).
minimum: 0
example: 5
additionalProperties: false
components:
type: array
description: |
Ordered list of components rendered in sequence. Each component maps to receiptline formatting. Learn more at https://github.com/receiptline/receiptline
items:
type: object
discriminator:
propertyName: type
properties:
type:
type: string
enum:
- image
- text
- table
- barcode
- qr
- line
- blank
description: Component type determines which fields are used.
required:
- type
additionalProperties: false
oneOf:
- type: object
required:
- type
- value
properties:
type:
type: string
enum:
- image
value:
type: string
description: |
Image as plain text (rendered as logo with double-width), base64-encoded PNG data (starts with "iVBORw0KGgo"), or HTTPS URL to fetch a PNG image (http:// or https://). When a URL is provided, the server will fetch and convert it to base64.
example: COMPANY LOGO
width:
type: integer
description: Image width in pixels (optional, for scaling/limiting image size).
example: 200
height:
type: integer
description: Image height in pixels (optional, for scaling/limiting image size).
example: 100
additionalProperties: false
- type: object
required:
- type
- value
properties:
type:
type: string
enum:
- text
value:
type: string
description: Text content to display.
example: Order Total
align:
type: string
enum:
- left
- center
- right
description: Horizontal alignment.
example: right
emphasis:
type: boolean
description: Apply double-width formatting via ^^.
example: true
additionalProperties: false
- type: object
required:
- type
- columns
- rows
properties:
type:
type: string
enum:
- table
columns:
type: array
description: Column definitions with width and alignment.
items:
type: object
required:
- width
properties:
width:
type: string
description: 'Column width: "10" for fixed chars, "*" for flexible, "auto" for automatic.'
example: '*'
align:
type: string
enum:
- left
- center
- right
description: Text alignment within column cells.
example: right
additionalProperties: false
rows:
type: array
description: Table rows containing cells.
items:
type: object
required:
- cells
properties:
cells:
type: array
items:
type: object
description: A single cell within a table row. Note - alignment is controlled at the column level, not per-cell.
required:
- value
properties:
value:
type: string
example: $15.99
emphasis:
type: boolean
description: Apply double-width formatting via ^^.
additionalProperties: false
additionalProperties: false
border:
type: string
enum:
- line
- black
- space
- none
description: Border/separator style ("black" is accepted as an alias of "line").
example: line
additionalProperties: false
- type: object
required:
- type
- code
properties:
type:
type: string
enum:
- barcode
code:
type: string
description: Data to encode in barcode.
example: '123456789012'
symbology:
type: string
description: |
Barcode type. Common options: code39, code128, ean8, ean13, upca, upce, itf, codabar, code93. See receiptline documentation for full list.
example: ean13
barcodeHeight:
type: integer
description: Barcode height in pixels (optional).
example: 48
additionalProperties: false
- type: object
required:
- type
- value
properties:
type:
type: string
enum:
- qr
value:
type: string
description: Data encoded in QR code (URL, text, etc.).
example: https://example.com
size:
type: integer
description: QR code size/version (1-40, auto if omitted).
example: 20
additionalProperties: false
- type: object
required:
- type
properties:
type:
type: string
enum:
- line
description: Renders as horizontal rule (receiving a dash -).
additionalProperties: false
- type: object
required:
- type
properties:
type:
type: string
enum:
- blank
description: Renders nothing; useful for spacing in component arrays.
additionalProperties: false
additionalProperties: false
responses:
'200':
description: Receipt successfully generated, persisted, and returned.
content:
text/plain:
schema:
type: string
description: Generated receipt markdown.
application/octet-stream:
schema:
type: string
format: binary
description: ESC/POS printer byte stream.
image/svg+xml:
schema:
type: string
description: SVG rendering of the receipt.
'400':
description: Bad request body or invalid receipt payload.
content:
application/problem+json:
schema:
type: object
required:
- type
- title
- details
properties:
type:
description: A string path which uniquely classifies the domain of the error.
type: string
nullable: false
example: jackhenry/operation-failed
title:
description: A end-user readable string title of the error type.
nullable: false
type: string
details:
description: An array of end-user readable strings which provide additional details for the error message.
type: array
nullable: false
items:
type: string
data:
type: object
description: |
Additional data that could be useful to a developer or for handing the error programmatically. The schema for the data in this object is intentionally left undefined.
nullable: true
'401':
description: Although the HTTP standard specifies "unauthorized", semantically this response means "unauthenticated". That is, the client must authenticate itself to get the requested response.
'403':
description: The client does not have access rights to the content; that is, it is unauthorized, so the server is refusing to give the requested resource. Unlike 401, the clients identity is known to the server.
'500':
description: An unexpected internal server error occurred while processing the request.
content:
application/problem+json:
schema:
type: object
required:
- type
- title
- details
properties:
type:
description: A string path which uniquely classifies the domain of the error.
type: string
nullable: false
example: jackhenry/operation-failed
title:
description: A end-user readable string title of the error type.
nullable: false
type: string
details:
description: An array of end-user readable strings which provide additional details for the error message.
type: array
nullable: false
items:
type: string
data:
type: object
description: |
Additional data that could be useful to a developer or for handing the error programmatically. The schema for the data in this object is intentionally left undefined.
nullable: true
examples:
internalServerError:
summary: Internal server error
value:
type: general/internal-server-error
title: Internal server error
details:
- Unexpected internal server error
/a/api/picard/v1/{InstitutionUniversalId}/receipts/{id}:
get:
operationId: getReceipt
tags:
- Receipts
summary: Fetch Receipt
description: |
Retrieves a previously stored receipt by id and returns it in the format requested by the `Accept` header.
parameters:
- name: InstitutionUniversalId
in: path
description: A unique identifier to establish the identity of an Institution/Environment/Brand combination
required: true
schema:
type: string
- name: id
in: path
required: true
description: Receipt identifier generated when the receipt is first created.
schema:
type: string
example: 6b8f7ef7-9f87-4db9-93a8-7b2f7d0d6f33
responses:
'200':
description: Receipt found and returned in requested format.
content:
text/plain:
schema:
type: string
description: Stored receipt markdown.
application/octet-stream:
schema:
type: string
format: binary
description: ESC/POS printer byte stream.
image/svg+xml:
schema:
type: string
description: SVG rendering of the receipt.
'400':
description: The server could not understand the request due to an invalid request.
content:
application/problem+json:
schema:
type: object
required:
- type
- title
- details
properties:
type:
description: A string path which uniquely classifies the domain of the error.
type: string
nullable: false
example: jackhenry/operation-failed
title:
description: A end-user readable string title of the error type.
nullable: false
type: string
details:
description: An array of end-user readable strings which provide additional details for the error message.
type: array
nullable: false
items:
type: string
data:
type: object
description: |
Additional data that could be useful to a developer or for handing the error programmatically. The schema for the data in this object is intentionally left undefined.
nullable: true
'401':
description: Although the HTTP standard specifies "unauthorized", semantically this response means "unauthenticated". That is, the client must authenticate itself to get the requested response.
'403':
description: The client does not have access rights to the content; that is, it is unauthorized, so the server is refusing to give the requested resource. Unlike 401, the clients identity is known to the server.
'404':
description: The server can not find the requested resource. In an API, this can also mean that the endpoint is valid but the resource itself does not exist. Servers may also send this response instead of 403 to hide the existence of a resource from an unauthorized client.
'500':
description: An unexpected internal server error occurred while processing the request.
content:
application/problem+json:
schema:
type: object
required:
- type
- title
- details
properties:
type:
description: A string path which uniquely classifies the domain of the error.
type: string
nullable: false
example: jackhenry/operation-failed
title:
description: A end-user readable string title of the error type.
nullable: false
type: string
details:
description: An array of end-user readable strings which provide additional details for the error message.
type: array
nullable: false
items:
type: string
data:
type: object
description: |
Additional data that could be useful to a developer or for handing the error programmatically. The schema for the data in this object is intentionally left undefined.
nullable: true
examples:
internalServerError:
summary: Internal server error
value:
type: general/internal-server-error
title: Internal server error
details:
- Unexpected internal server error
Did this page help you?
Why was this page helpful?
Why wasn't this page helpful?
Thank you for your feedback!
Last updated Tue Sep 15 2026