Dynamic BR Code

BR Codes store information represented by Pix QR Codes, which are used to send or receive Pix transactions in a convenient way.Dynamic BR Codes represent charges with information that can change at any time, since all information needed for the payment is requested dynamically.Stark Bank hosts all Dynamic BR Code URLs and handles all security requirements defined by the Brazilian Central Bank, as well as certificate management.

RESOURCE SUMMARY
Dynamic BR Code Creation
Create a Pix Dynamic BR Code
Dynamic BR Code Payment
Track all Dynamic BR Code payments

Setup in Sandbox/Production

For each environment:1. Create an account at Stark Bank.2. Create asynchronous Webhook subscriptions to receive update Events. Register an URL using the POST Webhook route to receive Events about the following resources:  2.1 Dynamic BR Code: Creation and updates of Dynamic BR Codes

Creating Dynamic Brcodes

In this section, we will show how to create a Dynamic Brcode via API.When a Dynamic Brcode is generated, the response will include the corresponding UUID.This UUID serves as an essential unique identifier for references in future read requests. After creating the Brcode, the respective ID will be used to generate a QR Code image for your end customer.By using this route, you can create up to 100 new Dynamic Brcodes at once.Please note that the "amount" field is mandatory, and the "expiration" and "tags" are optional.See the example below:

Python


  import starkbank
  from datetime import datetime
  
  brcodes = starkbank.dynamicbrcode.create([
      starkbank.DynamicBrcode(
          amount=4000
      )
  ])
  
  for brcode in brcodes:
      print(brcode)
    

Javascript


  const starkbank = require('starkbank');
  
  (async() => {
      let brcodes = await starkbank.dynamicBrcode.create([{
          amount: 4000
      }]);
  
      for (let brcode of brcodes) {
          console.log(brcode);
      }
  })();
    

PHP


  use StarkBank\DynamicBrcode;
  
  $brcodes = DynamicBrcode::create([
      new DynamicBrcode([
          "amount" => 4000
      ])
  ]);
  
  foreach ($brcodes as $brcode) {
      print_r($brcode);
  }
    

Java


  import com.starkbank.*;
  import java.util.ArrayList;
  import java.util.HashMap;
  import java.util.List;
  
  List<DynamicBrcode> brcodes = new ArrayList<>();
  HashMap<String, Object> data = new HashMap<>();
  data.put("amount", 4000);
  
  brcodes.add(new DynamicBrcode(data));
  brcodes = DynamicBrcode.create(brcodes);
  
  for (DynamicBrcode brcode : brcodes) {
      System.out.println(brcode);
  }
    

Ruby


  require('starkbank')
  
  brcodes = StarkBank::DynamicBrcode.create(
      [
          StarkBank::DynamicBrcode.new(
              amount: 4000
          )
      ]
  )
  
  brcodes.each do |brcode|
      puts brcode
  end
    

Elixir


  brcode = StarkBank.DynamicBrcode.create!(
      [
          %StarkBank.DynamicBrcode{
          amount: 4000
          }
      ]
  ) |> IO.inspect()
    

C#


  using System;
  using System.Collections.Generic;
  
  List<StarkBank.DynamicBrcode> brcodes = StarkBank.DynamicBrcode.Create(
      new List<StarkBank.DynamicBrcode> {
          new StarkBank.DynamicBrcode(
              amount: 4000
          )
      }
  );
  
  foreach (StarkBank.DynamicBrcode brcode in brcodes)
  {
      Console.WriteLine(brcode);
  }
    

Go


  package main
  
  import (
      "fmt"
      "github.com/starkbank/sdk-go/starkbank/dynamicbrcode"
      "time"
  )
  
  func main() {
  
      due := time.Now().Add(time.Hour * 24)
  
      brcodes, err := dynamicbrcode.Create(
          []dynamicbrcode.DynamicBrcode{
              {
                  Amount:     4000
              },
          }, nil)
      if err.Errors != nil {
          for _, e := range err.Errors {
              panic(fmt.Sprintf("code: %s, message: %s", e.Code, e.Message))
          }
      }
  
      for _, brcode := range brcodes {
          fmt.Printf("%+v", brcode)
      }
  }
    

Clojure


  Not yet available. Please contact us if you need this SDK.
    

Curl


  curl --location --request POST '{{baseUrl}}/v2/dynamic-brcode' 
  --header 'Access-Id: {{accessId}}' 
  --header 'Access-Time: {{accessTime}}' 
  --header 'Access-Signature: {{accessSignature}}' 
  --header 'Content-Type: application/json' 
  --data-raw '{
      "brcodes": [
          {
              "amount": 4000
          }
      ]
  }'
    
Response

Python


  DynamicBrcode(
      amount=4000,
      created=2023-02-06 21:15:00.118056,
      expiration=1428 days, 21:33:09,
      id=00020101021226890014br.gov.bcb.pix2567brcode-h.sandbox.starkinfra.com/v2/80b0688d05934971a6b8ecd86cde69f25204000053039865802BR5925Stark Bank S.A. - Institu6009Sao Paulo62070503***630461C9,
      picture_url=https://sandbox.api.starkbank.com/v2/dynamic-brcode/80b0688d05934971a6b8ecd86cde69f2.png,
      tags=[],
      rules=[],
      updated=2023-02-06 21:15:00.449696,
      uuid=80b0688d05934971a6b8ecd86cde69f2
  )
    

