Create a fiscal profile
Register an issuer RFC with its CSD (and optionally FIEL). The simplest way is to upload the raw files via multipart/form-data — curl -F csd_cer=@csd.cer -F csd_key=@csd.key -F csd_password=... -F legal_name=... -F tax_regime=601 -F zip=06000. Sending base64 in a JSON body is the alternative. Private keys are AES-256-GCM encrypted at rest and never returned; the RFC is derived from the certificate.
Authorizations
API key: Authorization: Bearer sk_test_... or sk_live_....
Headers
Pin a dated API release (Stripe-style). Omit to use the current version. An unknown value returns 400 request.invalid_version. Echoed back on every response.
"2026-07-10"
Connect: act on behalf of one of your connected accounts (its acct_…/org_… id). Omit to act as your own organization. Not honored on /v1/api_keys.
"org_2P9connectedacct"
Safely retry any POST. The first response is stored for 24h and replayed byte-for-byte for identical retries (the replay adds an idempotent-replayed: true header). Reusing the key with a different body is 409 idempotency.key_reuse; an in-flight duplicate is 409 idempotency.key_processing. This makes retrying a 502/429 safe — no duplicate stamp.
"a1b2c3d4-e5f6-4789-8abc-1234567890ab"
Body
Issuer legal name (razón social).
c_RegimenFiscal code, e.g. "601".
Issuer place-of-issue ZIP (LugarExpedicion), 5 digits.
The raw CSD certificate (.cer) file — no base64 needed.
The raw CSD private-key (.key) file — no base64 needed.
CSD private-key password ("contraseña de la clave privada").
The raw FIEL certificate (.cer) file — no base64 needed.
The raw FIEL private-key (.key) file — no base64 needed.
FIEL private-key password (only if uploading a FIEL).
PDF accent color as #RRGGBB, e.g. "#0B5FFF".
The raw issuer logo image (PNG or JPEG) — embedded in the PDF; no data URL needed.
Integrator-owned metadata as a JSON string, e.g. {"order_id":"123"}.
Response
Default Response
Always "fiscal_profile".
fiscal_profile Fiscal-profile id, e.g. "fp_2P9K3sample".
Issuer RFC, derived from the CSD certificate.
Issuer legal name (razón social).
c_RegimenFiscal code of the issuer, e.g. "601".
Issuer fiscal-domicile ZIP (LugarExpedicion).
Public metadata of the stored CSD (never the private key).
Derived readiness state. "requires_action": the carta manifiesto is not yet signed, so this profile CANNOT stamp CFDIs. "active": the manifiesto is signed and the profile is authorized to stamp for its RFC. Derived from manifest_status at serialization time.
requires_action, active True when a FIEL (e.firma) is stored (used to sign the carta manifiesto and for descarga masiva).
Carta-manifiesto signing state.
pending_signature, signed When the carta manifiesto was signed (ISO-8601 UTC), or null if unsigned.
Actions to make this profile active (identical content to pending_actions). Empty when active.
Outstanding actions before this profile can stamp CFDIs (identical content to next_actions). Empty when active.
Integrator-owned key-value map echoed back.
PDF accent color (#RRGGBB), or null if unset.
Whether a PDF logo is stored (the raw data URL is not echoed to keep responses small).
True if this profile was created with a live-mode key.
Creation timestamp, ISO-8601 UTC.
Last-update timestamp, ISO-8601 UTC.