A valid request URL is required to generate request examples{
"results": [
{
"code": "GC-4F2A-9B71",
"status": "created"
}
],
"created": 1,
"skipped": 0,
"failed": 0
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123,
"fieldErrors": [
{
"field": "<string>",
"message": "<string>"
}
]
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123
}
}Bulk-issue stored-value instruments (carte cadeau)
Mints many instruments from a batch of drafts through the SAME issue path. Each element of instruments is exactly an issueGiftcard body — id, kind (gift_card | credit_note | store_credit), code, 3-letter currency and a strictly positive integer amountCents, plus optional customerId and expiresAt. The array is typed loosely ON PURPOSE so one bad row cannot 400 the whole batch. Returns a per-row report keyed by bearer code (created / skipped when the id or code already exists / failed with a reason). Idempotent: re-posting the same batch skips the rows already issued. Invalid rows are REPORTED, not rejected — the batch still returns 200, so always read failed and the per-row reason rather than trusting the status code. The whole batch is refused with a 403 when the caller lacks the issuance right.
A valid request URL is required to generate request examples{
"results": [
{
"code": "GC-4F2A-9B71",
"status": "created"
}
],
"created": 1,
"skipped": 0,
"failed": 0
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123,
"fieldErrors": [
{
"field": "<string>",
"message": "<string>"
}
]
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123
}
}Authorizations
Authorization: Bearer <token>. Accepts EITHER a Keycloak access token (scopes-in-token) OR an opaque POS session token; both resolve to the same pos.* scope vocabulary the route guards enforce.
Body
The batch of issuance drafts; each element is an issueGiftcard body.
Response
The per-row outcome plus the created/skipped/failed totals.
The per-row outcome plus the created/skipped/failed totals.