Javascript


  DynamicBrcode {
      id: '00020101021226890014br.gov.bcb.pix2567brcode-h.sandbox.starkinfra.com/v2/e285405b196e42bb8e68f654283dcaa05204000053039865802BR5925Stark Bank S.A. - Institu6009Sao Paulo62070503***6304CB47',
      amount: 4000,
      expiration: 123456789,
      tags: [ ],
      uuid: '80b0688d05934971a6b8ecd86cde69f2',
      pictureUrl: 'https://sandbox.api.starkbank.com/v2/dynamic-brcode/80b0688d05934971a6b8ecd86cde69f2.png',
      updated: '2023-02-06T21:17:30.977004+00:00',
      created: '2023-02-06T21:17:30.625913+00:00'
  }
    

PHP


  StarkBank\DynamicBrcode Object
  (
      [id] => 00020101021226890014br.gov.bcb.pix2567brcode-h.sandbox.starkinfra.com/v2/e285405b196e42bb8e68f654283dcaa05204000053039865802BR5925Stark Bank S.A. - Institu6009Sao Paulo62070503***6304CB47
      [amount] => 4000
      [expiration] => DateInterval Object
          (
              [y] => 0
              [m] => 0
              [d] => 0
              [h] => 0
              [i] => 0
              [s] => 123456789
              [f] => 0
              [invert] => 0
              [days] => 
              [from_string] => 
          )
  
      [tags] => Array
          (
          )
  
      [uuid] => 80b0688d05934971a6b8ecd86cde69f2
      [pictureUrl] => https://sandbox.api.starkbank.com/v2/dynamic-brcode/80b0688d05934971a6b8ecd86cde69f2.png
      [updated] => DateTime Object
          (
              [date] => 2023-02-06 21:23:50.776494
              [timezone_type] => 1
              [timezone] => +00:00
          )
  
      [created] => DateTime Object
          (
              [date] => 2023-02-06 21:23:50.435531
              [timezone_type] => 1
              [timezone] => +00:00
          )
  
  )
    

Java


  DynamicBrcode({
      "amount": 4000,
      "expiration": 123456789,
      "tags": [],
      "uuid": "80b0688d05934971a6b8ecd86cde69f2",
      "pictureUrl": "https://sandbox.api.starkbank.com/v2/dynamic-brcode/80b0688d05934971a6b8ecd86cde69f2.png",
      "updated": "2023-02-06T21:30:36.688229+00:00",
      "created": "2023-02-06T21:30:36.372956+00:00",
      "id": "00020101021226890014br.gov.bcb.pix2567brcode-h.sandbox.starkinfra.com/v2/8411cece3387471ea7f2636b618c37fb5204000053039865802BR5925Stark Bank S.A. - Institu6009Sao Paulo62070503***6304556B"
  })
    

Ruby


  dynamicbrcode(
      id: 00020101021226890014br.gov.bcb.pix2567brcode-h.sandbox.starkinfra.com/v2/0e96a462d44a4d789f6d4fcbf7aa63b45204000053039865802BR5925Stark Bank S.A. - Institu6009Sao Paulo62070503***63048CC9,
      amount: 4000,
      expiration: 123456789,
      tags: [],
      uuid: 80b0688d05934971a6b8ecd86cde69f2,
      picture_url: https://sandbox.api.starkbank.com/v2/dynamic-brcode/80b0688d05934971a6b8ecd86cde69f2.png,
      created: 2023-02-06T21:39:47+00:00,
      updated: 2023-02-06T21:39:47+00:00
  )
    

Elixir


  %StarkBank.DynamicBrcode{
      id: "00020101021226890014br.gov.bcb.pix2567brcode-h.sandbox.starkinfra.com/v2/0e96a462d44a4d789f6d4fcbf7aa63b45204000053039865802BR5925Stark Bank S.A. - Institu6009Sao Paulo62070503***63048CC9",
      uuid: "80b0688d05934971a6b8ecd86cde69f2",
      amount: 4000,
      expiration: 123456789,
      picture_url: "https://sandbox.api.starkbank.com/v2/dynamic-brcode/80b0688d05934971a6b8ecd86cde69f2.png",
      created: ~U[2023-02-06 18:36:18.116976Z],
      updated: ~U[2023-02-06 18:36:18.116976Z]
  }
    

C#


  DynamicBrcode(
      ID: 00020101021226890014br.gov.bcb.pix2567brcode-h.sandbox.starkinfra.com/v2/0e96a462d44a4d789f6d4fcbf7aa63b45204000053039865802BR5925Stark Bank S.A. - Institu6009Sao Paulo62070503***63048CC9
      Expiration: 123456789,
      Tags: { },
      Amount: 4000,
      Uuid: 80b0688d05934971a6b8ecd86cde69f2,
      PictureUrl: https://sandbox.api.starkbank.com/v2/dynamic-brcode/80b0688d05934971a6b8ecd86cde69f2.png,
      Created: 06/02/2023 18:45:08,
      Updated: 06/02/2023 18:45:08
  )
    

