---
updatedAt: 2026-06-16T12:48:09.000Z
agentTools:
  siteIndex: https://developers.pismo.io/llms.txt
  projectIndex: https://developers.pismo.io/pismo-docs/llms.txt
---

# Create recurrent COB QR Code

Create a COB QR Code for a recurring payment as a EMV (Europay Mastercard Visa) string.

COB is short for *cobranca*, which means charge in Portuguese. A COB QR Code has an expiration date while a COBV QR Code has a due date, fine, interest, and rebates.

For more information, refer to [Pix and QR Codes](doc:pix-and-qr-codes).

**Note:** This endpoint takes an account token - an access token encoded with a Pismo account ID.


# OpenAPI definition

```json
{
  "openapi": "3.1.0",
  "info": {
    "title": "Instant payments - QR Code",
    "contact": {
      "name": "Pismo"
    },
    "description": "QR Code API for creating dynamic QR Code strings, and payloads for payment",
    "license": {
      "name": "Copyright Pismo"
    },
    "version": "1.0"
  },
  "servers": [
    {
      "url": "https://sandbox-cdn.pismolabs.io/qrcode",
      "description": "Sandbox API server for testing."
    }
  ],
  "tags": [
    {
      "name": "Recurring payment"
    }
  ],
  "components": {
    "parameters": {
      "authHeader": {
        "name": "Authorization",
        "in": "header",
        "schema": {
          "type": "string"
        },
        "description": "Account token - token encoded with a Pismo account ID. Tokens can expire quickly, which can result in a <b>401 Unauthorized</b> message.\n",
        "required": true
      }
    },
    "schemas": {
      "accessToken": {
        "type": "string",
        "description": "QR Code access token generated and returned at creation.\n",
        "example": "1234567890"
      },
      "accessTokenRequest": {
        "type": "string",
        "description": "Access token related to the `url_payload`/`url_payload_rec` fields, used to register and validate a QR code.\n\nThis field **must** be provided if the PSP requires it. The URL format is described in the Manual of Standards for PIX Initiation.\n",
        "example": "153ed19a-e738-4417-9e98-a515c276a731"
      },
      "additionalInfo": {
        "type": "array",
        "description": "Additional remarks",
        "items": {
          "$ref": "#/components/schemas/qrcode.Additional"
        }
      },
      "address": {
        "type": "string",
        "maxLength": 200,
        "description": "Location",
        "example": "10 Downing Street, London  SW1A 2AB, UK"
      },
      "allowsValueChange": {
        "type": "boolean",
        "description": "Can payer change payment values? Default is `false`.",
        "example": true
      },
      "amount": {
        "type": "number",
        "description": "Amount to be transferred.",
        "example": 1050.44
      },
      "city": {
        "type": "string",
        "maxLength": 40,
        "description": "City where payment occurred.",
        "example": "Brasilia"
      },
      "contractID": {
        "type": "string",
        "description": "Payee-created external ID for their reference.\n",
        "maxLength": 35,
        "example": "5509-uroo-78944-9987"
      },
      "Taxes": {
        "type": "object",
        "description": "Now only available on EXT environmentand just for direct parciapants. Tax information related to the transaction.",
        "properties": {
          "tax_identifier": {
            "$ref": "#/components/schemas/TaxIdentifier"
          },
          "records": {
            "type": "array",
            "description": "Group of information on tax record types. It is mandatory to pass 2 objects, at least one with CBS tax type and at least one with IBS tax type.\";",
            "items": {
              "$ref": "#/components/schemas/Records"
            }
          }
        }
      },
      "TaxIdentifier": {
        "type": "string",
        "description": "Tax identifier, referring to the NFe, NFSe or aggregating tax document. The value entered must correspond to the tax document used for calculating the IBS and CBS taxes associated with the transaction.",
        "example": "IS0435879820240605bcdb1fhn43a",
        "maxLength": 50
      },
      "TaxType": {
        "type": "string",
        "description": "Tax type. 1- IBS (Goods and Services Tax | 2- CBS Contribution on Goods and Services",
        "example": "IBS",
        "enum": [
          "CBS",
          "IBS"
        ]
      },
      "TaxAmount": {
        "type": "number",
        "minimum": 0,
        "description": "Tax amount. Must be greater than zero.",
        "example": 1050.44
      },
      "Records": {
        "type": "object",
        "properties": {
          "tax_type": {
            "$ref": "#/components/schemas/TaxType"
          },
          "amount": {
            "$ref": "#/components/schemas/TaxAmount"
          }
        }
      },
      "customer.DetailMessage": {
        "type": "object",
        "properties": {
          "external": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/customer.ExternalMessage"
            }
          },
          "parameters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/customer.ParameterMessage"
            }
          },
          "payload": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/customer.PayloadMessage"
            }
          }
        }
      },
      "customer.Error": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "description": "Error code.",
            "example": "EPT0001"
          },
          "details": {
            "$ref": "#/components/schemas/customer.DetailMessage"
          },
          "message": {
            "type": "string",
            "description": "Error message.",
            "example": "User not found"
          }
        }
      },
      "customer.ExternalMessage": {
        "type": "object",
        "required": [
          "code",
          "message"
        ],
        "properties": {
          "code": {
            "type": "string",
            "description": "Error code.",
            "example": "PBE315"
          },
          "message": {
            "type": "string",
            "description": "Error message.",
            "example": "Generic error"
          }
        }
      },
      "customer.ParameterMessage": {
        "type": "object",
        "required": [
          "field",
          "message"
        ],
        "properties": {
          "field": {
            "type": "string",
            "description": "Detailed field name",
            "example": "query_parameter"
          },
          "message": {
            "type": "string",
            "description": "Error's message.",
            "example": "Generic error"
          }
        }
      },
      "customer.PayloadMessage": {
        "type": "object",
        "required": [
          "field",
          "message"
        ],
        "properties": {
          "field": {
            "type": "string",
            "description": "Detailed field name.",
            "example": "Entity.field"
          },
          "message": {
            "type": "string",
            "description": "Error message.",
            "example": "Generic error"
          }
        }
      },
      "debtor": {
        "type": "object",
        "required": [
          "document_number",
          "document_type",
          "name"
        ],
        "properties": {
          "document_number": {
            "$ref": "#/components/schemas/documentNumber"
          },
          "document_type": {
            "$ref": "#/components/schemas/legalType"
          },
          "name": {
            "$ref": "#/components/schemas/name"
          }
        }
      },
      "documentNumber": {
        "type": "string",
        "maxLength": 15,
        "description": "Government ID, such as a CPF (Cadastro de Pessoas Fisicas - individual tax ID in Brazil) or a CNPJ (Cadastro Nacional de Pessoa Juridica - business tax ID in Brazil) number.\n",
        "example": "42761202686"
      },
      "emv": {
        "type": "string",
        "description": "Base 64 encoded discount QR Code payload. EMV = Europay, Mastercard and Visa, a global standard for credit and debit payment. The EMV might include details required for secure transactions such as cardholder informatipn, transaction amount, merchant information, and other relevant data.\n",
        "example": "00020101021226980014br.gov.bcb.pix2576api-h.developer.btgpactual.com/pc/p/v2/...***63040441"
      },
      "externalID": {
        "type": "string",
        "description": "Client-generated record identifier for client tracking and monitoring.\n",
        "example": "my-external-id-9999-6474"
      },
      "firstPaymentDate": {
        "type": "string",
        "format": "datetime",
        "description": "First charge/payment date. Format = yyyy-mm-dd",
        "example": "2025-04-25"
      },
      "frequencyType": {
        "type": "string",
        "description": "Recurrence payment type",
        "enum": [
          "WEEK",
          "MONTH",
          "QUARTER",
          "SEMESTER",
          "YEAR"
        ],
        "example": "MONTH"
      },
      "initialAmount": {
        "type": "number",
        "description": "Initial payment amount",
        "example": 86753.09
      },
      "jws": {
        "type": "string",
        "description": "JWS (JSON Web Signature) payload. When a JWT (JSON Web Token) is signed, it becomes a JWS.\n",
        "example": "eYqqqwq.heif.jk2w"
      },
      "jwsRec": {
        "type": "string",
        "description": "Signed JWS payload, referring to the data of the recurrence.\n",
        "example": "eYqqqwq.heif.jk2w"
      },
      "labelName": {
        "type": "string",
        "maxLength": 140,
        "description": "Label name",
        "example": "Purity of essence"
      },
      "lastPaymentDate": {
        "type": "string",
        "format": "datetime",
        "description": "Last charge/payment date. Format = yyyy-mm-dd",
        "example": "2026-06-10"
      },
      "legalType": {
        "type": "string",
        "description": "Person legal type:\n  * `LEGAL_PERSON` - Person\n  * `NATURAL_PERSON` - Company or organization\n",
        "enum": [
          "LEGAL_PERSON",
          "NATURAL_PERSON"
        ],
        "example": "NATURAL_PERSON"
      },
      "merchantCategory": {
        "type": "string",
        "description": "Receiver ISO 18245 merchant category code.",
        "example": "5651"
      },
      "minPaymentAmount": {
        "type": "number",
        "description": "Payee-defined minimum payment amount for dynamic amount recurrences.",
        "example": 10.09
      },
      "name": {
        "type": "string",
        "maxLength": 25,
        "description": "Name",
        "example": "Eva Destrukion"
      },
      "payerSolicitation": {
        "type": "string",
        "maxLength": 140,
        "description": "Payee text sent to payer.",
        "example": "For dinner last night"
      },
      "pixKey": {
        "type": "string",
        "maxLength": 77,
        "description": "Payee Pix key (should have Pismo account)",
        "example": "chuck@steaks.com"
      },
      "qrcode.Additional": {
        "type": "object",
        "required": [
          "name",
          "value"
        ],
        "properties": {
          "name": {
            "$ref": "#/components/schemas/labelName"
          },
          "value": {
            "$ref": "#/components/schemas/value"
          }
        }
      },
      "qrcodeExpirationTime": {
        "type": "integer",
        "description": "QR Code's maximum time for presentation (in seconds)",
        "example": 7200
      },
      "qrcodeID": {
        "type": "string",
        "description": "Pismo QR Code identifier",
        "example": "442e992a-2f89-46fb-820a-958693bde84d"
      },
      "qrcode.CreateRecurrenceQrCodeCobResponse": {
        "type": "object",
        "description": "Create a Recurrence COB Qrcode response",
        "required": [
          "id",
          "access_token",
          "external_id",
          "emv",
          "qrcode_image_b64",
          "recurrence_id"
        ],
        "properties": {
          "id": {
            "$ref": "#/components/schemas/qrcodeID"
          },
          "access_token": {
            "$ref": "#/components/schemas/accessToken"
          },
          "external_id": {
            "$ref": "#/components/schemas/externalID"
          },
          "emv": {
            "$ref": "#/components/schemas/emv"
          },
          "qrcode_imageb64": {
            "$ref": "#/components/schemas/qrcode.imageb64"
          },
          "recurrence_id": {
            "$ref": "#/components/schemas/recurrenceID"
          },
          "jws": {
            "$ref": "#/components/schemas/jws"
          },
          "jws_rec": {
            "$ref": "#/components/schemas/jwsRec"
          }
        }
      },
      "qrcode.CreateRecurrenceQrCodeCobRequest": {
        "type": "object",
        "required": [
          "payee",
          "payer",
          "initial_amount",
          "transaction_identification"
        ],
        "properties": {
          "payee": {
            "$ref": "#/components/schemas/qrcode.PayeeRequest"
          },
          "payer": {
            "$ref": "#/components/schemas/qrcode.PayerRequest"
          },
          "initial_amount": {
            "$ref": "#/components/schemas/initialAmount"
          },
          "transaction_identification": {
            "$ref": "#/components/schemas/transactionID"
          },
          "payer_solicitation": {
            "$ref": "#/components/schemas/payerSolicitation"
          },
          "allows_value_change": {
            "$ref": "#/components/schemas/allowsValueChange"
          },
          "qrcode_expiration_time": {
            "$ref": "#/components/schemas/qrcodeExpirationTime"
          },
          "additional_information": {
            "$ref": "#/components/schemas/additionalInfo"
          },
          "reusable": {
            "$ref": "#/components/schemas/reusable"
          },
          "location": {
            "$ref": "#/components/schemas/qrcode.LocationDynamicQrcode"
          },
          "recurrence_id": {
            "$ref": "#/components/schemas/recurrenceID"
          },
          "recurrence": {
            "$ref": "#/components/schemas/qrcode.Recurrence"
          },
          "access_token": {
            "$ref": "#/components/schemas/accessTokenRequest"
          }
        }
      },
      "qrcode.imageb64": {
        "type": "string",
        "description": "Base64 encoded QR Code",
        "example": "dfkk7830o*&#)@#9FEE"
      },
      "qrcode.LocationDynamicQrcode": {
        "type": "object",
        "description": "Location URL information",
        "properties": {
          "url_jwk": {
            "$ref": "#/components/schemas/urlJWK"
          },
          "url_payload": {
            "$ref": "#/components/schemas/urlPayload"
          },
          "url_payload_rec": {
            "$ref": "#/components/schemas/urlPayloadRec"
          }
        }
      },
      "qrcode.PayeeRequest": {
        "type": "object",
        "description": "Payee information",
        "required": [
          "address",
          "city",
          "key",
          "state",
          "zip_code"
        ],
        "properties": {
          "address": {
            "$ref": "#/components/schemas/address"
          },
          "city": {
            "$ref": "#/components/schemas/city"
          },
          "key": {
            "$ref": "#/components/schemas/pixKey"
          },
          "state": {
            "$ref": "#/components/schemas/state"
          },
          "zip_code": {
            "$ref": "#/components/schemas/zipCode"
          },
          "category": {
            "$ref": "#/components/schemas/merchantCategory"
          }
        }
      },
      "qrcode.PayerRequest": {
        "type": "object",
        "description": "Payer information",
        "required": [
          "name",
          "document_number",
          "type"
        ],
        "properties": {
          "name": {
            "$ref": "#/components/schemas/name"
          },
          "document_number": {
            "$ref": "#/components/schemas/documentNumber"
          },
          "type": {
            "$ref": "#/components/schemas/legalType"
          },
          "trade_name": {
            "$ref": "#/components/schemas/tradeName"
          }
        }
      },
      "qrcode.Recurrence": {
        "type": "object",
        "description": "Recurrence object. Either this or `recurrence_id` is **REQUIRED**.",
        "required": [
          "frequency_type",
          "first_payment_date",
          "debtor",
          "contract_id"
        ],
        "properties": {
          "frequency_type": {
            "$ref": "#/components/schemas/frequencyType"
          },
          "first_payment_date": {
            "$ref": "#/components/schemas/firstPaymentDate"
          },
          "last_payment_date": {
            "$ref": "#/components/schemas/lastPaymentDate"
          },
          "amount": {
            "$ref": "#/components/schemas/amount"
          },
          "min_payment_amount": {
            "$ref": "#/components/schemas/minPaymentAmount"
          },
          "debtor": {
            "$ref": "#/components/schemas/debtor"
          },
          "contract_id": {
            "$ref": "#/components/schemas/contractID"
          },
          "description": {
            "$ref": "#/components/schemas/recurrenceDescription"
          },
          "allow_attempts_after_expiration": {
            "$ref": "#/components/schemas/retry"
          },
          "taxes": {
            "$ref": "#/components/schemas/Taxes"
          }
        }
      },
      "recurrenceDescription": {
        "type": "string",
        "description": "Recurrence payment description",
        "maxLength": 35,
        "example": "Gym membership"
      },
      "recurrenceID": {
        "type": "string",
        "description": "Recurrence ID. Either this or the `recurrence` object is **REQUIRED**.",
        "example": "RN219952X6X02505XXCONTRACTXXX"
      },
      "retry": {
        "type": "boolean",
        "description": "Allow transaction retries on failure? Default is `false`.",
        "default": false,
        "example": true
      },
      "reusable": {
        "type": "boolean",
        "description": "Can QR Code be reused? Default is `false`.",
        "default": false,
        "example": true
      },
      "state": {
        "type": "string",
        "maxLength": 2,
        "description": "Brazilian state where payment will occur - two letter ISO 3166 code.",
        "example": "DF"
      },
      "tradeName": {
        "type": "string",
        "description": "Company name",
        "example": "Acme Widgets"
      },
      "transactionID": {
        "type": "string",
        "minLength": 26,
        "maxLength": 36,
        "description": "Client-generated unique transaction ID for client monitoring and tracking.\n",
        "example": "trans-id-75789947401234567"
      },
      "urlJWK": {
        "type": "string",
        "description": "PSP Receiver's URL that holds key pairs in JSON format. Should be hosted on the same site associated with the CERTQRC certificate. Use the format \"JWK Set URL\"  without the protocol (http/https).\n\nThe Central Bank uses this field and `url_payload` to register and validate the QR Code. This field **must** be passed if the PSP requires it.\n\nThe URL format is described in <a href=\"https://www.bcb.gov.br/content/estabilidadefinanceira/cedsfn/Manual_de_Seguranca_PIX.pdf\" target=\"_blank\">Manual de Segurança do PIX</a>.\n"
      },
      "urlPayload": {
        "type": "string",
        "maxLength": 77,
        "description": "PSP Receiver's URL containing the dynamic QR Code's JSON Web Signature (JWS). Should not include the protocol (http/https).\n\nThe Central Bank uses this field and `url_jwk` to register and validate the QR Code. This field **must** be passed if the PSP requires it.\n\nThe URL format is described in <a href=\"https://www.bcb.gov.br/content/estabilidadefinanceira/pix/Regulamento_Pix/II_ManualdePadroesparaIniciacaodoPix.pdf\" target=\"_blank\">Manual de Padrões para Iniciação do PIX</a>.\n",
        "example": "example.com/pix/8b3da2f3-941-40d1-a91a-bd93113bd441"
      },
      "urlPayloadRec": {
        "type": "string",
        "maxLength": 77,
        "description": "PSP Receiver's URL containing the recurence QR Code's JSON Web Signature (JWS). Should not include the protocol (http/https).\n\nThe Central Bank uses this field and `url_jwk` to register and validate the QR Code. This field **must** be passed if the PSP requires it.\n\nThe URL format is described in <a href=\"https://www.bcb.gov.br/content/estabilidadefinanceira/pix/Regulamento_Pix/II_ManualdePadroesparaIniciacaodoPix.pdf\" target=\"_blank\">Manual de Padrões para Iniciação do PIX</a>.\n",
        "example": "example.com/rec/8b3da2f3-941-40d1-a91a-bd93113bd441"
      },
      "value": {
        "type": "string",
        "maxLength": 140,
        "description": "Value",
        "example": "5.00"
      },
      "zipCode": {
        "type": "string",
        "description": "Location postal code.",
        "example": "8675309"
      }
    },
    "responses": {
      "400BadRequest": {
        "description": "Bad request",
        "headers": {
          "x-cid": {
            "schema": {
              "type": "string"
            },
            "description": "Request tracking identifier"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/customer.Error"
            }
          }
        }
      },
      "401Unauthorized": {
        "description": "Invalid authorization",
        "headers": {
          "x-cid": {
            "schema": {
              "type": "string"
            },
            "description": "Request tracking identifier"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/customer.Error"
            }
          }
        }
      },
      "403Forbidden": {
        "description": "Forbidden",
        "headers": {
          "x-cid": {
            "schema": {
              "type": "string"
            },
            "description": "Request tracking identifier"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/customer.Error"
            }
          }
        }
      },
      "404NotFound": {
        "description": "Not found",
        "headers": {
          "x-cid": {
            "schema": {
              "type": "string"
            },
            "description": "Request tracking identifier"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/customer.Error"
            }
          }
        }
      },
      "409Conflict": {
        "description": "Conflict",
        "headers": {
          "x-cid": {
            "schema": {
              "type": "string"
            },
            "description": "Request tracking identifier"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/customer.Error"
            }
          }
        }
      },
      "429TooManyRequests": {
        "description": "Too many reqquests",
        "headers": {
          "x-cid": {
            "schema": {
              "type": "string"
            },
            "description": "Request tracking identifier"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/customer.Error"
            }
          }
        }
      },
      "500InternalServerError": {
        "description": "Internal Server Error",
        "headers": {
          "x-cid": {
            "schema": {
              "type": "string"
            },
            "description": "Request tracking identifier"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/customer.Error"
            }
          }
        }
      },
      "502BadGateway": {
        "description": "Bad Gateway",
        "headers": {
          "x-cid": {
            "schema": {
              "type": "string"
            },
            "description": "Request tracking identifier"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/customer.Error"
            }
          }
        }
      },
      "504GatewayTimeout": {
        "description": "Gateway Timeout",
        "headers": {
          "x-cid": {
            "schema": {
              "type": "string"
            },
            "description": "Request tracking identifier"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/customer.Error"
            }
          }
        }
      }
    }
  },
  "paths": {
    "/v1/pix/qrcode/cob/recurrence": {
      "post": {
        "summary": "Create recurrent COB QR Code",
        "description": "Create a COB QR Code for a recurring payment as a EMV (Europay Mastercard Visa) string.\n\nCOB is short for *cobranca*, which means charge in Portuguese. A COB QR Code has an expiration date while a COBV QR Code has a due date, fine, interest, and rebates.\n\nFor more information, refer to [Pix and QR Codes](https://developers.pismo.io/pismo-docs/docs/pix-and-qr-codes).\n\n**Note:** This endpoint takes an account token - an access token encoded with a Pismo account ID.\n",
        "operationId": "post-create-recurrence-cob",
        "tags": [
          "Recurring payment"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/authHeader"
          }
        ],
        "requestBody": {
          "description": "Create recurrent COB QR Code request body",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/qrcode.CreateRecurrenceQrCodeCobRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "Create Recurrence Cob QR Code response",
            "headers": {
              "x-cid": {
                "schema": {
                  "type": "string"
                },
                "description": "Request tracking identifier"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/qrcode.CreateRecurrenceQrCodeCobResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/401Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/403Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/404NotFound"
          },
          "409": {
            "$ref": "#/components/responses/409Conflict"
          },
          "429": {
            "$ref": "#/components/responses/429TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/500InternalServerError"
          },
          "502": {
            "$ref": "#/components/responses/502BadGateway"
          },
          "504": {
            "$ref": "#/components/responses/504GatewayTimeout"
          }
        }
      }
    }
  }
}
```