Get a charge
LiveServed by the v1 API in development with the same checks as production; production opens on the same contract. The capabilities from before v1 keep running in production at the path your account team gives you.
Returns the charge. Once the customer invoices it, invoice carries the CFDI, and the link fields are null. Download its files with GET /invoices/{id}/download.
Needs the charges:read scope.
oauth2 charges:readAuthorizationBearer <token>OAuth 2.0 client credentials. Exchange your client_id and client_secret at /oauth/token of the environment for a bearer token valid for one hour. The playground of every operation asks for your own client and keeps it in your browser tab only.
Scope: charges:read
id*stringThe charge id.
^chg_[0-7][0-9a-hjkmnp-tv-z]{25}$OK
application/json- response
id*stringThe charge in this API: use it to get or void it.
^chg_[0-7][0-9a-hjkmnp-tv-z]{25}$external_id*stringYour transaction id, as you sent it. Webhooks carry it so you can match them to your records.
status*stringopen while the customer can invoice it; invoiced once they did; expired when expires_at passed unused; void after POST /charges/{id}/void; included_in_global when an expired charge went into the merchant's global invoice.
"open""invoiced""expired""void""included_in_global"merchant_id*stringThe merchant that made the sale.
^mer_[0-7][0-9a-hjkmnp-tv-z]{25}$amount*stringTotal charged to the card, VAT included.
^[0-9]+\.[0-9]{2}$payment_form*stringSAT c_FormaPago: 04 credit card, 28 debit card.
"04""28"occurred_at*stringWhen the card payment was approved.
date-timelocation?|external_id of the merchant's location, if you sent it.
items*array<>What the invoice will say. If you sent no items, it holds the merchant's default_item for the whole amount.
invoice_token*|Code inside invoice_url. Use it only if you build the link yourself, for example on your own domain. It is not the charge id. Null once the charge is no longer open.
invoice_url*|Link the customer opens to invoice this charge: https://invoice.heru.app/{merchant slug}/c/{invoice_token}. It works once and until expires_at. Null once the charge is no longer open.
qr*|QR with invoice_url. Null once the charge is no longer open.
expires_at*stringLast moment the customer can invoice the charge.
date-timeinvoice*|The CFDI the customer issued. Null until status is invoiced. Download its files with GET /invoices/{id}/download.
created_at*stringdate-timeupdated_at*stringdate-timecurl -X GET 'https://api.dev.b2b.heru.app/v1/charges/chg_01m4p7sbvpev1s5086cty36rvs'{ "id": "chg_01m4p7sbvpev1s5086cty36rvs", "external_id": "TXN-0001845122", "status": "invoiced", "merchant_id": "mer_01m4ra8wsyfh3s0tr4nrq3y96j", "amount": "250.00", "payment_form": "04", "occurred_at": "2026-10-11T13:42:10-06:00", "location": "SUC-01", "items": [ { "product_code": "90101500", "description": "Chilaquiles verdes con pollo", "amount": "165.00", "quantity": 1, "unit_code": "E48", "vat_rate": "0.16" }, { "product_code": "90101500", "description": "Café americano", "amount": "85.00", "quantity": 2, "unit_code": "E48", "vat_rate": "0.16" } ], "invoice_token": null, "invoice_url": null, "qr": null, "expires_at": "2026-11-10T23:59:59-06:00", "invoice": { "id": "inv_01m4p9pkdefthvmhy9gknjgbt7", "external_id": "TXN-0001845122", "status": "stamped", "type": "I", "uuid": "0AF2F650-F2A4-D4E3-8F92-363E38508CB2", "verification_url": "https://verificacfdi.facturaelectronica.sat.gob.mx/default.aspx?id=0AF2F650-F2A4-D4E3-8F92-363E38508CB2&re=HEGL900101K44&rr=LOMG900102Q74&tt=250.00&fe=KWfN/g==", "stamp": { "sat_certificate_number": "00001000000509465028", "issuer_certificate_number": "00001000000712340011", "pac_rfc": "SPR190613I52", "issuer_seal": "zE7qxmudN9LYRUabHaPJXae6hd8hxAnJo0GHBmLvqU3Dj0pR/mGHdixRnrdO/L3DFSpUz0NyXcVyZEmahJF9EiDjkLjgBxS15T769jB7jA1/MaHTlY2pi/Mi4/7TCd3WApLmaTtlmbV1o/XaTpi4grv0DwREupZYhacIeqM/AzI7IakfJZbJlxBNNyWjDOUTB/thsQtwiOm7vN6G39Dm++eSXWd2FzfwqW+XL8l7JrUuveV3mGV7ZV0K9OcGANqufHg98BK9P2ztwM0XbP53UPdJwdB83ZMVsD9yyCSqeKuQkMifzRAqckLi3MvYl5CI/c/bKzTYWCx/G7UkKWfN/g==", "sat_seal": "/RxrjLs6LlJQ4mw+0Z2smZ/yskhsjJ8MX3nkn+xbVKwruqzFGEOPGDRaPOjHmV25db8lr8QoEHeZYZI/sq3TkwBl48exBnm8EkozA8xW00u9hhGvxgngwK6jr0ohlBjm18YDS9yK8bE5B4Q5HwjfKOgZLAteaS8FE+a2pUNcsdUKSCPEkYFs0aAfYnXLnHIpkaS0/E8J3/8Nclu+UW41UN5fqlbQVx0dtE8PXnhtHcxxLgxpR76MxoJotkDCXFAEPUz6EMGZi9/hXuRSW5IU0edUqifHFs827xIv6WWKZlXqqcLKkGqdrD77uDeh9cCDMKhSzVmP1UIPmStM+SrE7w==", "original_chain": "||1.1|0AF2F650-F2A4-D4E3-8F92-363E38508CB2|2026-10-11T14:15:41|SPR190613I52|zE7qxmudN9LYRUabHaPJXae6hd8hxAnJo0GHBmLvqU3Dj0pR/mGHdixRnrdO/L3DFSpUz0NyXcVyZEmahJF9EiDjkLjgBxS15T769jB7jA1/MaHTlY2pi/Mi4/7TCd3WApLmaTtlmbV1o/XaTpi4grv0DwREupZYhacIeqM/AzI7IakfJZbJlxBNNyWjDOUTB/thsQtwiOm7vN6G39Dm++eSXWd2FzfwqW+XL8l7JrUuveV3mGV7ZV0K9OcGANqufHg98BK9P2ztwM0XbP53UPdJwdB83ZMVsD9yyCSqeKuQkMifzRAqckLi3MvYl5CI/c/bKzTYWCx/G7UkKWfN/g==|00001000000509465028||" }, "issuer": { "rfc": "HEGL900101K44", "name": "JOSE LUIS HERNANDEZ GARCIA", "tax_regime": "612", "postal_code": "06700" }, "receiver": { "rfc": "LOMG900102Q74", "name": "MARIA GUADALUPE LOPEZ MARTINEZ", "tax_regime": "626", "postal_code": "44100", "email": null }, "third_party": null, "place_of_issue": "06700", "items": [ { "description": "Chilaquiles verdes con pollo", "quantity": 1, "unit_code": "E48", "unit_price": "142.24", "product_code": "90101500", "tax_object": "02", "vat_rate": "0.16", "subtotal": "142.24", "vat": "22.76", "withholdings": null }, { "description": "Café americano", "quantity": 2, "unit_code": "E48", "unit_price": "36.64", "product_code": "90101500", "tax_object": "02", "vat_rate": "0.16", "subtotal": "73.28", "vat": "11.72", "withholdings": null } ], "related_invoices": [], "payment_method": "PUE", "payment_form": "04", "cfdi_use": "G03", "currency": "MXN", "subtotal": "215.52", "vat": "34.48", "withholdings": null, "total": "250.00", "cancellation": null, "metadata": {}, "created_at": "2026-10-11T20:15:37.902Z", "stamped_at": "2026-10-11T20:15:41.116Z", "updated_at": "2026-10-11T20:15:41.116Z" }, "created_at": "2026-10-11T19:42:11.318Z", "updated_at": "2026-10-11T20:15:41.116Z"}List chargesGET
Charges of your company, most recent first. Every filter is optional and they combine. `qr` is always null in a list and `invoice` is summarised; read `GET /charges/{id}` for the QR and the whole invoice. Needs the `charges:read` scope.
Update a merchant's brandPUT
Sets the merchant's own brand fields. A field left out keeps its value; `null` clears it, and the merchant inherits its company's again. The same body twice leaves the brand as it is, so a retry is safe and needs no Idempotency-Key. Changes reach the invoicing page and the emails within a minute. The logo goes through `PUT /branding/merchants/{id}/logo`. Needs the `branding:write` scope.