Go


  {
      Id:00020101021226890014br.gov.bcb.pix2567brcode-h.sandbox.starkinfra.com/v2/0e96a462d44a4d789f6d4fcbf7aa63b45204000053039865802BR5925Stark Bank S.A. - Institu6009Sao Paulo62070503***63048CC9
      Uuid:80b0688d05934971a6b8ecd86cde69f2
      Amount:4000
      Expiration:123456789 
      Tags:[] 
      PictureUrl:https://sandbox.api.starkbank.com/v2/dynamic-brcode/80b0688d05934971a6b8ecd86cde69f2.png
      Created:2023-02-06 19:54:54.16799 +0000 +0000 
      Updated:2023-02-06 19:54:54.24204 +0000 +0000
  }
    

Clojure


  Not yet available. Please contact us if you need this SDK.
    

Curl


  {
      "brcodes": [
          {
              "amount": 4000,
              "created": "2023-02-06T21:49:19.660252+00:00",
              "expiration": 123456789,
              "id": "00020101021226890014br.gov.bcb.pix2567brcode-h.sandbox.starkinfra.com/v2/0e96a462d44a4d789f6d4fcbf7aa63b45204000053039865802BR5925Stark Bank S.A. - Institu6009Sao Paulo62070503***63048CC9",
              "pictureUrl": "https://sandbox.api.starkbank.com/v2/dynamic-brcode/80b0688d05934971a6b8ecd86cde69f2.png",
              "tags": [],
              "rules": [],
              "updated": "2023-02-06T21:49:19.987058+00:00",
              "uuid": "80b0688d05934971a6b8ecd86cde69f2"
          }
      ],
      "message": "Brcode(s) successfully created"
  }
    

Creating Dynamic Brcodes with expiration parameter

Expiration: By adding this parameter, you can set a time in seconds counted from the date and time of creation until the expiration of the Dynamic Brcode.After expiration, the Dynamic Brcode can no longer be paid.Default value: 3600 (1 hour). See the example below:

Python


  import starkbank
  from datetime import datetime
  
  brcodes = starkbank.dynamicbrcode.create([
      starkbank.DynamicBrcode(
          amount=4000,
          expiration=123456789
      )
  ])
  
  for brcode in brcodes:
      print(brcode)
    

Javascript


  const starkbank = require('starkbank');
  
  (async() => {
      let brcodes = await starkbank.dynamicBrcode.create([{
          amount: 4000,
          expiration: 123456789
      }]);
  
      for (let brcode of brcodes) {
          console.log(brcode);
      }
  })();
    

PHP


  use StarkBank\DynamicBrcode;
  
  $brcodes = DynamicBrcode::create([
      new DynamicBrcode([
          "amount" => 4000,
          "expiration" => 123456789
      ])
  ]);
  
  foreach ($brcodes as $brcode) {
      print_r($brcode);
  }
    

Java


  import com.starkbank.*;
  import java.util.ArrayList;
  import java.util.HashMap;
  import java.util.List;
  
  List<DynamicBrcode> brcodes = new ArrayList<>();
  HashMap<String, Object> data = new HashMap<>();
  data.put("amount", 4000);
  data.put("expiration", 123456789);
  
  brcodes.add(new DynamicBrcode(data));
  brcodes = DynamicBrcode.create(brcodes);
  
  for (DynamicBrcode brcode : brcodes) {
      System.out.println(brcode);
  }
    

Ruby


  require('starkbank')
  
  brcodes = StarkBank::DynamicBrcode.create(
      [
          StarkBank::DynamicBrcode.new(
              amount: 4000,
              expiration: 123456789
          )
      ]
  )
  
  brcodes.each do |brcode|
      puts brcode
  end
    

Elixir


  brcode = StarkBank.DynamicBrcode.create!(
      [
          %StarkBank.DynamicBrcode{
          amount: 4000,
          expiration: 123456789
          }
      ]
  ) |> IO.inspect()
    

C#


  using System;
  using System.Collections.Generic;
  
  List<StarkBank.DynamicBrcode> brcodes = StarkBank.DynamicBrcode.Create(
      new List<StarkBank.DynamicBrcode> {
          new StarkBank.DynamicBrcode(
              amount: 4000,
              expiration: 123456789
          )
      }
  );
  
  foreach (StarkBank.DynamicBrcode brcode in brcodes)
  {
      Console.WriteLine(brcode);
  }
    

Go


  package main
  
  import (
      "fmt"
      "github.com/starkbank/sdk-go/starkbank/dynamicbrcode"
      "time"
  )
  
  func main() {
  
      due := time.Now().Add(time.Hour * 24)
  
      brcodes, err := dynamicbrcode.Create(
          []dynamicbrcode.DynamicBrcode{
              {
                  Amount:     4000,
                  Expiration: 123456789
              },
          }, nil)
      if err.Errors != nil {
          for _, e := range err.Errors {
              panic(fmt.Sprintf("code: %s, message: %s", e.Code, e.Message))
          }
      }
  
      for _, brcode := range brcodes {
          fmt.Printf("%+v", brcode)
      }
  }
    

