{"openapi":"3.1.0","info":{"title":"EU EPC QR Builder API","version":"0.1.0","description":"EU EPC QR Builder turns invoice payment details into the EPC069-12 v3.1 'BCD' payload that European banking apps read to pre-fill a SEPA credit transfer. build_epc_payload assembles the payload (version 002 or 001, character set 1 to 8) from beneficiary name, IBAN, amount, purpose and one remittance reference, and refuses anything that breaks a field limit, the literal EUR amount format or the...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://eu-epc-qr.connectorbay.com/mcp.\n\nDisclaimer: General information only, not legal, tax, accounting or payment advice. EU EPC QR Builder is an independent tool: it is not affiliated with, endorsed by or operated by any government body, central bank, standards body or scheme operator. Rates, thresholds and rules change; check the cited official source and confirm with a qualified professional before you rely on a result.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/eu-epc-qr/docs"},"termsOfService":"https://connectorbay.com/eu-epc-qr/terms"},"servers":[{"url":"https://eu-epc-qr.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/eu-epc-qr/docs"},"security":[{},{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/build_epc_payload":{"post":{"operationId":"build_epc_payload","summary":"Assemble the EPC069-12 BCD payload from beneficiary name, IBAN, amount, purpose and one remittance field, enforcing fiel","description":"Assemble the EPC069-12 BCD payload from beneficiary name, IBAN, amount, purpose and one remittance field, enforcing field limits and the 331-byte cap. Use for \"Build the EPC QR payload for EUR 480.00 to my company account for invoice 20260142\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"description":"Beneficiary name (the account holder), 1 to 70 characters (at most 300 characters)","title":"Name","type":"string"},"iban":{"description":"Beneficiary IBAN; spaces and lower case are accepted and normalised (at most 50 characters)","title":"Iban","type":"string"},"amount":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Amount in euro as a plain decimal string with a dot and at most 2 decimals, for example 480.00; omit to let the payer type the amount (at most 30 characters)","title":"Amount"},"reference":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Structured remittance: a creditor reference (for example an ISO 11649 RF reference), max 35 characters; cannot be combined with text (at most 50 characters)","title":"Reference"},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Unstructured remittance text such as an invoice number, max 140 characters; cannot be combined with reference (at most 300 characters)","title":"Text"},"bic":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"BIC of the beneficiary bank (8 or 11 characters); mandatory in version 001, optional in version 002 for EEA banks (at most 20 characters)","title":"Bic"},"purpose":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Purpose code, 1 to 4 upper-case letters or digits (for example GDDS) (at most 20 characters)","title":"Purpose"},"info":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Beneficiary-to-originator information, max 70 characters (at most 300 characters)","title":"Info"},"version":{"default":"002","description":"EPC QR version: 002 (default; BIC optional) or 001 (BIC mandatory) (at most 10 characters)","title":"Version","type":"string"},"charset":{"default":1,"description":"EPC character set code 1 to 8 (1 = UTF-8, the default; 2 = ISO 8859-1)","title":"Charset","type":"integer"}},"required":["name","iban"],"title":"build_epc_payloadArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/validate_epc_payload":{"post":{"operationId":"validate_epc_payload","summary":"Parse a pasted EPC QR payload and report which EPC069-12 element each problem is in. Use for \"Is this SEPA QR text valid","description":"Parse a pasted EPC QR payload and report which EPC069-12 element each problem is in. Use for \"Is this SEPA QR text valid, and what is wrong with it?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"payload":{"description":"The full text of the EPC QR payload, lines separated by line feeds (as decoded from the QR code) (at most 5,000 characters)","title":"Payload","type":"string"}},"required":["payload"],"title":"validate_epc_payloadArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/render_epc_qr":{"post":{"operationId":"render_epc_qr","summary":"Render a valid EPC QR payload as SVG or PNG at error correction M, checking it fits QR version 13. Use for \"Give me the ","description":"Render a valid EPC QR payload as SVG or PNG at error correction M, checking it fits QR version 13. Use for \"Give me the QR image for this payment request to print on the invoice\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"payload":{"description":"A valid EPC QR payload (see build_epc_payload) (at most 5,000 characters)","title":"Payload","type":"string"},"format":{"default":"svg","description":"svg (default) or png_base64 (at most 20 characters)","title":"Format","type":"string"},"border":{"default":4,"description":"Quiet-zone width in modules, 4 (default) or more","title":"Border","type":"integer"}},"required":["payload"],"title":"render_epc_qrArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/validate_iban":{"post":{"operationId":"validate_iban","summary":"Check an IBAN's characters, per-country length (ISO 13616 registry) and mod 97-10 check digits before it goes into a QR.","description":"Check an IBAN's characters, per-country length (ISO 13616 registry) and mod 97-10 check digits before it goes into a QR. Use for \"Is this IBAN well-formed before I print it on the invoice?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"iban":{"description":"IBAN with or without spaces (at most 50 characters)","title":"Iban","type":"string"}},"required":["iban"],"title":"validate_ibanArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/make_rf_reference":{"post":{"operationId":"make_rf_reference","summary":"Build an ISO 11649 RF creditor reference from a body, or validate one, for the structured remittance field. Use for \"Cre","description":"Build an ISO 11649 RF creditor reference from a body, or validate one, for the structured remittance field. Use for \"Create an ISO 11649 RF creditor reference for invoice number 20260142\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"body":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Reference body to build from: 1 to 21 letters or digits (no hyphens or slashes) (at most 50 characters)","title":"Body"},"reference":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"An existing RF reference to validate (RF, 2 check digits, body) (at most 50 characters)","title":"Reference"}},"title":"make_rf_referenceArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/choose_remittance_mode":{"post":{"operationId":"choose_remittance_mode","summary":"Explain the EPC rule that only one of structured or unstructured remittance may be filled and which field fits what you ","description":"Explain the EPC rule that only one of structured or unstructured remittance may be filled and which field fits what you have. Use for \"Should the invoice number go in the reference field or in the free text?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"have_structured_reference":{"description":"True if you have a creditor reference (for example an ISO 11649 RF reference) to carry","title":"Have Structured Reference","type":"boolean"},"have_free_text":{"default":false,"description":"True if you also have free text such as an invoice number","title":"Have Free Text","type":"boolean"}},"required":["have_structured_reference"],"title":"choose_remittance_modeArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/field_limits":{"post":{"operationId":"field_limits","summary":"The EPC069-12 v3.1 element list: order, mandatory or conditional flag, maximum length and content rule, plus payload lim","description":"The EPC069-12 v3.1 element list: order, mandatory or conditional flag, maximum length and content rule, plus payload limits. Use for \"What are the maximum field lengths in an EPC QR code?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"field_limitsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}