Clojure


  Not yet available. Please contact us if you need this SDK.
    

Curl


  curl --location --request POST '{{baseUrl}}/v2/dynamic-brcode' 
  --header 'Access-Id: {{accessId}}' 
  --header 'Access-Time: {{accessTime}}' 
  --header 'Access-Signature: {{accessSignature}}' 
  --header 'Content-Type: application/json' 
  --data-raw '{
      "brcodes": [
          {
              "amount": 4000,
              "expiration": 1234567890
          }
      ]
  }'
    
Response

Python


  DynamicBrcode(
      amount=4000,
      created=2023-02-06 21:15:00.118056,
      expiration=1428 days, 21:33:09,
      id=00020101021226890014br.gov.bcb.pix2567brcode-h.sandbox.starkinfra.com/v2/80b0688d05934971a6b8ecd86cde69f25204000053039865802BR5925Stark Bank S.A. - Institu6009Sao Paulo62070503***630461C9,
      picture_url=https://sandbox.api.starkbank.com/v2/dynamic-brcode/80b0688d05934971a6b8ecd86cde69f2.png,
      tags=[],
      updated=2023-02-06 21:15:00.449696,
      uuid=80b0688d05934971a6b8ecd86cde69f2
  )
    

Javascript


  DynamicBrcode {
      id: '00020101021226890014br.gov.bcb.pix2567brcode-h.sandbox.starkinfra.com/v2/e285405b196e42bb8e68f654283dcaa05204000053039865802BR5925Stark Bank S.A. - Institu6009Sao Paulo62070503***6304CB47',
      amount: 4000,
      expiration: 123456789,
      tags: [],
      uuid: '80b0688d05934971a6b8ecd86cde69f2',
      pictureUrl: 'https://sandbox.api.starkbank.com/v2/dynamic-brcode/80b0688d05934971a6b8ecd86cde69f2.png',
      updated: '2023-02-06T21:17:30.977004+00:00',
      created: '2023-02-06T21:17:30.625913+00:00'
  }
    

PHP


  StarkBank\DynamicBrcode Object
  (
      [id] => 00020101021226890014br.gov.bcb.pix2567brcode-h.sandbox.starkinfra.com/v2/e285405b196e42bb8e68f654283dcaa05204000053039865802BR5925Stark Bank S.A. - Institu6009Sao Paulo62070503***6304CB47
      [amount] => 4000
      [expiration] => DateInterval Object
          (
              [y] => 0
              [m] => 0
              [d] => 0
              [h] => 0
              [i] => 0
              [s] => 123456789
              [f] => 0
              [invert] => 0
              [days] => 
              [from_string] => 
          )
  
      [tags] => Array
          (
          )
  
      [uuid] => 80b0688d05934971a6b8ecd86cde69f2
      [pictureUrl] => https://sandbox.api.starkbank.com/v2/dynamic-brcode/80b0688d05934971a6b8ecd86cde69f2.png
      [updated] => DateTime Object
          (
              [date] => 2023-02-06 21:23:50.776494
              [timezone_type] => 1
              [timezone] => +00:00
          )
  
      [created] => DateTime Object
          (
              [date] => 2023-02-06 21:23:50.435531
              [timezone_type] => 1
              [timezone] => +00:00
          )
  
  )
    

Java


  DynamicBrcode({
      "amount": 4000,
      "expiration": 123456789,
      "tags": [],
      "uuid": "80b0688d05934971a6b8ecd86cde69f2",
      "pictureUrl": "https://sandbox.api.starkbank.com/v2/dynamic-brcode/80b0688d05934971a6b8ecd86cde69f2.png",
      "updated": "2023-02-06T21:30:36.688229+00:00",
      "created": "2023-02-06T21:30:36.372956+00:00",
      "id": "00020101021226890014br.gov.bcb.pix2567brcode-h.sandbox.starkinfra.com/v2/8411cece3387471ea7f2636b618c37fb5204000053039865802BR5925Stark Bank S.A. - Institu6009Sao Paulo62070503***6304556B"
  })
    

Ruby


  dynamicbrcode(
      id: 00020101021226890014br.gov.bcb.pix2567brcode-h.sandbox.starkinfra.com/v2/0e96a462d44a4d789f6d4fcbf7aa63b45204000053039865802BR5925Stark Bank S.A. - Institu6009Sao Paulo62070503***63048CC9,
      amount: 4000,
      expiration: 123456789,
      tags: [],
      uuid: 80b0688d05934971a6b8ecd86cde69f2,
      picture_url: https://sandbox.api.starkbank.com/v2/dynamic-brcode/80b0688d05934971a6b8ecd86cde69f2.png,
      created: 2023-02-06T21:39:47+00:00,
      updated: 2023-02-06T21:39:47+00:00
  )
    

Elixir


  %StarkBank.DynamicBrcode{
      id: "00020101021226890014br.gov.bcb.pix2567brcode-h.sandbox.starkinfra.com/v2/0e96a462d44a4d789f6d4fcbf7aa63b45204000053039865802BR5925Stark Bank S.A. - Institu6009Sao Paulo62070503***63048CC9",
      uuid: "80b0688d05934971a6b8ecd86cde69f2",
      amount: 4000,
      expiration: 123456789,
      picture_url: "https://sandbox.api.starkbank.com/v2/dynamic-brcode/80b0688d05934971a6b8ecd86cde69f2.png",
      created: ~U[2023-02-06 18:36:18.116976Z],
      updated: ~U[2023-02-06 18:36:18.116976Z]
  }
    

C#


  DynamicBrcode(
      ID: 00020101021226890014br.gov.bcb.pix2567brcode-h.sandbox.starkinfra.com/v2/0e96a462d44a4d789f6d4fcbf7aa63b45204000053039865802BR5925Stark Bank S.A. - Institu6009Sao Paulo62070503***63048CC9
      Expiration: 123456789,
      Tags: {},
      Amount: 4000,
      Uuid: 80b0688d05934971a6b8ecd86cde69f2,
      PictureUrl: https://sandbox.api.starkbank.com/v2/dynamic-brcode/80b0688d05934971a6b8ecd86cde69f2.png,
      Created: 06/02/2023 18:45:08,
      Updated: 06/02/2023 18:45:08
  )
    

Go


  {
      Id:00020101021226890014br.gov.bcb.pix2567brcode-h.sandbox.starkinfra.com/v2/0e96a462d44a4d789f6d4fcbf7aa63b45204000053039865802BR5925Stark Bank S.A. - Institu6009Sao Paulo62070503***63048CC9
      Uuid:80b0688d05934971a6b8ecd86cde69f2
      Amount:4000
      Expiration:123456789 
      Tags:[] 
      PictureUrl:https://sandbox.api.starkbank.com/v2/dynamic-brcode/80b0688d05934971a6b8ecd86cde69f2.png
      Created:2023-02-06 19:54:54.16799 +0000 +0000 
      Updated:2023-02-06 19:54:54.24204 +0000 +0000
  }
    

Clojure


  Not yet available. Please contact us if you need this SDK.
    

Curl


  {
      "brcodes": [
          {
              "amount": 4000,
              "created": "2023-02-06T21:49:19.660252+00:00",
              "expiration": 123456789,
              "id": "00020101021226890014br.gov.bcb.pix2567brcode-h.sandbox.starkinfra.com/v2/0e96a462d44a4d789f6d4fcbf7aa63b45204000053039865802BR5925Stark Bank S.A. - Institu6009Sao Paulo62070503***63048CC9",
              "pictureUrl": "https://sandbox.api.starkbank.com/v2/dynamic-brcode/80b0688d05934971a6b8ecd86cde69f2.png",
              "tags": [],
              "updated": "2023-02-06T21:49:19.987058+00:00",
              "uuid": "80b0688d05934971a6b8ecd86cde69f2"
          }
      ],
      "message": "Brcode(s) successfully created"
  }
    

Creating Dynamic Brcodes with tag parameter

Tags: By adding this parameter, you can set an array of strings to tag the entity for future queries.All tags will be converted to lowercase.

Python


  import starkbank
  from datetime import datetime
  
  brcodes = starkbank.dynamicbrcode.create([
      starkbank.DynamicBrcode(
          amount=4000,
          tags=['New sword', 'DynamicBrcode #1234']
      )
  ])
  
  for brcode in brcodes:
      print(brcode)
    

Javascript


  const starkbank = require('starkbank');
  
  (async() => {
      let brcodes = await starkbank.dynamicBrcode.create([{
          amount: 4000,
          tags: ['New sword', 'DynamicBrcode #1234']
      }]);
  
      for (let brcode of brcodes) {
          console.log(brcode);
      }
  })();
    

PHP


  use StarkBank\DynamicBrcode;
  
  $brcodes = DynamicBrcode::create([
      new DynamicBrcode([
          "amount" => 4000,
          "tags" => [
              'New sword',
              'DynamicBrcode #1234'
          ]
      ])
  ]);
  
  foreach ($brcodes as $brcode) {
      print_r($brcode);
  }
    

Java


  import com.starkbank.*;
  import java.util.ArrayList;
  import java.util.HashMap;
  import java.util.List;
  
  List<DynamicBrcode> brcodes = new ArrayList<>();
  HashMap<String, Object> data = new HashMap<>();
  data.put("amount", 4000);
  data.put("tags", new String[]{"new sword"});
  
  brcodes.add(new DynamicBrcode(data));
  brcodes = DynamicBrcode.create(brcodes);
  
  for (DynamicBrcode brcode : brcodes) {
      System.out.println(brcode);
  }
    

Ruby


  require('starkbank')
  
  brcodes = StarkBank::DynamicBrcode.create(
      [
          StarkBank::DynamicBrcode.new(
              amount: 4000,
              tags: %w[new sword],
          )
      ]
  )
  
  brcodes.each do |brcode|
      puts brcode
  end
    

Elixir


  brcode = StarkBank.DynamicBrcode.create!(
      [
          %StarkBank.DynamicBrcode{
          amount: 4000,
          tags: [
                  "New sword",
                  "DynamicBrcode #1234"
              ]
          }
      ]
  ) |> IO.inspect()
    

C#


  using System;
  using System.Collections.Generic;
  
  List<StarkBank.DynamicBrcode> brcodes = StarkBank.DynamicBrcode.Create(
      new List<StarkBank.DynamicBrcode> {
          new StarkBank.DynamicBrcode(
              amount: 4000,
              tags: new List { "New sword", "DynamicBrcode #1234" },
          )
      }
  );
  
  foreach (StarkBank.DynamicBrcode brcode in brcodes)
  {
      Console.WriteLine(brcode);
  }
    

Go


  package main
  
  import (
      "fmt"
      "github.com/starkbank/sdk-go/starkbank/dynamicbrcode"
      "time"
  )
  
  func main() {
  
      due := time.Now().Add(time.Hour * 24)
  
      brcodes, err := dynamicbrcode.Create(
          []dynamicbrcode.DynamicBrcode{
              {
                  Amount:     4000,
                  Tags:       []string{"New sword", "DynamicBrcode #1234"},
              },
          }, nil)
      if err.Errors != nil {
          for _, e := range err.Errors {
              panic(fmt.Sprintf("code: %s, message: %s", e.Code, e.Message))
          }
      }
  
      for _, brcode := range brcodes {
          fmt.Printf("%+v", brcode)
      }
  }
    

Clojure


  Not yet available. Please contact us if you need this SDK.
    

Curl


  curl --location --request POST '{{baseUrl}}/v2/dynamic-brcode' 
  --header 'Access-Id: {{accessId}}' 
  --header 'Access-Time: {{accessTime}}' 
  --header 'Access-Signature: {{accessSignature}}' 
  --header 'Content-Type: application/json' 
  --data-raw '{
      "brcodes": [
          {
              "amount": 4000,
              "tags": [
                  "New sword",
                  "DynamicBrcode #1234"
              ]
          }
      ]
  }'
    
Response

Python


  DynamicBrcode(
      amount=4000,
      created=2023-02-06 21:15:00.118056,
      expiration=1428 days, 21:33:09,
      id=00020101021226890014br.gov.bcb.pix2567brcode-h.sandbox.starkinfra.com/v2/80b0688d05934971a6b8ecd86cde69f25204000053039865802BR5925Stark Bank S.A. - Institu6009Sao Paulo62070503***630461C9,
      picture_url=https://sandbox.api.starkbank.com/v2/dynamic-brcode/80b0688d05934971a6b8ecd86cde69f2.png,
      tags=['new sword', 'dynamicbrcode #1234'],
      rules=[],
      updated=2023-02-06 21:15:00.449696,
      uuid=80b0688d05934971a6b8ecd86cde69f2
  )
    

Javascript


  DynamicBrcode {
      id: '00020101021226890014br.gov.bcb.pix2567brcode-h.sandbox.starkinfra.com/v2/e285405b196e42bb8e68f654283dcaa05204000053039865802BR5925Stark Bank S.A. - Institu6009Sao Paulo62070503***6304CB47',
      amount: 4000,
      expiration: 123456789,
      tags: [ 'new sword', 'dynamicbrcode #1234' ],
      uuid: '80b0688d05934971a6b8ecd86cde69f2',
      pictureUrl: 'https://sandbox.api.starkbank.com/v2/dynamic-brcode/80b0688d05934971a6b8ecd86cde69f2.png',
      updated: '2023-02-06T21:17:30.977004+00:00',
      created: '2023-02-06T21:17:30.625913+00:00'
  }
    

PHP


  StarkBank\DynamicBrcode Object
  (
      [id] => 00020101021226890014br.gov.bcb.pix2567brcode-h.sandbox.starkinfra.com/v2/e285405b196e42bb8e68f654283dcaa05204000053039865802BR5925Stark Bank S.A. - Institu6009Sao Paulo62070503***6304CB47
      [amount] => 4000
      [expiration] => DateInterval Object
          (
              [y] => 0
              [m] => 0
              [d] => 0
              [h] => 0
              [i] => 0
              [s] => 123456789
              [f] => 0
              [invert] => 0
              [days] => 
              [from_string] => 
          )
  
      [tags] => Array
          (
              [0] => new sword
              [1] => dynamicbrcode #1234
          )
  
      [uuid] => 80b0688d05934971a6b8ecd86cde69f2
      [pictureUrl] => https://sandbox.api.starkbank.com/v2/dynamic-brcode/80b0688d05934971a6b8ecd86cde69f2.png
      [updated] => DateTime Object
          (
              [date] => 2023-02-06 21:23:50.776494
              [timezone_type] => 1
              [timezone] => +00:00
          )
  
      [created] => DateTime Object
          (
              [date] => 2023-02-06 21:23:50.435531
              [timezone_type] => 1
              [timezone] => +00:00
          )
  
  )
    

Java


  DynamicBrcode({
      "amount": 4000,
      "expiration": 123456789,
      "tags": ["new sword", "dynamicbrcode #1234"],
      "uuid": "80b0688d05934971a6b8ecd86cde69f2",
      "pictureUrl": "https://sandbox.api.starkbank.com/v2/dynamic-brcode/80b0688d05934971a6b8ecd86cde69f2.png",
      "updated": "2023-02-06T21:30:36.688229+00:00",
      "created": "2023-02-06T21:30:36.372956+00:00",
      "id": "00020101021226890014br.gov.bcb.pix2567brcode-h.sandbox.starkinfra.com/v2/8411cece3387471ea7f2636b618c37fb5204000053039865802BR5925Stark Bank S.A. - Institu6009Sao Paulo62070503***6304556B"
  })
    

Ruby


  dynamicbrcode(
      id: 00020101021226890014br.gov.bcb.pix2567brcode-h.sandbox.starkinfra.com/v2/0e96a462d44a4d789f6d4fcbf7aa63b45204000053039865802BR5925Stark Bank S.A. - Institu6009Sao Paulo62070503***63048CC9,
      amount: 4000,
      expiration: 123456789,
      tags: ["new sword", "dynamicbrcode #1234"],
      uuid: 80b0688d05934971a6b8ecd86cde69f2,
      picture_url: https://sandbox.api.starkbank.com/v2/dynamic-brcode/80b0688d05934971a6b8ecd86cde69f2.png,
      created: 2023-02-06T21:39:47+00:00,
      updated: 2023-02-06T21:39:47+00:00
  )
    

Elixir


  %StarkBank.DynamicBrcode{
      id: "00020101021226890014br.gov.bcb.pix2567brcode-h.sandbox.starkinfra.com/v2/0e96a462d44a4d789f6d4fcbf7aa63b45204000053039865802BR5925Stark Bank S.A. - Institu6009Sao Paulo62070503***63048CC9",
      uuid: "80b0688d05934971a6b8ecd86cde69f2",
      amount: 4000,
      expiration: 123456789,
      tags: ["New sword", "DynamicBrcode #1234"]
      picture_url: "https://sandbox.api.starkbank.com/v2/dynamic-brcode/80b0688d05934971a6b8ecd86cde69f2.png",
      created: ~U[2023-02-06 18:36:18.116976Z],
      updated: ~U[2023-02-06 18:36:18.116976Z]
  }
    

C#


  DynamicBrcode(
      ID: 00020101021226890014br.gov.bcb.pix2567brcode-h.sandbox.starkinfra.com/v2/0e96a462d44a4d789f6d4fcbf7aa63b45204000053039865802BR5925Stark Bank S.A. - Institu6009Sao Paulo62070503***63048CC9
      Expiration: 123456789,
      Tags: { "new sword", "dynamicbrcode #1234" },
      Amount: 4000,
      Uuid: 80b0688d05934971a6b8ecd86cde69f2,
      PictureUrl: https://sandbox.api.starkbank.com/v2/dynamic-brcode/80b0688d05934971a6b8ecd86cde69f2.png,
      Created: 06/02/2023 18:45:08,
      Updated: 06/02/2023 18:45:08
  )
    

Go


  {
      Id:00020101021226890014br.gov.bcb.pix2567brcode-h.sandbox.starkinfra.com/v2/0e96a462d44a4d789f6d4fcbf7aa63b45204000053039865802BR5925Stark Bank S.A. - Institu6009Sao Paulo62070503***63048CC9
      Uuid:80b0688d05934971a6b8ecd86cde69f2
      Amount:4000
      Expiration:123456789 
      Tags:[new sword dynamicbrcode #1234] 
      PictureUrl:https://sandbox.api.starkbank.com/v2/dynamic-brcode/80b0688d05934971a6b8ecd86cde69f2.png
      Created:2023-02-06 19:54:54.16799 +0000 +0000 
      Updated:2023-02-06 19:54:54.24204 +0000 +0000
  }
    

Clojure


  Not yet available. Please contact us if you need this SDK.
    

Curl


  {
      "brcodes": [
          {
              "amount": 4000,
              "created": "2023-02-06T21:49:19.660252+00:00",
              "expiration": 123456789,
              "id": "00020101021226890014br.gov.bcb.pix2567brcode-h.sandbox.starkinfra.com/v2/0e96a462d44a4d789f6d4fcbf7aa63b45204000053039865802BR5925Stark Bank S.A. - Institu6009Sao Paulo62070503***63048CC9",
              "pictureUrl": "https://sandbox.api.starkbank.com/v2/dynamic-brcode/80b0688d05934971a6b8ecd86cde69f2.png",
              "tags": [
                  "new sword",
                  "dynamicbrcode #1234"
              ],
              "rules": [],
              "updated": "2023-02-06T21:49:19.987058+00:00",
              "uuid": "80b0688d05934971a6b8ecd86cde69f2"
          }
      ],
      "message": "Brcode(s) successfully created"
  }
    

Creating Dynamic Brcodes with rules parameter

Rules: you can set a list of rules to modify the Dynamic Brcodes's behavior.It is possible to limit the tax IDs allowed to pay this Dynamic Brcode by setting this parameter using the key "allowedTaxIds".

Python


import starkbank
from datetime import datetime

brcodes = starkbank.dynamicbrcode.create([
    starkbank.DynamicBrcode(
        amount=4000,
        rules=[
            {
                "key": "allowedTaxIds",
                "value": [
                    "012.345.678-90",
                    "45.059.493/0001-73"
                ]
            }
        ],
    )
])

for brcode in brcodes:
    print(brcode)
    

Javascript

Not yet available. Please contact us if you need this SDK.

PHP

Not yet available. Please contact us if you need this SDK.

Java

Not yet available. Please contact us if you need this SDK.

Ruby

Not yet available. Please contact us if you need this SDK.

Elixir

Not yet available. Please contact us if you need this SDK.

C#

Not yet available. Please contact us if you need this SDK.

Go

Not yet available. Please contact us if you need this SDK.

Clojure

Not yet available. Please contact us if you need this SDK.

Curl


curl --location --request POST '{{baseUrl}}/v2/dynamic-brcode' 
--header 'Access-Id: {{accessId}}' 
--header 'Access-Time: {{accessTime}}' 
--header 'Access-Signature: {{accessSignature}}' 
--header 'Content-Type: application/json' 
--data-raw '{
    "brcodes": [
        {
            "amount": 4000,
            "rules": [
                {
                    "key": "allowedTaxIds",
                    "value": [
                        "012.345.678-90",
                        "45.059.493/0001-73"
                    ]
                }
            ]
        }
    ]
}'
    
Response

Python


DynamicBrcode(
    amount=4000,
    created=2023-02-06 21:15:00.118056,
    expiration=1428 days, 21:33:09,
    id=00020101021226890014br.gov.bcb.pix2567brcode-h.sandbox.starkinfra.com/v2/80b0688d05934971a6b8ecd86cde69f25204000053039865802BR5925Stark Bank S.A. - Institu6009Sao Paulo62070503***630461C9,
    picture_url=https://sandbox.api.starkbank.com/v2/dynamic-brcode/80b0688d05934971a6b8ecd86cde69f2.png,
    tags=[],
    rules=[
        Rule(
            key=allowedTaxIds,
            value=[
                '012.345.678-90',
                '45.059.493/0001-73'
            ]
        )
    ],
    updated=2023-02-06 21:15:00.449696,
    uuid=80b0688d05934971a6b8ecd86cde69f2
)
    

Javascript

Not yet available. Please contact us if you need this SDK.

PHP

Not yet available. Please contact us if you need this SDK.

Java

Not yet available. Please contact us if you need this SDK.

Ruby

Not yet available. Please contact us if you need this SDK.

Elixir

Not yet available. Please contact us if you need this SDK.

C#

Not yet available. Please contact us if you need this SDK.

Go

Not yet available. Please contact us if you need this SDK.

Clojure

Not yet available. Please contact us if you need this SDK.

Curl


{
    "brcodes": [
        {
            "amount": 4000,
            "created": "2023-02-06T21:49:19.660252+00:00",
            "expiration": 123456789,
            "id": "00020101021226890014br.gov.bcb.pix2567brcode-h.sandbox.starkinfra.com/v2/0e96a462d44a4d789f6d4fcbf7aa63b45204000053039865802BR5925Stark Bank S.A. - Institu6009Sao Paulo62070503***63048CC9",
            "pictureUrl": "https://sandbox.api.starkbank.com/v2/dynamic-brcode/80b0688d05934971a6b8ecd86cde69f2.png",
            "tags": [],
            "rules": [
                {
                    "key": "allowedTaxIds",
                    "value": [
                        "012.345.678-90",
                        "45.059.493/0001-73"
                    ]
                }
            ],
            "updated": "2023-02-06T21:49:19.987058+00:00",
            "uuid": "80b0688d05934971a6b8ecd86cde69f2"
        }
    ],
    "message": "Brcode(s) successfully created"
}
    

Receiving Dynamic Brcode Payments

When a Dynamic Brcode is successfully paid, a corresponding deposit is generated in the Stark Bank account.This deposit is linked through the "tag" parameter, contending "dynamic-brcode/" followed by the BrCode UUID.For example: "dynamic-brcode/80b0688d05934971a6b8ecd86cde69f2"The following flowchart illustrates the reconciliation process: NOTE: To ensure that the payer's taxId matches the final user's registration in your system you can reverse the Deposit if the taxIds do not match the final user's in step 7.

Before initiating the payment process, it is crucial to set up a subscription for "Deposit" with the desired URL to receive the webhooks.This subscription must be configured beforehand. The subscription facilitates the delivery of webhooks containing the deposit information.Upon the successful creation of the deposit, a webhook is triggered and sent to the specified URL.This webhook contains the deposit information, including the UUID associated with the "tag" parameter, which corresponds to the Brcode that was paid and previously generated.